ROS 的问题

Issues with ROS

我和我的朋友正在建造一架自主飞机 (UAV),并且有兴趣将 ROS 用于我们的软件堆栈。但是,我在 ROS 和支持方面遇到了一些问题,想知道是否有人知道任何解决方案?

我们的飞机目前装有 Raspberry Pi 3(我可能会用更好的处理器替换它,但仍然是具有相同 GPIO 的 ARM SBC)。我们将 运行 常规 Raspbian(精简版)。我们计划使用 Navio2,这是一个运行开源 ArduPilot firmware/software 的自动驾驶仪 HAT。我们将混合使用 C++ 和 Python.

我目前的主要问题是:

  1. 有限的 RPi 支持 - Kinetic 是在 RPi 上运行的最新版本。 RPi 的文档也非常有限。
  2. 甚至没有真正使用 C++11,我想使用最新的 C++ 功能。
  3. 最近OpenCV 4出来了,想好好利用一下。 ROS 支持任何版本的 OpenCV 还是只有 3 个版本?
  4. 不使用Python 3.这对我来说是一件大事,并且使用Python 2 由于各种原因不是一个选项。

我也看过ROS2,它旨在解决上面列出的许多问题,但对我们来说似乎还不够成熟。

针对您的观点的一些回答:

  1. 旋律在 RPi 3 B+ 上受支持 Raspbian Lite。您可能需要进行一些 apt-repo 操作,但我的团队能够毫不费力地完成它。
  2. 没有什么能阻止您使用 C++17;只需适当更新 CMakeLists.txt 文件,将 -std=c++17 添加到 CXX_FLAGS
  3. 据我所知,发布的 ROS Melodic 支持 OpenCV3。 OpenCV4 支持可能需要一段时间才能可用——我仍然需要检查该项目以获取最新消息。
  4. 我还没有真正查看 Python3 支持。我认为它被推迟到 ROS2。

也就是说,我不会说 ROS2 的不成熟是取消它资格的一个很好的理由——我知道要获得足够的支持和所有预先存在的 ROS 包都移植到它还需要很长时间(这就是为什么我的团队不想考虑它)。

无论如何,我仍然会考虑您计划实施的任何算法是否真的需要 OpenCV4 功能,或者如果使用该版本只是 "nice to have." OpenCV3 并不是那么旧,据我所知,它可以处理所有最先进的东西,而不会使算法过度屈服于 API.

2018 年 12 月 28 日更新

粗略搜索一下,ROS Melodic 似乎确实有 Python3 支持(参见此 question): ROS has to be built from source with the environment variable ROS_PYTHON_VERSION=3 set (see also this