跳转至内容

ROS

来自 ArchWiki

本文或本章节已过时。

原因: AUR 中已移除重要软件包 + 暗示 python2 兼容性。如果任何标志发生更改,则需要检查说明 (在 Talk:ROS 中讨论)

ROS 是机器人开源的元操作系统。它提供了操作系统应有的服务,包括硬件抽象、低级设备控制、常用功能的实现、进程间消息传递以及包管理。

ROS 1

安装

您可以通过 安装 ros-noetic-desktop-fullAUR[链接已损坏: 找不到软件包] 来安装。它也通过非官方用户存储库提供:非官方用户存储库#arch4edu

Melodic 中的 catkin_make

正如 ROS wiki 所指定的,在干净的工作空间中,第一个 catkin_make 命令应该是

$ catkin_make -DPYTHON_EXECUTABLE=/usr/bin/python3 -DBOOST_ROOT=/opt/boost1.69 -DBoost_NO_SYSTEM_PATHS=TRUE

后续构建应仅使用

$ catkin_make

在 IDE 中使用 Catkin/ROS

CLion

为了让 CLionAUR 支持 ROS 包,您可以按如下方式更改其桌面文件的 Exec 参数。

~/.local/share/applications/jetbrains-clion.desktop
Exec=bash -i -c "source /home/user/catkin_ws/devel/setup.sh;/opt/clion/bin/clion.sh" %f

但是,/home/user/catkin_ws 必须替换为您自己的 Catkin 工作空间。您现在可以打开 Catkin 项目,而不会出现 cmake 抱怨缺少软件包的情况,希望如此。如果需要或想要使用 Python 3,可以将 -DPYTHON_EXECUTABLE=/usr/bin/python3 添加到 CMake 选项中,这些选项可以在设置中找到。

Melodic 中的 catkin build

要使用 catkin build 环境配置系统,您需要像平常一样配置 catkin 工作空间并运行

$ catkin config -DPYTHON_EXECUTABLE=/usr/bin/python3 -DBOOST_ROOT=/opt/boost1.69 -DBoost_NO_SYSTEM_PATHS=TRUE

之后,像往常一样使用 catkin build。请记住,每当您删除配置文件(即 catkin_ws 目录)时,都需要重新配置您的 catkin。

更新共享库后重建

当您更新 ROS 所依赖的库(例如 Boost)时,所有链接到它的包都必须重新构建。大多数 AUR 助手不会检测到这种情况。以下脚本将生成一个已链接到丢失 so 文件的所有包的列表

https://seangreenslade.com/h/snippets/ros-find-outofdate.py

(请注意,该脚本需要安装 pyalpm。)

ROS 2

安装

使用 AUR 构建

ros2-ironAUR[链接已损坏: 找不到软件包] 包旨在提供一种在 Arch Linux 上安装 ROS 2 的便捷方法。安装软件包后,您需要配置您的环境(即 *source*),以便使用 ROS 2 — 请参阅 #使用示例

Distrobox

Distrobox 允许您在终端中使用任何 Linux 发行版 [1],包括 Ubuntu,这使得可以本地运行 ROS2。 Distrobox 在官方存储库中以 distrobox 的形式提供,并依赖于 DockerPodman 容器。

一旦 Ubuntu 启动并运行,通过阅读 官方安装指南 来安装 ROS。

在 Wayland 上运行

尽管 ROS2 包在 Wayland 上运行良好,但图形应用程序(如 gazeborviz2)则不行。为了使它们正常工作,请将 环境变量 QT_QPA_PLATFORM 设置为 xcb。之后您可以使用以下命令测试结果

$ rviz2

使用示例

首先 source 工作空间,或将目录更改到之前安装的位置。

如果您使用的是 zsh,请将 source /opt/ros2/foxy/setup.bash 更改为 source /opt/ros2/foxy/setup.zsh

$ source /opt/ros2/foxy/setup.bash

一个 source 工作空间的技巧是将类似以下的函数添加到您的 shell 启动文件中,例如 .bashrc、.zshrc。

ros2_on(){
     export ROS_DOMAIN_ID=42
     export ROS_VERSION=2
     export ROS_PYTHON_VERSION=3
     export ROS_DISTRO=foxy
     source /opt/ros2/foxy/setup.bash
}

请记住进行任何适用的更改,特别是将 ROS_DISTRO 变量更改为您已安装的发行版。

您可以将 ROS_DOMAIN_ID 更改为您喜欢的数字,或您实际使用的数字。

可以通过 ros2 获得与 roscorerosnoderostopicrosmsgrospackrosrunrosservice 相当的功能。

$ ros2 -h
usage: ros2 [-h] Call `ros2 <command> -h` for more detailed usage. ... 

ros2 is an extensible command-line tool for ROS 2.

optional arguments:
  -h, --help            show this help message and exit

Commands:
  daemon    Various daemon related sub-commands
  msg       Various msg related sub-commands
  node      Various node related sub-commands
  pkg       Various package related sub-commands
  run       Run a package specific executable
  security  Various security related sub-commands
  service   Various service related sub-commands
  srv       Various srv related sub-commands
  topic     Various topic related sub-commands

  Call `ros2 <command> -h` for more detailed usage.

一个典型的“Hello World”示例从运行一个发布者节点开始

$ ros2 topic pub /chatter 'std_msgs/String' "data: 'Hello World'"

然后在另一个终端中,您可以运行一个订阅者(请勿忘记在每个新终端中 source 工作空间)

$ ros2 topic echo /chatter

列出现有节点

$ ros2 node list
publisher_std_msgs_String

列出主题

$ ros2 topic list
/chatter

ROS 2 的 rviz 版本是

$ rviz2