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 提供,并依赖于 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 更改为你喜欢的数字,或你实际使用的数字。
类似于 roscore
、rosnode
、rostopic
、rosmsg
、rospack
、rosrun
和 rosservice
的功能可以通过 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