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 的形式提供,并依赖于 Docker 或 Podman 容器。
一旦 Ubuntu 启动并运行,通过阅读 官方安装指南 来安装 ROS。
在 Wayland 上运行
尽管 ROS2 包在 Wayland 上运行良好,但图形应用程序(如 gazebo 或 rviz2)则不行。为了使它们正常工作,请将 环境变量 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 获得与 roscore、rosnode、rostopic、rosmsg、rospack、rosrun 和 rosservice 相当的功能。
$ 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