安装 (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 映像。 也可以从源安装它。 在:ref:“预配置图像”部分中,您可以找到每个版本的 Webots(从 R2023a 开始)的已配置图像以供下载。

1 创建 VM 映像

在您的 macOS 机器上安装 UTM。 可以在 官方 UTM 网站 上找到链接。

下载 Ubuntu 22.04 的 .iso 映像(适用于 Humble 和 Rolling)或 Ubuntu 20.04 的 .iso 映像。 确保下载与您的 CPU 架构相对应的映像。

在 UTM 软件中:

  • 创建新映像并选择 虚拟化 选项。

  • 启动 ISO 映像 字段中选择您已下载的 ISO 映像。

  • 将所有硬件设置保留为默认设置(包括禁用硬件加速)。

  • 在“共享目录”窗口中,选择一个文件夹,该文件夹将由“webots_ros2”用于将所有 Webots 资产传输到主机。

在此示例中,选定的文件夹是“/Users/username/shared”。 * 保留所有剩余参数的默认值。 * 启动虚拟机。 请注意,每次启动虚拟机时,您都可以选择另一个共享文件夹。 * 在第一次启动虚拟机时,安装 Ubuntu 并为您的帐户选择一个用户名。在此示例中,用户名是“ubuntu”。 * 安装 Ubuntu 后,关闭虚拟机,从 CD/DVD 字段中删除 iso 映像并重新启动虚拟机。

2 配置虚拟机

在本节中,ROS 2 安装在虚拟机中,并配置共享文件夹。 以下说明和命令都在虚拟机内运行。

  • 在启动的 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>`_的最新源安装它。

Run the following command in the VM terminal.

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 启动命令启动演示包 (e.g. webots_ros2_universal_robot).

ros2 launch webots_ros2_universal_robot multirobot_launch.py

如果 Webots 关闭或 ROS 2 进程中断,本地服务器将自动等待新包启动,并清理共享文件夹以备下次运行。

预配置图像

如果您不想从头开始设置 VM,以下链接为您提供了每个版本 Webots 的预配置 UTM 图像。 webots_ros2 版本是从官方存储库(而不是从源)安装的,通常是第一个与相应 Webots 版本兼容的版本。 欢迎您下载图像并升级软件包,或者在必要时从源安装。

将下载的镜像添加到 UTM 软件时,您还应该在下拉菜单中启动 VM 之前选择主机共享文件夹的路径(例如 /Users/username/shared)。 启动 VM 后,必须始终设置 WEBOTS_SHARED_FOLDER 环境变量,以使包在虚拟机 (VM) 中正常工作。 此变量为 webots_ros2 包指定用于在主机和 VM 之间交换数据的共享文件夹的位置。 此变量的值应采用 <host shared folder>:<VM shared folder> 的格式,其中 <host shared folder> 是主机上共享文件夹的路径,<VM shared folder> 是 VM 上相同共享文件夹的路径。

在预配置的镜像中,WEBOTS_SHARED_FOLDER 已在 ~/.bashrc 中设置。 您需要更新它以使用主机文件夹的正确路径:

export WEBOTS_SHARED_FOLDER=/Users/username/shared:/home/ubuntu/shared