ROS2话题/mavros/statustext/recv无消息输出问题求助
解决/mavros/statustext/recv话题无消息输出的问题
先确认话题是否存在
运行ros2 topic list查看列表中是否包含/mavros/statustext/recv。如果没有,说明mavros未发布该话题,大概率是配置或无人机消息发送问题;如果存在,用ros2 topic info /mavros/statustext/recv确认消息类型为mavros_msgs/msg/Statustext,避免订阅时类型不匹配。检查无人机是否发送STATUSTEXT消息
部分无人机固件(如PX4、ArduPilot)需要配置参数启用状态文本发送:- PX4固件可检查
MAV_1_CONFIG等参数,确保MAVLink端口配置正确,且STATUSTEXT消息发送功能开启; - 用QGroundControl的MAVLink消息监视器直接查看无人机是否发送了STATUSTEXT消息,若无人机未发送,mavros自然无法转发该话题。
- PX4固件可检查
验证mavros节点状态与配置
- 用
ros2 node list确认/mavros节点正常运行,再通过ros2 node info /mavros查看其发布话题列表,确认包含/mavros/statustext/recv; - 检查mavros参数:运行
ros2 param get /mavros statustext/enable,若返回false,执行ros2 param set /mavros statustext/enable true,重启mavros节点后生效。
- 用
排查通信链路问题
- 验证mavros与无人机的基础通信:运行
ros2 topic echo /mavros/state,查看connected字段是否为true。若连接异常,先解决串口/网络通信配置问题(如波特率、UDP/TCP地址是否匹配); - 检查设备权限:若使用串口通信,确保当前用户有权访问对应串口设备,可执行
sudo usermod -aG dialout $USER添加权限,重启后生效。
- 验证mavros与无人机的基础通信:运行
手动订阅MAVLink STATUSTEXT消息
若上述步骤无效,尝试手动订阅MAVLink消息:
运行ros2 service call /mavros/mavlink/subscribe_topic mavros_msgs/srv/SubscribeTopic "{topic: {id: 253, type: 'STATUSTEXT'}, rate: 1.0}",之后再查看/mavros/statustext/recv是否有消息输出。
内容的提问来源于stack exchange,提问作者Максим
相关产品推荐
相关产品推荐

