概述
在我开始探索机器人这个领域时,尤其是做Webots上的机器人仿真时,发现中文互联网对苹果党不是很友好。基本没有什么中文的基于MacOS的Webots ROS2的安装指南。折腾了好久,总算摸索出了一条路。特此记录,希望能帮助后来者。这是Webots系列的第一篇,后续会有腾讯云服务器上相关的内容。
在这篇文章中,我们将深入解析如何在MacBook Pro(MacOS系统)上安装和配置Webots和ROS2。Webots是一种基于开源软件的机器人模拟器,可帮助开发者在三维环境中进行机器人建模和编程。ROS2,即开源的机器人操作系统的第二个版本,是一款为满足机器人系统的设计需求而创建的灵活的框架。
我们将向你展示从下载所需软件包,到解决可能遇到的安装问题的详细步骤。这篇指南中,我们还会介绍如何连接Webots和ROS2以及如何运行基础的模拟实例。对于希望在MacOS上使用Webots和ROS2进行机器人开发和模拟的读者,此博客将成为一份宝贵的资源。
无论你是已经深入了解机器人开发,还是初次踏入这个领域,我们都会以浅显易懂的方式,将这个稍显复杂的安装过程分解为一步步的操作指南。所以,让我们一起开始这个旅程,打开MacOS上的Webots和ROS2的大门。
前置条件
我的MacBook Pro的软硬件环境如下:
安装Webots
进入https://cyberbotics.com/#download,点击下载Webots 2023b的MacOS版本,即 macOS Bundle (.dmg)。
安装完成后,点击瓢虫图标,即可进入Webots。
安装UTM及ubuntu22.04版本的虚拟机
安装UTM
进入 https://mac.getutm.app/ ,点击【Download】下载 ,然后安装。
安装完成后,可以看到如下界面。
下载ubuntu22.04版本的虚拟机
下载Ubuntu 22.04.3 LTS (Jammy Jellyfish) 64-bit PC (AMD64) desktop image(iso镜像)
进入 https://cdimage.ubuntu.com/jammy/daily-live/current/ ,点击 64-bit PC (AMD64) desktop image 下载镜像。
安装ubuntu22.04版本的虚拟机
进入UTM,点击【创建一个新虚拟机】,
点击【虚拟化】,
点击【Linux】,
点击【启动ISO映像】的【浏览】,选择jammy-desktop-amd64.iso,然后点击右下角【继续】,
不修改缺省配置,点击右下角【继续】,
可以不修改缺省配置,点击右下角【继续】,我这里将Storage从64GB改为32GB只是我的硬盘快满了。
MacBook Pro本地创建一个文件夹shared。我是创建了/Users/用户名/Workspace/shared目录,然后用这个空目录。
共享目录这里是一个关键配置,点击【浏览...】,选择/Users/用户名/Workspace/shared目录,点击右下角【继续】。
填写【总结】中的【名称】为buzzfrog-ubuntu,你也可以填写你喜欢的名字。点击右下角【保存】
点击大大的黑色圆圈中的三角Play按钮。
等待一会儿,进入如下界面。选择*Try or Install Ubuntu 。
等待一会儿,进入如下界面。选择左侧【中文(简体)】,选择【Install Ubuntu】(或者【安装Ubuntu】)。
选择右下角【继续】。
这里如果不在乎速度,可以使用缺省选择。选择【最小安装】,取消【安装Ubuntu时下载更新】。点击右下角【继续】。
选择【清除整个磁盘并安装Ubuntu】,选择右下角【现在安装】。
点击【继续】。
填入Shang-hai。注意其中有减号。点击【继续】。
按下图填入。点击右下角【继续】。
等待安装完成……
安装完成,点击【现在重启】。
清除CD/DVD。
点击【buzzfrog】,输入你之前设置的密码,进入UTM的ubuntu。
点击右上角【跳过(S)】。
点击右上角【前进(N)】
点击右上角【前进(N)】
点击右上角【前进(N)】
点击右上角【完成(D)】
安装ROS2
点击左下角【显示应用程序】,
点击【终端】。
设置locale
确保您有一个支持 UTF-8 .如果您处于最小环境(例如 docker 容器)中,则区域设置可能是最小的环境,例如 POSIX .我们使用以下设置进行测试。但是,如果您使用的是其他支持 UTF-8 的区域设置,则应该没问题。
代码语言:txt复制locale # check for UTF-8
sudo apt update && sudo apt install locales
sudo locale-gen en_US en_US.UTF-8
sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
export LANG=en_US.UTF-8
locale # verify settings
设置源
您需要将 ROS 2 apt 存储库添加到您的系统中。
首先,确保 Ubuntu Universe 存储库已启用。
代码语言:txt复制sudo apt install software-properties-common
sudo add-apt-repository universe
现在使用 apt 添加 ROS 2 GPG 密钥。
代码语言:txt复制sudo apt update && sudo apt install curl -y
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
然后将存储库添加到源列表。
代码语言:txt复制echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
安装 ROS 2 软件包
设置存储库后,更新 apt 存储库缓存。
代码语言:txt复制sudo apt update
ROS 2 软件包建立在经常更新的 Ubuntu 系统上。始终建议您在安装新软件包之前确保您的系统是最新的。
代码语言:txt复制sudo apt upgrade
桌面安装:ROS、RViz、演示、教程。
代码语言:txt复制sudo apt install ros-humble-desktop
环境设置
获取安装脚本
代码语言:txt复制# Replace ".bash" with your shell if you're not using bash
# Possible values are: setup.bash, setup.sh, setup.zsh
source /opt/ros/humble/setup.bash
尝试一些例子
talker-listener案例
在一个终端中,
代码语言:txt复制source /opt/ros/humble/setup.bash
ros2 run demo_nodes_cpp talker
在另一个终端中,
代码语言:txt复制source /opt/ros/humble/setup.bash
ros2 run demo_nodes_py listener
安装webots_ros2的仿真程序
在 VM 中创建一个文件夹以用作共享文件夹。在此示例中,VM 中的共享文件夹为 /home/buzzfrog/shared 。
代码语言:txt复制mkdir /home/buzzfrog/shared
要将此文件夹挂载到主机,请执行以下命令。
代码语言:txt复制sudo mount -t 9p -o trans=virtio share /home/buzzfrog/shared -oversion=9p2000.L
若要在启动 VM 时自动将此文件夹装载到主机,请将以下行添加到 /etc/fstab 。
代码语言:txt复制share /home/buzzfrog/shared 9p trans=virtio,version=9p2000.L,rw,_netdev,nofail 0 0
必须始终设置环境变量 WEBOTS_SHARED_FOLDER ,才能使包在 VM 中正常工作。此变量指定共享文件夹的位置,该文件夹用于在主机和虚拟机 (VM) 之间交换 webots_ros2 包中的数据。用于此变量的值应采用 的格式,其中 <host shared folder> 是主机上共享文件夹的路径, <host shared folder>:<VM shared folder> 是 <VM shared folder> VM 上同一共享文件夹的路径。
代码语言:txt复制export WEBOTS_SHARED_FOLDER=/Users/username/shared:/home/buzzfrog/shared
您可以将此命令行添加到文件中, ~/.bashrc 以便在启动新终端时自动设置此环境变量。
您可以从官方发布的软件包安装 webots_ros2,在 VM 终端中运行以下命令。
代码语言:txt复制sudo apt-get install ros-humble-webots-ros2
启动 webots_ros2_universal_robot 示例
首先获取 ROS 2 环境
代码语言:txt复制source /opt/ros/humble/setup.bash
如果尚未在 ~/.bashrc 中设置,请设置 WEBOTS_SHARED_FOLDER 。
代码语言:txt复制export WEBOTS_SHARED_FOLDER=/Users/username/shared:/home/buzzfrog/shared
使用 ROS 2 launch 命令启动演示( webots_ros2_universal_robot )。
代码语言:txt复制ros2 launch webots_ros2_universal_robot multirobot_launch.py
然后,在MacBook Pro中,打开Webots,选择【文件】,选择【打开世界……】,打开shared文件夹,点击*.wbt文件。然后点击运行按钮。
参考文档
https://cyberbotics.com/
https://www.ros.org/
https://webots.cloud/
https://docs.ros.org/en/humble/Installation/Ubuntu-Install-Debians.html
https://docs.ros.org/en/humble/Tutorials/Advanced/Simulators/Webots/Installation-MacOS.html
https://discourse.ros.org/t/turtlebot3-and-webots/17880