安装 (Windows)

目标: 安装“webots_ros2”包并在 Windows 上运行模拟示例。

教程级别: 高级

时间: 10 分钟

背景

webots_ros2 软件包提供了 ROS 2 和 Webots 之间的接口。 它包含几个子包,包括 webots_ros2_driver,允许 ROS 节点与 Webots 通信。 其他子包主要是使用接口展示多种可能实现的示例。 在本教程中,您将安装该软件包并学习如何运行其中一个示例。

先决条件

建议了解初学者 教程 中涵盖的基本 ROS 原理。 尤其是 创建工作区创建包 都是很有用的先决条件。

Webots 是使用 webots_ros2 包的先决条件。

您可以按照 安装过程从源代码构建

或者,您也可以让 webots_ros2 自动下载 Webots。

当您启动包的示例并且未找到 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 自动安装。

任务

1 安装 WSL2

在 Windows 上,WSL(适用于 Linux 的 Windows 子系统)与原生 Windows 安装相比,改善了 ROS 2 的用户体验,因为它在 Linux 平台上运行。 使用与您的 ROS 发行版兼容的 Ubuntu 版本安装 WSL,并按照`官方 Microsoft 教程 <https://learn.microsoft.com/en-us/windows/wsl/install>`_ 升级到 WSL2。

2 在 WSL 中安装 ROS 2

在 Ubuntu WSL 中安装 ROS 2,按照 Ubuntu(DEB软件包) 操作。

3 安装 webots_ros2

然后,您可以从官方发布的软件包安装 webots_ros2,也可以从 Github 的最新源安装它。

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

在终端中运行以下命令。

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

4 启动“webots_ros2_universal_robot”示例

WSL 尚不支持硬件加速。 因此,应在 Windows 上启动 Webots,同时 ROS 部分在 WSL 内运行。 为此,必须在 WSL 环境中运行以下命令。

如果尚未完成,请首先获取 ROS 2 环境。

source /opt/ros/rolling/setup.bash

设置“WEBOTS_HOME”环境变量允许您启动特定的 Webots 安装(例如“C:Program FilesWebots”)。 使用挂载点“/mnt”来引用本机 Windows 上的路径。

export WEBOTS_HOME=/mnt/c/Program\ Files/Webots

如果从来源安装,请提供您的 ROS 2 工作区(如果尚未完成)。

cd ~/ros2_ws
source install/local_setup.bash

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

ros2 launch webots_ros2_universal_robot multirobot_launch.py

5 RViz 故障排除

使用最新版本的 WSL2,RViz 应该可以开箱即用。

您可以通过运行任何使用 RViz 的示例来检查它是否正常工作,例如:

sudo apt install ros-rolling-slam-toolbox
ros2 launch webots_ros2_tiago robot_launch.py rviz:=true slam:=true

Tiago 机器人可以使用以下方式控制:

ros2 run teleop_twist_keyboard teleop_twist_keyboard

对于较旧的 WSL 版本,RViz2 可能无法直接工作,因为没有可用的显示。要使用 RViz,您可以升级 WSL 或启用 X11 转发。

在 Windows shell 中:

wsl --update