Hi-jack existing mavros messages for transferring data
In mavros
setpoint_attitude
Send attitude setpoint using SET_ATTITUDE_TARGET.
Subscribed Topics
~setpoint_attitude/cmd_vel (geometry_msgs/TwistStamped)
Send angular velocity.
~setpoint_attitude/attitude(geometry_msgs/PoseStamped)
Send attitude setpoint.
~setpoint_attitude/att_throttle(std_msgs/Float64)
Send throttle value(0~1).
In mavlink_receiver.cpp
void
MavlinkReceiver::handle_message_set_attitude_target(mavlink_message_t *msg)
{
...
_rates_sp.roll = set_attitude_target.body_roll_rate;
_rates_sp.pitch = set_attitude_target.body_pitch_rate;
_rates_sp.yaw = set_attitude_target.body_yaw_rate;
...
_rates_sp.thrust = set_attitude_target.thrust;
...
orb_publish(ORB_ID(vehicle_rates_setpoint), _rates_sp_pub, &_rates_sp);
...
_att_sp.q_d[0] = set_attitude_target.q[0];;
_att_sp.q_d[1] = set_attitude_target.q[1];
_att_sp.q_d[2] = set_attitude_target.q[2];
_att_sp.q_d[3] = set_attitude_target.q[3];
...
_att_sp_pub = orb_advertise(ORB_ID(vehicle_attitude_setpoint), &_att_sp);
In px4 code
cmd_vel is puslished over vehicle_rates_setpoint.msg
float32 roll # body angular rates in NED frame
float32 pitch # body angular rates in NED frame
float32 yaw # body angular rates in NED frame
float32 thrust # thrust normalized to 0..1
attitude is published over vehicle_attitude_setpoint.msg ( with using q_d)
float32 roll_body # body angle in NED frame
float32 pitch_body # body angle in NED frame
float32 yaw_body # body angle in NED frame
float32 yaw_sp_move_rate # rad/s (commanded by user)
# For quaternion-based attitude control
float32[4] q_d # Desired quaternion for quaternion control
bool q_d_valid # Set to true if quaternion vector is valid
float32 thrust # Thrust in Newton the power system should generate
bool roll_reset_integral # Reset roll integral part (navigation logic change)
bool pitch_reset_integral # Reset pitch integral part (navigation logic change)
bool yaw_reset_integral # Reset yaw integral part (navigation logic change)
bool fw_control_yaw # control heading with rudder (used for auto takeoff on runway)
bool disable_mc_yaw_control # control yaw for mc (used for vtol weather-vane mode)
bool apply_flaps
float32 landing_gear
In mavros
https://github.com/mavlink/mavros/blob/master/mavros/src/plugins/setpoint_attitude.cpp
Last updated
Was this helpful?