用于非 GPS 导航的赫克托 SLAM
Last updated
Last updated
本页介绍如何使用 RPLidarA2 激光雷达设置 ROS 和 Hector SLAM,为 ArduPilot 提供本地位置估计,以便它可以在没有 GPS 的情况下运行。
这些指令在用APSync闪存的NVidia TX2上进行了测试,然后按照此处所述安装了ROS和MAVROS。
他们还在RaspberryPi 3 B +上进行了测试,并安装了ROS和MAVROS,如此处所述。
注意
这些页面正在进行中
RPLidar 的方向应使其 USB 电缆线指向与飞行控制器上的箭头相同的方向。
USB 电缆应插入运行 ROS 的配套计算机上的 USB 端口。
将 RPLidarA2 插入配套计算机。如果使用安装在AUVidea J2板上的TX120,请确保激光雷达已插入较低的USB端口。
激光雷达应显示为 /dev/ttyUSB0 或 /dev/ttyACM0。
如果您键入“lsusb”,则设备还应列为“Cygnal Integrated Products, Inc. CP210x UART Bridge / myAVR mySmartUSB 灯”
允许任何人通过输入以下两个命令之一从设备读取,具体取决于上面找到的串行端口
将 ROS 桌面安装完整:
或者安装这些单独的软件包中的每一个(此列表尚未完成):
在您的主目录中:
在工作区中安装 RPLidar 节点和 Hector SLAM 软件
使用您喜欢的编辑器打开Hector SLAM的启动文件,该文件可以在$HOME/catkin_ws/src/hector_slam/hector_mapping/launch/mapping_default.launch中找到,并修改“base_frame”,“odom_frame”并注释掉“tf”行,如下所示:
编辑 Hector SLAM 的 hector_imu_attitude_to_tf/launch/example.launch 文件,该文件位于 $HOME/catkin_ws/src/hector_slam/hector_imu_attitude_to_tf/launch/example.launch,并通过将“thumper_imu”替换为“/mavros/imu/data”来更改它以消耗来自飞行控制器的 IMU 数据(通过 mavros),使其如下所示:
编辑 Hector SLAM 的 tutorial.launch 文件,该文件位于 $HOME/catkin_ws/src/hector_slam/hector_slam_launch/launch/tutorial.launch,并将“use_sim_time”行更改为如下所示:
继续编辑 tutorial.launch 并添加一个新行(就在现有包含行的正下方),以便包含上面修改的 example.launch 文件:
默认情况下,一旦启动,Hector SLAM 将弹出一个窗口以实时显示地图,但这可以通过注释掉 tutorial.launch 文件的一行来禁用,使其如下所示:
将RPLidarA2插入配套计算机,然后打开四个终端,每种终端类型:
然后在 1 号航站楼:
在 2 号航站楼:
在终端 3 中(对于 RaspberryPi,我们建议在另一台机器上运行它这里解释):
在 4 号航站楼:
按照与 ROS 连接页面上的说明启动 mavros,其中涉及运行如下命令:
使用地面站(即任务规划器)连接到飞行控制器,并检查是否设置了如下所示的参数:
AHRS_EKF_TYPE = 2(默认值)使用 EKF2(在编写此页面时,EKF3 尚不支持外部仓位估计)
EK2_ENABLE = 1(默认值)
EK3_ENABLE = 0(默认值)
GPS_TYPE = 0 禁用 GPS
EK2_GPS_TYPE = 3 以禁用 EKF 对 GPS 的使用
COMPASS_ENABLE = 0,COMPASS_USE = 0,COMPASS_USE2 = 0,COMPASS_USE3 = 0 禁用 EKF 对指南针的使用,而是依赖 ROS 和 Hector SLAM 的航向
更改上述任何值后,重新启动飞行控制器。
如果一切正常,视觉位置估计应该开始从ROS流入ArduPilot。这可以通过使用任务规划器(或类似工具)连接到飞行控制器并检查飞行数据屏幕的消息选项卡(左下角)来确认来自 EKF 的消息,如下所示:
使用任务规划器(或类似工具)转到“飞行数据”屏幕,右键单击地图,然后选择“在此处设置主页”>>“设置EKF原点”。车辆应立即出现在您单击的地图上。
注意
我们热衷于改进ArduPilot对ROS的支持,因此如果您发现问题(例如似乎不支持的命令),请在ArduPilot问题列表中报告它们,标题包含“ROS”,我们将尝试尽快解决这些问题。