参考
- ArduPilot Development
- 超维空间科技
- 基于Pixhawk和ROS搭建自主无人车(文章链接汇总)
1. 硬件接线一览
2. 安装 Mavros
2.1 简介
- Mavros 是一个用于与无人机通信的 ROS 功能包,它借助 MAVLink 协议来与 PX4 Autopilot 进行通信,MAVLink 是一种轻量级、高效的无人机通信协议,通过 ROS 与 PX4 Autopilot 进行通信和交互
2.2 安装流程
- 本文采用二进制方式安装 Mavros,如果需要对源码进行修改可通过源码方式安装
# 本文使用 ROS-melodic 版本,其他版本直接替换即可 $ sudo apt-get install ros-melodic-mavros ros-melodic-mavros-extras # 接下来的步骤有两种方法,第一种方法可能会因为网络问题导致下载不下来 # 方法一 $ wget https://raw.githubusercontent.com/mavlink/mavros/master/mavros/scripts/install_geographiclib_datasets.sh $ sudo chmod 777 ./install_geographiclib_datasets.sh $ ./install_geographiclib_datasets.sh # 方法二 $ cd ~ $ git clone https://github.com/Robot-Yue/GeographicLib.git $ sudo mv GeographicLib /usr/share
3. 通信测试
-
首先,将 Pixhawk 通过 USB 连接到电脑,打开 QGC 地面站,设置以下参数(本文使用 APM-4.2.3 固件)
- SERIAL2_BAUD = 921600(如果通信失败则适当降低波特率为 460800)
- SERIAL2_PROTOCOL = MAVLink2
-
然后,修改启动文件 apm.launch(如果用的 PX4 固件则对应 px4.launch)下行代码
- 其中 ttyUSB0 对应于 Pixhawk 和机载电脑(本文使用 USB 转 ttl 和 NUC 连接)的连接串口号
- 921600 对应上述设置的 SERIAL2_BAUD 波特率数值(如果通信失败则适当降低波特率为 460800)
$ roscd mavros $ cd launch $ sudo vim apm.launch
// 修改下行代码 ... <arg name="fcu_url" default="/dev/ttyUSB0:921600"> ...
-
然后,给 ttyUSB0 添加 777 权限
$ sudo chmod 777 /dev/ttyUSB0
-
最后,启动 apm.launch 建立 Pixhawk 和 NUC 的通信,出现下图则表示通信建立成功
$ cd ~ $ roslaunch mavros apm.launch
# 另起一个终端,测试 NUC 订阅 Pixhawk 中的 IMU 发布频率信息 $ rostopic hz /mavros/imu/data_raw