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).

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?