Skip to content

Webots 安装(Windows)

目标: 安装 webots_ros2 包并在 Windows 上运行仿真示例。

教程级别: 进阶

预计时间: 10 分钟

webots_ros2 包提供了 ROS 2 与 Webots 之间的接口。

它包含多个子包,其中 webots_ros2_driver 用于让 ROS 节点与 Webots 通信。

其余子包主要是示例,展示该接口的各种用法。

本教程将指导你安装该包并运行其中一个示例。

建议先阅读 创建工作空间 和 创建你的第一个 ROS 2 包 这两篇教程。

使用 webots_ros2 包前需要先安装 Webots。

你可以按照安装指南或从源码编译进行安装。

也可以让 webots_ros2 自动下载 Webots。

当你启动该包的示例时,如果没有找到 Webots 安装,会自动弹出此选项。

如果安装了多个版本的 Webots,ROS 2 会按以下顺序查找 Webots:

  1. 如果设置了 ROS2_WEBOTS_HOME 环境变量,ROS 2 将使用该路径下的 Webots,无论其版本如何。
  2. 如果设置了 WEBOTS_HOME 环境变量,ROS 2 将使用该路径下的 Webots,无论其版本如何。
  3. 如果以上变量都未设置,ROS 2 会在兼容版本的默认安装路径中查找 Webots:C:\Program Files\Webots。
  4. 如果仍未找到 Webots,webots_ros2 会弹出一个窗口,提供自动安装最新兼容版本 Webots 的选项。

在 Windows 上,通过 WSL(Windows Subsystem for Linux)运行 ROS 2 比直接安装体验更好,因为 WSL 本质上是 Linux 平台。

请安装与你的 ROS 发行版兼容的 Ubuntu 版本的 WSL,并按照微软官方教程升级到 WSL2。

在 Ubuntu WSL 中安装 ROS 2,请参照 Ubuntu 安装(apt)。

你可以安装官方发布的包,也可以从 Github 上的最新源码安装。

以下命令必须在 WSL 环境中运行。

在终端中运行以下命令。

Terminal window
$ sudo apt-get install ros-{DISTRO}-webots-ros2

创建一个带有 src 目录的 ROS 2 工作空间。

Terminal window
$ mkdir -p ~/ros2_ws/src

加载 ROS 2 环境。

Terminal window
$ source /opt/ros/{DISTRO}/setup.bash

从 Github 获取源码。

Terminal window
$ cd ~/ros2_ws
$ git clone --recurse-submodules https://github.com/cyberbotics/webots_ros2.git src/webots_ros2

安装包依赖。

Terminal window
$ sudo apt install python3-pip python3-rosdep python3-colcon-common-extensions
$ sudo rosdep init && rosdep update
$ rosdep install --from-paths src --ignore-src --rosdistro {DISTRO}

使用 colcon 构建包。

Terminal window
$ colcon build

加载该工作空间。

Terminal window
$ source install/local_setup.bash

4 启动 webots_ros2_universal_robot 示例

Section titled “4 启动 webots_ros2_universal_robot 示例”

WSL 目前不支持硬件加速。

因此,Webots 应在 Windows 上启动,而 ROS 部分在 WSL 中运行。

为此,以下命令需要在 WSL 环境中运行。

首先加载 ROS 2 环境(如果尚未加载)。

Terminal window
$ source /opt/ros/{DISTRO}/setup.bash

通过设置 WEBOTS_HOME 环境变量,可以指定要启动的 Webots 安装(例如 C:\Program Files\Webots)。

使用 /mnt 挂载点来引用原生 Windows 上的路径。

Terminal window
$ export WEBOTS_HOME=/mnt/c/Program\ Files/Webots

如果是从源码安装的,请加载 ROS 2 工作空间(如果尚未加载)。

Terminal window
$ cd ~/ros2_ws
$ source install/local_setup.bash

使用 ROS 2 launch 命令启动演示包(例如 webots_ros2_universal_robot)。

Terminal window
$ ros2 launch webots_ros2_universal_robot multirobot_launch.py

对于较新版本的 WSL2,RViz 应该可以直接使用。

你可以运行任何一个使用 RViz 的示例来验证,例如:

Terminal window
$ sudo apt install ros-{DISTRO}-slam-toolbox
$ ros2 launch webots_ros2_tiago robot_launch.py rviz:=true slam:=true

Tiago 机器人可以用以下命令控制:

Terminal window
$ ros2 run teleop_twist_keyboard teleop_twist_keyboard

对于较旧版本的 WSL,由于没有可用的显示环境,RViz2 可能无法直接使用。

要使用 RViz,可以升级 WSL 或启用 X11 转发。

在 Windows shell 中:

Terminal window
$ wsl --update

对于较旧版本的 WSL,可以按照以下步骤操作:

  1. 安装 VcXsrv。
  2. 启动 VcXsrv。大部分参数可以保持默认,但在 Extra settings 页面中,需要勾选 Clipboard、Primary Selection 和 Disable access control,并取消勾选 Native opengl。
  3. 可以保存配置以便后续启动时使用。
  4. 点击 Finish,系统托盘中会出现正在运行的 X11 服务器。
  5. 在 WSL 环境中,导出 DISPLAY 变量。
Terminal window
$ export DISPLAY=$(ip route list default | awk '{print }'):0

可以将其添加到 .bashrc 中,以便每次启动新的 WSL 环境时自动设置。

Terminal window
$ echo "export DISPLAY=$(ip route list default | awk '{print }'):0" >> ~/.bashrc