安装 (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

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 进程中断,本地服务器将自动等待新包启动,并清理共享文件夹以备下次运行。