Cartographer SLAM 与 SITL 中的 ROS 2¶
本页介绍如何使用 ArduPilot SITL 设置 ROS 2 并将 Google Cartographer 作为 SLAM 源运行。
安装¶
本页假定您已成功完成本维基中的 ROS 2 基本设置: ROS 2, 带有 SITL 的 ROS 2 和 带gazebo的 ROS 2.
完成后,只需运行即可:
CD ~/ros2_ws/src git 复制 [email protected]:ArduPilot/ardupilot_ros.git
CD ~/ros2_ws rosdep 安装 --从路径 来源 --忽略源代码 -r --跳键 gazebo-ros-pkgs
现在为工作区创建源代码 ardupilot_ros:
CD ~/ros2_ws
消息来源 ./install/setup.bash colcon 构建 --包至 ardupilot_ros ardupilot_gz_bringup
使用方法¶
该软件包与 ardupilot_gz首先,我们将在一个迷宫世界中启动一个配备 360 度 2D 激光雷达的旋翼飞行器模拟。要启动 rviz 和 gazebo,请运行
消息来源 ~/ros2_ws/install/setup.sh ros2 启动 ardupilot_gz_bringup iris_maze.launch.py
现在,我们可以启动 Google Cartographer 生成 SLAM,检查 RVIZ 是否正确生成了地图。在另一个终端运行
消息来源 ~/ros2_ws/install/setup.sh ros2 启动 ardupilot_ros cartographer.launch.py
配置 ArduPilot¶
如果您想将 Cartographer 提供的信息导入 ArduPilot 的扩展卡尔曼滤波器,则需要更改一些参数,您可以通过任何 GCS(包括 mavproxy)进行更改:
AHRS_EKF_TYPE = 3 使用 EKF3
EK2_ENABLE = 0 则禁用 EKF2
EK3_ENABLE = 1 时启用 EKF3
EK3_SRC1_POSXY = 6 将位置水平源设置为 ExternalNAV
EK3_SRC1_POSZ = 1,将位置垂直源设置为巴罗
EK3_SRC1_VELXY = 6,将速度水平源设置为 ExternalNAV
EK3_SRC1_VELZ = 6,将垂直速度源设置为 ExternalNAV
EK3_SRC1_YAW = 6,将偏航源设置为 ExternalNAV
VISO_TYPE = 1,启用视觉里程计
上膛检查 = 388598(可选,用于禁用 GPS 检查)
更改上述数值后,重新启动飞行控制器。
警告
上述参数建议用于 SITL。如果您打算在真正的旋翼飞行器上使用,最好设置第二个 EKF 源。这样,如果您提供的外部里程计停止发布或丢失,机器人就不会崩溃。
有关以下方面的详细信息,请参阅此链接 常见的 EKF 信号源 以及本指南 GPS / 非 GPS 转换.
演示¶
下面是一段快速视频,展示了本教程的预期效果:
有关 ardupilot_ros 软件包参见 ardupilot_ros 的 github 页面.