如何构建具有 ROS2 和(室内)导航功能的无人机

How to build a drone with ROS2 and (indoor) navigation function

我叫 chaos,我正在学习如何使用 ROS2 控制无人机。

我目前的目标是掌握室内无人机导航。我对此没有任何经验,所以我找到并尝试了 The Construct 的 ROS问答系列「二维无人机导航」。这非常有帮助,我学会了如何使用 ROS 1 构建无人机。
2D无人机导航:https://www.youtube.com/watch?v=dND4oCMqmRs&t=71s

但我是ROS初学者,很多人,包括官方ROS2教程,都推荐从ROS2开始。

所以这是我的问题:

1. 如何使用 ROS2 重现「2D 无人机导航」中引入的功能?是否有任何向后兼容的 ROS 包可以在 ROS2 中运行? 例如,我在 turtlebot3_navigation2 ROS2 分支中找不到「gmapping、amcl 和 move_base」包或脚本。如果有这方面的最佳实践,请告诉我。
ROS1 turtlebot_navigation
ROS2 turtlebot3_navigation2

2. 接下来,我将尝试“[ROS 项目] - 使用基于 ROS 的 Parrot AR.Drones 执行 LSD-SLAM”。 和问题1一样,我想知道这些指令有没有ROS2版本的。
Performing LSD-SLAM with a ROS based Parrot AR.Drones

3. 我的最终目标是实现类似下面视频的内容。是否有任何 ROS2 软件包可以帮助更轻松地使用无人机进行室内导航?
drone indoor navigation with ROS

最后,我有一个关于选择无人机核心的问题。

我正在通过观看 micro-ros 教程和使用 micro-ros 演示中使用的宏 MAV「Crazyflie」来学习如何使用 ROS2 构建我的无人机。
demo link

我打算以后改用PX4,因为PX4支持ROS2,像「Crazyflie」一样和ROS2通信。 (overview)

Ardupilot 以后好像会支持 ROS2,但还是用 MAVROS,下面的视频里叫「Not future proof」(DDS/ROS2 bridge vs MAVROS)。因此,我认为PX4是目前最好的选择。如果我的结论有误,请告诉我。

DDS/ROS2 bridge vs MAVROS 3:01 ~

ROS2 MAVROS support for Ardupilot

非常感谢您的帮助。我希望我没有问太多问题。

由于您的问题比较宽泛,我将逐一列出并回答每个部分。

  1. 你这里说的其实是向前兼容的ROS节点(ROS1 nodes that work with ROS2)。虽然从表面上看,ROS1 和 ROS2 相似,但语法差异非常明显;后端也有很大差异。 ROS2 还没有您在 ROS1 中注意到的完全充实的社区支持。不过还有一些类似的包比如the Nav2 package.
  2. 就像我上一个回答一样,您会发现 ROS2 的“现成”解决方案更少。话虽这么说,Nav2 包确实做了一些 SLAM。还有the robot_devkit.
  3. ROS1 的一个更好的本地规划器是 teb。虽然他们说有计划将其移植到 ROS2,但他们正在等待 Nav2 构建更加稳定。我知道 the nav2_planner,但是,我从未使用过它,也不能说它的效果如何(如果有的话)。

很遗憾,我无法回答你的最后一个问题,因为我的 ROS 经验完全是在地面上的自动驾驶车辆。