您正在阅读的是开发版本的文档。有关最新发布的版本,请访问 Jazzy.
安装(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-rolling-webots-ros2
安装 git。
sudo apt-get install git
创建一个 ROS 2 工作区,其 来源
目录。
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 build
本工作区的来源。
source install/local_setup.bash
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/rolling/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 进程中断,本地服务器将自动等待新软件包启动,并为下一次运行清理共享文件夹。