ROS

来自 ArchWiki

此文章或章节已过时。

原因: 暗示 python2 兼容性。需要检查指令中的任何标志是否已更改(在 Talk:ROS 中讨论)

ROS 是一个开源的、用于你的机器人的元操作系统。它提供了你期望从操作系统获得的服务,包括硬件抽象、底层设备控制、常用功能的实现、进程间消息传递和软件包管理。

ROS 1

安装

你可以安装 install 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 不会再抱怨缺少软件包。如果需要,你可以通过在 CMake 选项中添加 -DPYTHON_EXECUTABLE=/usr/bin/python3 来使用 Python 3,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 更改为你喜欢的数字,或你实际使用的数字。

类似于 roscorerosnoderostopicrosmsgrospackrosrunrosservice 的功能可以通过 ros2 获得

$ 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