安装 (macOS)
目标: 安装“webots_ros2”包并在 macOS 上运行模拟示例。
教程级别: 高级
时间: 10 分钟
背景
webots_ros2
软件包提供了 ROS 2 和 Webots 之间的接口。
它包含几个子软件包,包括 webots_ros2_driver
,它允许您启动 Webots 并与其通信。
其他子软件包主要是使用接口展示多种可能实现的示例。
在本教程中,您将安装该软件包并学习如何运行其中一个示例。
先决条件
建议了解初学者 教程 中涵盖的基本 ROS 原理。 尤其是 创建工作区 和 创建包 是实用的先决条件。
需要在 Mac 上本地安装 Webots,才能在虚拟机中使用 webots_ros2
包,如下所述。
任务
在 macOS 上,与原生 macOS 安装相比,基于 UTM 虚拟机的解决方案在 Linux 环境中运行 ROS,因此可提供更好的 ROS 2 用户体验。 但是,Webots 应该在 macOS 上本地安装,并且它将能够与虚拟机 (VM) 中运行的 ROS 节点进行通信。 此解决方案允许为 Webots 提供原生 3D 硬件加速。 VM 运行所有 ROS 部分(包括 RViz)并通过 TCP 连接到主机以启动 Webots。 共享文件夹允许脚本将世界和其他资源文件从 VM 传输到运行 Webots 的 macOS。
以下步骤说明如何使用“webots_ros2”发布包的安装创建 VM 映像。 也可以从源安装它。
1 创建 VM 映像
在您的 macOS 机器上安装 UTM。 链接可以在“官方 UTM 网站 <https://mac.getutm.app/>”上找到。
下载适用于 Humble 和 Rolling 的 Ubuntu 22.04 或适用于 Foxy 的 Ubuntu 20.04 的 .iso 映像。 请务必下载与您的 CPU 架构相对应的映像。
在 UTM 软件中:
创建新映像并选择
Virtualize
选项。在
Boot ISO Image
字段中选择您已下载的 ISO 映像。将所有硬件设置保留为默认设置(包括禁用硬件加速)。
在
Shared Directory
窗口中,选择一个文件夹,该文件夹将由webots_ros2
用于将所有 Webots 资产传输到主机。
在此示例中,选定的文件夹是 /Users/username/shared
。
* 将所有剩余参数保留为默认值。
* 启动 VM。
请注意,每次启动 VM 时,您都可以选择另一个共享文件夹。
* 在首次启动 VM 时,安装 Ubuntu 并为您的帐户选择一个用户名。在此示例中,用户名为“ubuntu”。
* 安装 Ubuntu 后,关闭 VM,从 CD/DVD 字段中删除 iso 映像,然后重新启动 VM。
2 配置 VM
在本节中,ROS 2 安装在 VM 中,并配置了共享文件夹。 以下说明和命令都在 VM 内运行。
在启动的 VM 中打开一个终端,并按照 Ubuntu(DEB软件包) 中的说明安装所需的 ROS 2 发行版:
在 VM 中创建一个文件夹用作共享文件夹。
在此示例中,VM 中的共享文件夹是“/home/ubuntu/shared”。
mkdir /home/ubuntu/shared
要将此文件夹挂载到主机,请执行以下命令。
如果您的情况不同,请不要忘记修改共享文件夹的路径。
sudo mount -t 9p -o trans=virtio share /home/ubuntu/shared -oversion=9p2000.L
要在启动 VM 时自动将此文件夹挂载到主机,请将以下行添加到“/etc/fstab”。
如果您的情况不同,请不要忘记修改共享文件夹的路径。
share /home/ubuntu/shared 9p trans=virtio,version=9p2000.L,rw,_netdev,nofail 0 0
必须始终设置环境变量“WEBOTS_SHARED_FOLDER”以使包在 VM 中正常工作。
此变量指定用于在主机和虚拟机 (VM) 之间向“webots_ros2”包交换数据的共享文件夹的位置。 此变量要使用的值应采用“<主机共享文件夹>:<VM 共享文件夹>”格式,其中“<主机共享文件夹>”是主机上共享文件夹的路径,“<VM 共享文件夹>”是 VM 上同一共享文件夹的路径。
在此示例中:
export WEBOTS_SHARED_FOLDER=/Users/username/shared:/home/ubuntu/shared
您可以将此命令行添加到``~/.bashrc``文件中,以便在启动新终端时自动设置此环境变量。
3 安装``webots_ros2``
您可以从官方发布的软件包安装``webots_ros2``,也可以从`Github <https://github.com/cyberbotics/webots_ros2>`_的最新源安装它。
在 VM 终端中运行以下命令。
sudo apt-get install ros-rolling-webots-ros2
安装 git。
sudo apt-get install git
创建一个 ROS 2 工作区及其“src”目录。
mkdir -p ~/ros2_ws/src
获取 ROS 2 环境。
source /opt/ros/rolling/setup.bash
从 Github 检索源。
cd ~/ros2_ws
git clone --recurse-submodules https://github.com/cyberbotics/webots_ros2.git src/webots_ros2
安装软件包依赖项。
sudo apt install python3-pip python3-rosdep python3-colcon-common-extensions
sudo rosdep init && rosdep update
rosdep install --from-paths src --ignore-src --rosdistro rolling
使用“colcon”构建包。
colcon build
提供该工作区。
source install/local_setup.bash
4 启动``webots_ros2_universal_robot``示例
如前几节所述,该包使用共享文件夹与从 VM 到主机的 Webots 进行通信。
为了从 VM 的 ROS 包在主机上启动 Webots,必须运行本地 TCP 模拟服务器。
可以在此处下载服务器:local_simulation_server.py。 在“WEBOTS_HOME”环境变量中指定 Webots 安装文件夹(例如“/Applications/Webots.app”),并在主机(而不是虚拟机)上的新终端中使用以下命令运行服务器:
export WEBOTS_HOME=/Applications/Webots.app
python3 local_simulation_server.py
在虚拟机中,打开终端并执行以下命令来启动包:
首先获取 ROS 2 环境(如果尚未完成)。
source /opt/ros/rolling/setup.bash
如果从来源安装,请提供您的 ROS 2 工作区(如果尚未完成)。
cd ~/ros2_ws
source install/local_setup.bash
如果尚未在“~/.bashrc”中设置,请设置“WEBOTS_SHARED_FOLDER”(有关详细信息,请参阅前面的部分)。 请务必根据各自目录的位置更改路径。
export WEBOTS_SHARED_FOLDER=/Users/username/shared:/home/ubuntu/shared
使用 ROS 2 启动命令启动演示包(例如“webots_ros2_universal_robot”)。
ros2 launch webots_ros2_universal_robot multirobot_launch.py
如果 Webots 关闭或 ROS 2 进程中断,本地服务器将自动等待新包启动,并清理共享文件夹以备下次运行。