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)进行更改:

更改上述数值后,重新启动飞行控制器。

警告

上述参数建议用于 SITL。如果您打算在真正的旋翼飞行器上使用,最好设置第二个 EKF 源。这样,如果您提供的外部里程计停止发布或丢失,机器人就不会崩溃。

有关以下方面的详细信息,请参阅此链接 常见的 EKF 信号源 以及本指南 GPS / 非 GPS 转换.

演示

下面是一段快速视频,展示了本教程的预期效果:

有关 ardupilot_ros 软件包参见 ardupilot_ros 的 github 页面.