文章目录
前言
本页展示了如何使用 RPLidarA2 激光雷达(RPLidarA2 lidar)设置 ROS 和 Google Cartographer SLAM,为 ArduPilot 提供本地位置估计,使其可以在没有 GPS 的情况下运行。
这些说明在使用 APSync 更新的 NVidia TX2 上进行了测试,然后按照此处所述安装(installed as described here)了 ROS 和 MAVROS。
!Note
这些页面正在制作中。
7 构建软件包
cd $HOME/catkin_ws
catkin build
source devel/setup.bash
8 开始制图
将 RPLidarA2 插头插入配套电脑,然后打开四个端子,并在每个端子类型中打开:
cd catkin_ws
source devel/setup.bash
然后在终端1:
roscore
在终端2:
roslaunch rplidar_ros rplidar.launch
在终端3:
roslaunch cartographer_ros cartographer.launch
在终端4:
按照“连接 ROS”页面( Connecting with ROS page)上的说明启动 mavros,其中包括运行类似下面的命令:
roslaunch mavros apm.launch fcu_url:=udp://:14855@
9 配置 ArduPilot
用地面站(即 Mission Planner)连接飞行控制器,并检查以下参数是否设置如下:
- AHRS_EKF_TYPE = 3,用于使用 EKF3;
- EK2_ENABLE = 0,禁用 EKF2;
- EK3_ENABLE = 1,启用 EKF3;
- EK3_SRC1_POSXY = 6,将位置水平源设置为 ExternalNAV;
- EK3_SRC1_POSZ = 1,将位置垂直源设置为 Baro;
- EK3_SRC1_VELXY = 6,将速度水平源设置为 ExternalNAV;
- EK3_SRC1_VELZ = 6,将垂直速度源设置为 ExternalNAV;
- EK3_SRC1_YAW = 6,用于将偏航源设置为 ExternalNAV;
- GPS1_TYPE = 0,禁用 GPS;
- VISO_TYPE = 1,用于启用目视里程计;
- ARMING_CHECK = 388598(可选,用于禁用 GPS 检查)。
更改上述任何数值后,重新启动飞行控制器。
如果一切正常,视觉位置估计值应开始从 ROS 传输到 ArduPilot。使用任务计划器(或类似工具)连接到飞行控制器,检查飞行数据屏幕的 “信息 ”选项卡(左下角)是否有来自 EKF 的信息,如下图所示,即可确认这一点:
EKF2 IMU1 initial pos NED = 0.0,0.0,0.0 (m)
EKF2 IMU1 is using external nav data
EKF2 IMU0 initial pos NED = 0.0,0.0,0.0 (m)
EKF2 IMU0 is using external nav data
使用任务计划器(或类似工具)进入“飞行数据”屏幕,然后用鼠标右键单击地图,选择 “在此设置原点”>>“设置 EKF 原点”。飞行器应立即出现在你点击的地图上。
10 测试
要确认 ROS 端工作正常,请键入以下命令,制图师提供的位置估计实时更新信息就会显示出来:
rostopic echo /robot_pose
任务规划器的 MAVLink 检查器(按 Ctrl-F,然后按“MAVLink 检查器”按钮)可用于检查 VISION_POSITION_ESTIMATE 信息是否成功发送至飞行控制器。
11 视频
!Note
我们非常希望改进 ArduPilot 对 ROS 的支持,因此如果您发现问题(例如似乎不支持的命令),请在 ArduPilot 问题列表(ArduPilot issues list)中报告,并在标题中注明“ROS”,我们将尝试尽快解决这些问题。