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 的多重安装
Section titled “Webots 的多重安装”如果安装了多个版本的 Webots,ROS 2 会按以下顺序查找 Webots:
- 如果设置了
ROS2_WEBOTS_HOME环境变量,ROS 2 将使用该路径下的 Webots,无论其版本如何。 - 如果设置了
WEBOTS_HOME环境变量,ROS 2 将使用该路径下的 Webots,无论其版本如何。 - 如果以上变量都未设置,ROS 2 会在兼容版本的默认安装路径中查找 Webots:
C:\Program Files\Webots。 - 如果仍未找到 Webots,
webots_ros2会弹出一个窗口,提供自动安装最新兼容版本 Webots 的选项。
1 安装 WSL2
Section titled “1 安装 WSL2”在 Windows 上,通过 WSL(Windows Subsystem for Linux)运行 ROS 2 比直接安装体验更好,因为 WSL 本质上是 Linux 平台。
请安装与你的 ROS 发行版兼容的 Ubuntu 版本的 WSL,并按照微软官方教程升级到 WSL2。
2 在 WSL 中安装 ROS 2
Section titled “2 在 WSL 中安装 ROS 2”在 Ubuntu WSL 中安装 ROS 2,请参照 Ubuntu 安装(apt)。
3 安装 webots_ros2
Section titled “3 安装 webots_ros2”你可以安装官方发布的包,也可以从 Github 上的最新源码安装。
以下命令必须在 WSL 环境中运行。
安装 webots_ros2 发布包
Section titled “安装 webots_ros2 发布包”在终端中运行以下命令。
$ sudo apt-get install ros-{DISTRO}-webots-ros2从源码安装 webots_ros2
Section titled “从源码安装 webots_ros2”创建一个带有 src 目录的 ROS 2 工作空间。
$ mkdir -p ~/ros2_ws/src加载 ROS 2 环境。
$ source /opt/ros/{DISTRO}/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 {DISTRO}使用 colcon 构建包。
$ colcon build加载该工作空间。
$ source install/local_setup.bash4 启动 webots_ros2_universal_robot 示例
Section titled “4 启动 webots_ros2_universal_robot 示例”WSL 目前不支持硬件加速。
因此,Webots 应在 Windows 上启动,而 ROS 部分在 WSL 中运行。
为此,以下命令需要在 WSL 环境中运行。
首先加载 ROS 2 环境(如果尚未加载)。
$ source /opt/ros/{DISTRO}/setup.bash通过设置 WEBOTS_HOME 环境变量,可以指定要启动的 Webots 安装(例如 C:\Program Files\Webots)。
使用 /mnt 挂载点来引用原生 Windows 上的路径。
$ export WEBOTS_HOME=/mnt/c/Program\ Files/Webots如果是从源码安装的,请加载 ROS 2 工作空间(如果尚未加载)。
$ cd ~/ros2_ws$ source install/local_setup.bash使用 ROS 2 launch 命令启动演示包(例如 webots_ros2_universal_robot)。
$ ros2 launch webots_ros2_universal_robot multirobot_launch.py5 RViz 故障排除
Section titled “5 RViz 故障排除”对于较新版本的 WSL2,RViz 应该可以直接使用。
你可以运行任何一个使用 RViz 的示例来验证,例如:
$ sudo apt install ros-{DISTRO}-slam-toolbox$ ros2 launch webots_ros2_tiago robot_launch.py rviz:=true slam:=trueTiago 机器人可以用以下命令控制:
$ ros2 run teleop_twist_keyboard teleop_twist_keyboard对于较旧版本的 WSL,由于没有可用的显示环境,RViz2 可能无法直接使用。
要使用 RViz,可以升级 WSL 或启用 X11 转发。
升级 WSL
Section titled “升级 WSL”在 Windows shell 中:
$ wsl --update启用 X11 转发
Section titled “启用 X11 转发”对于较旧版本的 WSL,可以按照以下步骤操作:
- 安装 VcXsrv。
- 启动 VcXsrv。大部分参数可以保持默认,但在
Extra settings页面中,需要勾选Clipboard、Primary Selection和Disable access control,并取消勾选Native opengl。 - 可以保存配置以便后续启动时使用。
- 点击
Finish,系统托盘中会出现正在运行的 X11 服务器。 - 在 WSL 环境中,导出
DISPLAY变量。
$ export DISPLAY=$(ip route list default | awk '{print }'):0可以将其添加到 .bashrc 中,以便每次启动新的 WSL 环境时自动设置。
$ echo "export DISPLAY=$(ip route list default | awk '{print }'):0" >> ~/.bashrc