无人机仿真XTDrone学习二:常用的mavros消息类型

mavros用于无人机通信,可以将飞控与主控的信息进行交换。本次记录常用的mavros消息类型。

官方Wiki最正确,如有疑问首先查阅Wiki。
mavros wiki
CSDN参考

常用话题

数传

用于查看数传状态:

3DR_RADIO:
/mavros/radio_status (mavros_msgs/RadioStatus)

全局位置

mavros中的飞控和GPS消息。

GPS:
/mavros/global_position/global (sensor_msgs/NavSatFix)
sensor_msgs/NavSatFix.msg
-----------------------------------
float64 latitude	//经度
float64 lontitude	//纬度
float64 altitude	//高度
float64[9] position_covariance
uint8 position_covariance_type

IMU惯导

mavros中用于imu数据通信的消息。

IMU:
/mavros/imu/data (sensor_msgs/Imu)
sensor_msgs/Imu.msg
--------------------------------
std_msgs/Header header
geometry_msgs/Quaternion orientation    //四元数,旋转方向
float64[9] orientation_covariance   //旋转方向的协方差
geometry_msgs/Vector3 angular_velocity    //角速度
float64[9] angular_velocity_covariance     //角速度的协方差
geometry_msgs/Vector3 linear_acceleration    //线加速度
float64[9] linear_acceleration_covariance    //线加速度的协方差

本地位置

mavros中发布本地位置位姿和速度的消息。

Local pose:
/mavros/local_position/pose (geometry_msgs/PoseStamped)

Local velocity:
/mavros/local_position/velocity (geometry_msgs/TwistStamped)

设置飞行位点、速度、加速度

mavros中用于向FCU指定飞行位置、速度,加速度、姿态等的消息,非常重要。
设置加速度:

set acceleration:
/mavros/setpoint_accel/accel (geometry_msgs/Vector3Stamped)

设置速度:

set velocity:
/mavros/setpoint_velocity/cmd_vel_unstamped (geometry_msgs/Twist)

设置位姿:

set attitude:
/mavros/setpoint_attitude/attitude (geometry_msgs/PoseStamped)

设置角速度:

set angular velocity:
setpoint_attitude/cmd_vel (geometry_msgs/TwistStamped)

设置油门:

set thrust:
/mavros/setpoint_attitude/thrust (mavros_msgs/Thrust)

设置飞行位点:

set local position:
/mavros/setpoint_position/local (geometry_msgs/PoseStamped)

set global position:
/mavros/setpoint_position/global (geographic_msgs/GeoPoseStamped)

自己写飞控和回环的话有/mavros/setpoint_raw的一系列话题:
这个话题也是XTDrone无人机仿真平台的通讯脚本multirotor_communication.py使用用来控制的话题。

Send RAW setpoint messages to FCU and provide loopback topics (PX4).

Local position, velocity and acceleration setpoint:
setpoint_raw/local (mavros_msgs/PositionTarget)   

Attitude, angular rate and thrust setpoint:
setpoint_raw/attitude (mavros_msgs/AttitudeTarget)   

系统状态

用于检测FCU状态。

Sys state:
/mavros/state (mavros_msgs/State)

系统时间

用于时间同步。

Time:
/mavros/time_reference (sensor_msgs/TimeReference)

常用服务

飞控命令

用于向FCU发送解锁、起飞、降落等指令:

Services:

/mavros/cmd/arming (mavros_msgs/CommandBool)
/mavros/cmd/set_home (mavros_msgs/CommandHome)
/mavros/cmd/takeoff (mavros_msgs/CommandTOL)
/mavros/cmd/land (mavros_msgs/CommandTOL)
/mavros/cmd/trigger_control (mavros_msgs/CommandTriggerControl)

飞行模式

用于设置飞行模式

Service:
/mavros/set_mode (mavros_msgs/SetMode)

其它

除了上面这些,mavros还提供了手动操作manual_control,混控器actuator_control,无线电接收rc_io,安全区域safety_area,航点任务mission等。

  • 5
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要通过 mavros 发送指令使无人机停止前进,你需要使用 `mavros_msgs::PositionTarget` 消息来发送期望的位置和速度信息。 具体来说,你需要设置以下字段: - `type_mask`:设为 `mavros_msgs::PositionTarget::IGNORE_VX | mavros_msgs::PositionTarget::IGNORE_VY | mavros_msgs::PositionTarget::IGNORE_VZ | mavros_msgs::PositionTarget::IGNORE_AFX | mavros_msgs::PositionTarget::IGNORE_AFY | mavros_msgs::PositionTarget::IGNORE_AFZ | mavros_msgs::PositionTarget::IGNORE_YAW | mavros_msgs::PositionTarget::IGNORE_YAW_RATE`,表示忽略速度和加速度信息,只保留位置和航向信息。 - `position`:设为当前位置,表示不改变位置。 - `velocity`:设为零向量,表示不移动。 - `yaw` 和 `yaw_rate`:可以任意设定,因为 `type_mask` 中已经忽略了这些信息。 以下是一个示例代码片段: ```cpp #include <ros/ros.h> #include <mavros_msgs/PositionTarget.h> int main(int argc, char **argv) { ros::init(argc, argv, "stop_drone_node"); ros::NodeHandle nh; ros::Publisher target_pub = nh.advertise<mavros_msgs::PositionTarget>("/mavros/setpoint_raw/local", 10); mavros_msgs::PositionTarget target; target.type_mask = mavros_msgs::PositionTarget::IGNORE_VX | mavros_msgs::PositionTarget::IGNORE_VY | mavros_msgs::PositionTarget::IGNORE_VZ | mavros_msgs::PositionTarget::IGNORE_AFX | mavros_msgs::PositionTarget::IGNORE_AFY | mavros_msgs::PositionTarget::IGNORE_AFZ | mavros_msgs::PositionTarget::IGNORE_YAW_RATE; target.position.x = 0.0; target.position.y = 0.0; target.position.z = 0.0; target.velocity.x = 0.0; target.velocity.y = 0.0; target.velocity.z = 0.0; target.yaw = 0.0; target.yaw_rate = 0.0; ros::Rate rate(20.0); while (ros::ok()) { target.header.stamp = ros::Time::now(); target_pub.publish(target); ros::spinOnce(); rate.sleep(); } return 0; } ``` 这个节点会以 20 Hz 的频率向 `/mavros/setpoint_raw/local` 发布 `mavros_msgs::PositionTarget` 消息,使无人机停止前进。注意,这个节点只是一个示例,实际上你需要根据你的具体情况修改代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值