基于PIXhawk 4与ROS 2的MAVROS 2通信实战:从QGC配置到Jetson Orin Nano部署

基于PIXhawk 4与ROS 2的MAVROS 2通信实战:从QGC配置到Jetson Orin Nano部署 1. 硬件与软件环境搭建第一次用PIXhawk 4飞控配Jetson Orin Nano时我对着满桌子的线材和开发板发呆了半小时。这种组合在无人机开发圈里越来越常见但实际配置时还是有不少坑要踩。先说硬件清单PIXhawk 4飞控要选带减震垫的版本Jetson Orin Nano建议直接上16GB内存的型号毕竟后面要跑ROS 2和视觉算法。连线时特别注意飞控的TELEM2口通过USB转TTL模块连接Orin Nano的UART引脚我用的CH343G芯片转换器实测很稳定。软件环境方面Ubuntu 22.04是最佳选择记得安装时勾选最小化安装选项。ROS 2 Humble的安装有个小技巧先配置好清华的apt源然后执行sudo apt install ros-humble-desktop时加上--install-recommends参数这样会把Gazebo等工具一并装好。有次我漏装了 geographiclib数据集导致MAVROS死活启动不了后来发现需要手动执行wget https://raw.githubusercontent.com/mavlink/mavros/master/mavros/scripts/install_geographiclib_datasets.sh sudo bash install_geographiclib_datasets.sh2. QGroundControl飞控配置实战打开QGC连接飞控时新手常犯的错误是直接点击连接而不检查协议版本。我建议先在Vehicle Setup - Parameters里搜索MAV把MAV_1_CONFIG的类型改为TELEM2波特率设置为921600。这里有个隐藏技巧如果参数页面显示为黄色背景说明参数未保存需要点右上角的保存图标。更关键的配置在MAVLink协议版本选择上。在参数列表中找到MAV_PROTO_VER必须设置为2才能启用MAVLink 2协议。有次调试时发现数据包总是丢失后来发现是这个参数被重置为默认值1了。建议把以下关键参数都检查一遍SER_TEL2_BAUD 921600MAV_1_FORWARD EnabledMAV_1_MODE Onboard3. MAVROS 2功能包深度配置创建ROS 2功能包时我习惯用colcon构建系统。先建立标准的config和launch文件夹结构然后配置px4_config.yaml文件。这个文件里的坑最多比如tf树配置不当会导致RViz里显示漂移。我的经验是先在local_position部分启用TF发布/local_position: ros__parameters: tf: send: true frame_id: odom child_frame_id: base_linkplugin管理是另一个重点。在px4_pluginlists.yaml里建议新手先禁用非必要插件等基础通信稳定后再逐步开启。我通常会保留这几个核心插件sys_statuslocal_positionglobal_positionimurc_io4. 通信测试与故障排查启动节点时最怕看到Device timeout错误。我的调试流程是先用ls /dev/tty*确认设备节点存在然后用minicom测试串口通信是否正常。如果出现权限问题记得把用户加入dialout组sudo usermod -aG dialout $USER当ROS 2节点启动后这几个诊断命令能救命ros2 topic echo /mavros/state ros2 topic hz /mavros/imu/data ros2 run tf2_tools view_frames遇到TF树断裂的问题时检查config文件中的坐标系设置是否一致。我曾在三个地方分别设置了不同的frame_id结果导致坐标转换全乱套了。另一个常见问题是波特率不匹配飞控、硬件转换器和ROS配置必须完全一致。