玩命加载中 . . .

ROS_MAVROS


常用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坐标值,但是发送到这个话题的坐标系应该用ENUmavros会自动完成这个坐标系的转换
  • 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

文章作者: kunpeng
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 kunpeng !
  目录