常用MAVROS消息
global_position 订阅 GPS 数据
消息名称: mavros/global_position/global
类型名称: sensor_msgs::NavSatFix
常用类成员变量:
float64 latitude //经
float64 longitude //纬
float64 altitude //海拔
float64[9] position_covariance
uint8 position_covariance_type
imu_pub 订阅 IMU 原始数据
消息名称: mavros/imu/data
(不是mavros/imu/data_raw, mavros/imu/data 为经过滤波后的数据)
类型名称: sensor_msgs::Imu
常用类成员变量:
geometry_msgs::Quaternion orientation //旋转四元数(xyzw)
float64[9] orientation_covariance //方差
geometry_msgs::Vector3 angular_velocity //3 轴角速度(xyz)
float64[9] angular_velocity_covariance //方差
geometry_msgs::Vector3 linear_acceleration //线性加速度(xyz)
float64[9] linear_acceleration_covariance //方差
local_position 订阅本地位置数据
消息名称: mavros/local_position/pose
类型名称: geometry_msgs::PoseStamped
manual_control 订阅遥控器的值
消息名称: mavros/manual_control/control
类型名称: mavros_msgs::ManualControl
常用类成员变量:
float32 x
float32 y
float32 z
float32 r
uint16 buttons
sys_status 查询系统状态
消息名称: mavros/state
类型名称: mavros_msgs::State
常用类成员变量:
bool connected //是否连接
bool armed //是否解锁
bool guided //是否被引导(offboard 模式)
string mode //模式类型
uint8 system_status
waypoint 查询航点
消息名称: mavros/mission/waypoints
类型名称: mavros_msgs::WaypointList
常用类成员变量:
uint16 current_seq //当前航点索引
mavros_msgs::Waypoint[] waypoints
uint8 frame //坐标类型
uint16 command //命令 id,16 为航点
bool is_current
bool autocontinue
float32 param1
float32 param2
float32 param3
float32 param4
float64 x_lat //经度或者 x 坐标
float64 y_long //维度或者 y 坐标
float64 z_alt //海拔或者 z 坐标
坐标系
px4
使用的坐标系为NED
(北东地)坐标系或者FRD
(前右下)坐标系。mavros
中常使用的是ENU
(东北天)坐标系或者body
系,mavros
会自动将输入的ENU
坐标值或者body
系坐标值转换到NED
坐标系中,再通过mavlink
发送给飞控。
mavros的话题中常见的坐标系有global
系、local
系、body
系
global
系是gps坐标系,经纬度。local
系指当地坐标系,一般是ENU
坐标系,坐标原点一般在起飞点。如果有offset的话坐标原点在飞机上,这时其实是导航坐标系。body
系在melodic版本中,改成了FLU(前左上)坐标系。
note
coordinate_frame=1
虽然代表向px4发送NED
坐标值,但是发送到这个话题的坐标系应该用ENU
,mavros
会自动完成这个坐标系的转换ROS
程序发布的给定姿态topic
为/mavros/setpoint_raw/attitude
,而非/mavros/setpoint_attitude/attitude
ROS
发布的速度指令topic
为/mavros/setpoint_velocity/cmd_vel_unstamped
topic: "mavros/setpoint_raw/local"
rosmsg show marvros_msg/PositionTarget
uint8 coordinate_frame
uint8 FRAME_LOCAL_NED = 1
uint8 FRAME_LOCAL_OFFSET_NED = 7
uint8 FRAME_BODY_NED = 8
uint8 FRAME_BODY_OFFSET_NED = 9
uint16 type_mask
uint16 IGNORE_PX = 1 # Position ignore flags
uint16 IGNORE_PY = 2
uint16 IGNORE_PZ = 4
uint16 IGNORE_VX = 8 # Velocity vector ignore flags
uint16 IGNORE_VY = 16
uint16 IGNORE_VZ = 32
uint16 IGNORE_AFX = 64 # Acceleration/Force vector ignore flags
uint16 IGNORE_AFY = 128
uint16 IGNORE_AFZ = 256
uint16 FORCE = 512 # Force in af vector flag
uint16 IGNORE_YAW = 1024
uint16 IGNORE_YAW_RATE = 2048
geometry_msgs/Point position
geometry_msgs/Vector3 velocity
geometry_msgs/Vector3 acceleration_or_force
float32 yaw
float32 yaw_rate