Add support for offboard ActuatorControl set points to RoverPositionControl (fixes #13192) (#13314)

* fix formatting

* RoverPositionControl: Support Actuator Control Setpoints (fixes #13192)

* RoverPositonControl: remove control modes, that aren't currently implemented

* RoverPositionControl: use new Publication API
This commit is contained in:
Jannik Beyerstedt 2019-11-20 15:01:51 +01:00 committed by Julian Oes
parent 16f663ad52
commit 4ce03dfc1e
2 changed files with 17 additions and 22 deletions

View File

@ -462,12 +462,7 @@ RoverPositionControl::run()
pos_ctrl_status.timestamp = hrt_absolute_time();
if (_pos_ctrl_status_pub != nullptr) {
orb_publish(ORB_ID(position_controller_status), _pos_ctrl_status_pub, &pos_ctrl_status);
} else {
_pos_ctrl_status_pub = orb_advertise(ORB_ID(position_controller_status), &pos_ctrl_status);
}
_pos_ctrl_status_pub.publish(pos_ctrl_status);
}
@ -518,13 +513,12 @@ RoverPositionControl::run()
//orb_copy(ORB_ID(vehicle_attitude), _vehicle_attitude_sub, &_vehicle_att);
_act_controls.timestamp = hrt_absolute_time();
if (_actuator_controls_pub != nullptr) {
//PX4_INFO("Publishing actuator from pos control");
orb_publish(ORB_ID(actuator_controls_0), _actuator_controls_pub, &_act_controls);
} else {
_actuator_controls_pub = orb_advertise(ORB_ID(actuator_controls_0), &_act_controls);
/* Only publish if any of the proper modes are enabled */
if (_control_mode.flag_control_velocity_enabled ||
_control_mode.flag_control_attitude_enabled ||
manual_mode) {
/* publish the actuator controls */
_actuator_controls_pub.publish(_act_controls);
}
}

View File

@ -56,6 +56,7 @@
#include <px4_platform_common/module.h>
#include <px4_platform_common/module_params.h>
#include <uORB/Subscription.hpp>
#include <uORB/Publication.hpp>
#include <uORB/topics/manual_control_setpoint.h>
#include <uORB/topics/parameter_update.h>
#include <uORB/topics/position_controller_status.h>
@ -98,29 +99,29 @@ public:
void run() override;
private:
orb_advert_t _pos_ctrl_status_pub{nullptr}; /**< navigation capabilities publication */
orb_advert_t _actuator_controls_pub{nullptr}; /**< actuator controls publication */
uORB::Publication<position_controller_status_s> _pos_ctrl_status_pub{ORB_ID(position_controller_status)};
uORB::Publication<actuator_controls_s> _actuator_controls_pub{ORB_ID(actuator_controls_0)};
int _control_mode_sub{-1}; /**< control mode subscription */
int _control_mode_sub{-1}; /**< control mode subscription */
int _global_pos_sub{-1};
int _local_pos_sub{-1};
int _manual_control_sub{-1}; /**< notification of manual control updates */
int _pos_sp_triplet_sub{-1};
int _att_sp_sub{-1};
int _vehicle_attitude_sub{-1};
int _att_sp_sub{-1};
int _vehicle_attitude_sub{-1};
int _sensor_combined_sub{-1};
uORB::Subscription _parameter_update_sub{ORB_ID(parameter_update)};
manual_control_setpoint_s _manual{}; /**< r/c channel data */
manual_control_setpoint_s _manual{}; /**< r/c channel data */
position_setpoint_triplet_s _pos_sp_triplet{}; /**< triplet of mission items */
vehicle_attitude_setpoint_s _att_sp{}; /**< attitude setpoint > */
vehicle_control_mode_s _control_mode{}; /**< control mode */
vehicle_global_position_s _global_pos{}; /**< global vehicle position */
vehicle_local_position_s _local_pos{}; /**< global vehicle position */
actuator_controls_s _act_controls{}; /**< direct control of actuators */
vehicle_attitude_s _vehicle_att{};
sensor_combined_s _sensor_combined{};
actuator_controls_s _act_controls{}; /**< direct control of actuators */
vehicle_attitude_s _vehicle_att{};
sensor_combined_s _sensor_combined{};
SubscriptionData<vehicle_acceleration_s> _vehicle_acceleration_sub{ORB_ID(vehicle_acceleration)};