PC端QGC连接PX4,进入Parameters,找到Standard下面的MAVLINK,MAV_1_CONFIG初始为Disable,不会出现MAV_1_MODE和MAV_1_RATE这些参数,只有选择MAV_1_CONFIG为TELEM 2之后,重启飞控板,才会出现MODE和TARE这两个参数。至于为什么这样设置,请参考PX4官方关于配置协同计算机的参考文档
之后再Standard的Serial参数找到SER_TEL2_BAUD参数设置为921600
改完之后,请务必重启飞控,查看相应参数是否已经更改成功。
sudo vim opt/ros/noetic/share/mavros/px4.launch
更改下面两行,第一行是fcu_url参数,作用是ubuntu系统通过USB连接PX4,注意树莓派系统是ttyACM0,如果是别的嵌入式板子,去搜一下,可能是ttyUSB0;第二行是gcs_url参数,作用是PC端的QGC地面站通过UDP网络连接至树莓派的ubuntu系统,注意PC机与ubuntu系统需连接至同一个无线网,另外ubuntu系统的端口是14550,需要在系统中开放14550端口,具体操作可以百度搜一下。
<arg name="fcu_url" default="/dev/ttyACM0:921600" /> <arg name="gcs_url" default="udp://:14550@" />
将树莓派ubuntu系统与PX4通过USB数据线连接,在ubuntu终端输入以下命令测试,这里注意两点1)PX4连接树莓派之前,树莓派的USB接口不能插入任何别的设备,防止其他设备占用ttyACM0端口;2)如果出现serial0: receive: End of file错误,请插上航模电池,接入电源至px4飞控,解决方案来源这里
终端输入以下命令,测试树莓派ubuntu系统与否PX4连通
roslaunch mavros px4.launch
测试成功界面
1)添加Listening Port为14550,监听端口可以选择其他端口,务必保证端口不被占用且前后设置保持一致
2)添加Target Host的地址为树莓派ubuntu系统所在的网络IP地址,与PC端应在同一局域网下
PC端QGC通过UDP与树莓派连接的PX4通信,必须是在ubuntu系统启动PX4.launch的前提下