安装(macOS)

目标 安装 webots_ros2 软件包,并在 macOS 上运行模拟示例。

辅导水平: 高级

时间 10 分钟

背景介绍

"(《世界人权宣言》) webots_ros2 包提供了 ROS 2 和 Webots 之间的接口。它包括几个子软件包,其中包括 webots_ros2_driver可以启动 Webots 并与其通信。其他子软件包主要是示例,展示了使用接口的多种可能实现。在本教程中,您将安装该软件包,并学习如何运行其中一个示例。

先决条件

建议先了解初级课程中涉及的 ROS 基本原理。 教程.特别是 创建工作区创建软件包 是有用的先决条件。

必须在 Mac 上安装 Webots 本机,才能使用 webots_ros2 软件包。您可以按照 安装程序从源头构建.

任务

在 macOS 上,与本机安装 macOS 相比,基于 UTM 虚拟机的解决方案可改善 ROS 2 的用户体验,因为它是在 Linux 环境中运行 ROS 的。不过,Webots 应原生安装在 macOS 上,并能与虚拟机(VM)中运行的 ROS 节点通信。该解决方案可为 Webots 提供原生 3D 硬件加速。虚拟机运行所有 ROS 部分(包括 RViz),并通过 TCP 连接到主机以启动 Webots。共享文件夹允许脚本将世界和其他资源文件从虚拟机传输到运行 Webots 的 macOS 上。

下面的步骤将介绍如何创建虚拟机映像,并在其中安装 webots_ros2 发布的软件包。也可以从源代码中安装。

1 创建虚拟机映像

在 MacOS 机器上安装 UTM。链接可在 UTM 官方网站.

下载 Ubuntu 22.04 为 "谦卑和滚动 "或 Ubuntu 20.04 用于 Foxy。请务必下载与您的 CPU 架构相对应的映像。

在 UTM 软件中:

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

  • 靴子 国际标准化组织 图片 field.

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

  • 共享 目录 窗口,选择一个将由 webots_ros2 将所有 Webots 资产转移到主机。在本例中,选定的文件夹是 /Users/username/shared.

  • 其余参数保持默认值。

  • 启动虚拟机。请注意,每次启动虚拟机时都可以选择另一个共享文件夹。

  • 在首次启动虚拟机时,安装 Ubuntu 并为账户选择一个用户名。在本例中,用户名是 乌托邦.

  • Ubuntu 安装完成后,关闭虚拟机,从 CD/DVD 区域移除 iso 映像,然后重新启动虚拟机。

2 配置虚拟机

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

  • 在已启动的虚拟机中打开终端,按照以下说明安装所需的 ROS 2 发行版 Ubuntu(Debian 软件包):

  • 在虚拟机中创建一个文件夹作为共享文件夹。在本例中,虚拟机中的共享文件夹是 /home/ubuntu/shared.

    mkdir /home/ubuntu/shared
    
  • 要将该文件夹挂载到主机上,请执行以下命令。如果共享文件夹的路径不同,请不要忘记修改。

    sudo mount -t 9p -o trans=virtio share /home/ubuntu/shared -oversion=9p2000.L
    
  • 要在启动虚拟机时自动将此文件夹加载到主机,请在以下内容中添加一行 /etc/fstab.如果共享文件夹的路径与您的情况不同,请不要忘记修改。

    share /home/ubuntu/shared 9p trans=virtio,version=9p2000.L,rw,_netdev,nofail 0 0
    
  • 环境变量 共享文件夹 必须始终设置,软件包才能在虚拟机中正常运行。该变量指定共享文件夹的位置,该文件夹用于在主机和虚拟机(VM)之间交换数据,并将数据传输到 webots_ros2 软件包。该变量的值格式应为 <host 共同 文件夹>:<VM 共同 文件夹>;其中 <host 共同 文件夹>; 是主机上共享文件夹的路径,而 <VM 共同 文件夹>; 是虚拟机上同一共享文件夹的路径。

    在这个例子中

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

    您可以将此命令行添加到 ~/.bashrc 文件,以便在启动新终端时自动设置该环境变量。

3 安装 webots_ros2

您可以安装 webots_ros2 从官方发布的软件包中安装,或从以下网站的最新源代码中安装 Github.

在虚拟机终端运行以下命令

sudo apt-get install ros-jazzy-webots-ros2

4 启动 webots_ros2_universal_robot 范例

如前几节所述,软件包使用共享文件夹与虚拟机和主机之间的 Webots 进行通信。为了从虚拟机的 ROS 软件包启动主机上的 Webots,必须运行本地 TCP 模拟服务器。

服务器可在此处下载: local_simulation_server.py.在 WEBOTS_HOME 环境变量(例如 /Applications/Webots.app),然后在主机(而不是虚拟机)上的新终端中使用以下命令运行服务器:

export WEBOTS_HOME=/Applications/Webots.app
python3 local_simulation_server.py

在虚拟机中打开终端,执行以下命令启动软件包:

如果还没有创建 ROS 2 环境,请先创建。

source /opt/ros/jazzy/setup.bash

如果是从源代码安装的,请将您的 ROS 2 工作区作为源代码(如果尚未这样做)。

cd ~/ros2_ws
source install/local_setup.bash

如果尚未在 ~/.bashrc,设置 共享文件夹 (详见前几节)。请务必根据各自目录的位置更改路径。

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