forked from Archive/PX4-Autopilot
VTOL state check for attitude setpoint publish
This commit is contained in:
parent
35b0778499
commit
c8edac0a1d
|
@ -99,6 +99,7 @@ MavlinkReceiver::MavlinkReceiver(Mavlink *parent) :
|
||||||
} else {
|
} else {
|
||||||
_is_vtol = false;
|
_is_vtol = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -1401,6 +1402,7 @@ MavlinkReceiver::handle_message_set_attitude_target(mavlink_message_t *msg)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!offboard_control_mode.ignore_thrust) { // dont't overwrite thrust if it's invalid
|
if (!offboard_control_mode.ignore_thrust) { // dont't overwrite thrust if it's invalid
|
||||||
|
if (!_is_vtol) {
|
||||||
// Fill correct field by checking frametype
|
// Fill correct field by checking frametype
|
||||||
// TODO: add as needed
|
// TODO: add as needed
|
||||||
switch (_mavlink->get_system_type()) {
|
switch (_mavlink->get_system_type()) {
|
||||||
|
@ -1423,13 +1425,23 @@ MavlinkReceiver::handle_message_set_attitude_target(mavlink_message_t *msg)
|
||||||
att_sp.thrust_body[0] = set_attitude_target.thrust;
|
att_sp.thrust_body[0] = set_attitude_target.thrust;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (!_is_vtol) {
|
|
||||||
_att_sp_pub.publish(att_sp);
|
_att_sp_pub.publish(att_sp);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
if (_vtol_vehicle_status_sub.updated()) {
|
||||||
|
_vtol_vehicle_status_sub.copy(&_vtol_vehicle_status);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_vtol_vehicle_status.vtol_in_rw_mode) {
|
||||||
|
att_sp.thrust_body[2] = -set_attitude_target.thrust;
|
||||||
_mc_virtual_att_sp_pub.publish(att_sp);
|
_mc_virtual_att_sp_pub.publish(att_sp);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
att_sp.thrust_body[0] = set_attitude_target.thrust;
|
||||||
|
_fw_virtual_att_sp_pub.publish(att_sp);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -97,6 +97,7 @@
|
||||||
#include <uORB/topics/vehicle_rates_setpoint.h>
|
#include <uORB/topics/vehicle_rates_setpoint.h>
|
||||||
#include <uORB/topics/vehicle_status.h>
|
#include <uORB/topics/vehicle_status.h>
|
||||||
#include <uORB/topics/vehicle_trajectory_waypoint.h>
|
#include <uORB/topics/vehicle_trajectory_waypoint.h>
|
||||||
|
#include <uORB/topics/vtol_vehicle_status.h>
|
||||||
|
|
||||||
class Mavlink;
|
class Mavlink;
|
||||||
|
|
||||||
|
@ -230,6 +231,7 @@ private:
|
||||||
uORB::Publication<vehicle_attitude_s> _attitude_pub{ORB_ID(vehicle_attitude)};
|
uORB::Publication<vehicle_attitude_s> _attitude_pub{ORB_ID(vehicle_attitude)};
|
||||||
uORB::Publication<vehicle_attitude_setpoint_s> _att_sp_pub{ORB_ID(vehicle_attitude_setpoint)};
|
uORB::Publication<vehicle_attitude_setpoint_s> _att_sp_pub{ORB_ID(vehicle_attitude_setpoint)};
|
||||||
uORB::Publication<vehicle_attitude_setpoint_s> _mc_virtual_att_sp_pub{ORB_ID(mc_virtual_attitude_setpoint)};
|
uORB::Publication<vehicle_attitude_setpoint_s> _mc_virtual_att_sp_pub{ORB_ID(mc_virtual_attitude_setpoint)};
|
||||||
|
uORB::Publication<vehicle_attitude_setpoint_s> _fw_virtual_att_sp_pub{ORB_ID(fw_virtual_attitude_setpoint)};
|
||||||
uORB::Publication<vehicle_global_position_s> _global_pos_pub{ORB_ID(vehicle_global_position)};
|
uORB::Publication<vehicle_global_position_s> _global_pos_pub{ORB_ID(vehicle_global_position)};
|
||||||
uORB::Publication<vehicle_gps_position_s> _gps_pub{ORB_ID(vehicle_gps_position)};
|
uORB::Publication<vehicle_gps_position_s> _gps_pub{ORB_ID(vehicle_gps_position)};
|
||||||
uORB::Publication<vehicle_land_detected_s> _land_detector_pub{ORB_ID(vehicle_land_detected)};
|
uORB::Publication<vehicle_land_detected_s> _land_detector_pub{ORB_ID(vehicle_land_detected)};
|
||||||
|
@ -263,6 +265,7 @@ private:
|
||||||
uORB::Subscription _parameter_update_sub{ORB_ID(parameter_update)};
|
uORB::Subscription _parameter_update_sub{ORB_ID(parameter_update)};
|
||||||
uORB::Subscription _vehicle_attitude_sub{ORB_ID(vehicle_attitude)};
|
uORB::Subscription _vehicle_attitude_sub{ORB_ID(vehicle_attitude)};
|
||||||
uORB::Subscription _vehicle_local_position_sub{ORB_ID(vehicle_local_position)};
|
uORB::Subscription _vehicle_local_position_sub{ORB_ID(vehicle_local_position)};
|
||||||
|
uORB::Subscription _vtol_vehicle_status_sub{ORB_ID(vtol_vehicle_status)};
|
||||||
|
|
||||||
static constexpr unsigned int MOM_SWITCH_COUNT{8};
|
static constexpr unsigned int MOM_SWITCH_COUNT{8};
|
||||||
uint8_t _mom_switch_pos[MOM_SWITCH_COUNT] {};
|
uint8_t _mom_switch_pos[MOM_SWITCH_COUNT] {};
|
||||||
|
@ -278,6 +281,8 @@ private:
|
||||||
|
|
||||||
bool _is_vtol{false};
|
bool _is_vtol{false};
|
||||||
|
|
||||||
|
vtol_vehicle_status_s _vtol_vehicle_status{};
|
||||||
|
|
||||||
DEFINE_PARAMETERS(
|
DEFINE_PARAMETERS(
|
||||||
(ParamFloat<px4::params::BAT_CRIT_THR>) _param_bat_crit_thr,
|
(ParamFloat<px4::params::BAT_CRIT_THR>) _param_bat_crit_thr,
|
||||||
(ParamFloat<px4::params::BAT_EMERGEN_THR>) _param_bat_emergen_thr,
|
(ParamFloat<px4::params::BAT_EMERGEN_THR>) _param_bat_emergen_thr,
|
||||||
|
|
Loading…
Reference in New Issue