使用Docker安装ROS2 (ros-humble) 并开启对Wayland的支持

前言

ROS (Robot Operating System) 是主流的机器人开发框架之一。
截止目前(2020.10),已经推出了ros-humble版本,ROS2相比ROS1有很大的不同,安装方法也有一些差异。具体的关于ROS的介绍请自行搜索,资料非常多。

Wayland是一款全新的Display Server,和X Window平级。所以网上的对X11的GUI支持并不适用于基于Wayland的桌面。目前,本人并没有发现网上有关于如何在wayland桌面下开启GUI支持的中文资料(可能是本人搜索能力欠佳),所以本文介绍如何快速安装ROS2 (ros-humble) 并开启GUI (wayland)支持。

环境

注意:本文只适用于基于wayland的桌面(如plasma-wayland),基于X11的桌面请转到其它教程

本人的环境:
操作系统: Kali GNU/Linux 2022.3
内核: Linux 6.0.1-surface x86_64
Docker:Docker version 20.10.20, build 9fdeb9c
KDE Plasma Version: 5.26.0
KDE Frameworks Version: 5.98.0
Qt Version: 5.15.4
Graphics Platform: Wayland

Docker请自行安装,本文不介绍。

安装ROS2

本教程只介绍使用Docker安装ROS2,其它可用方法请转到其它教程。

拉取image(有无-full关系不大):

sudo docker pull osrf/ros:humble-desktop-full

创建container(这步尤其注意):

docker run -it --name ros-humble \
           -v SLAM-vol:/root/SLAM \
           -e XDG_RUNTIME_DIR=/tmp \
           -e WAYLAND_DISPLAY=$WAYLAND_DISPLAY \
           -v $XDG_RUNTIME_DIR/$WAYLAND_DISPLAY:/tmp/$WAYLAND_DISPLAY \
           -e QT_QPA_PLATFORM=wayland \
           osrf/ros:humble-desktop-full

打开container:

docker start ros-humble

进入container:

docker exec -it ros-humble bash

(可选)为了方便,我们可以把source /ros_entrypoint.sh加入~/.bashrc

然后验证安装,输入ros2会出现:

ros2命令输出
ros-humble安装成功。

启用GUI

如果我们直接输入:

ros2 run turtlesim turtlesim_node

会出现类似这样的输出:

qt.qpa.plugin: Could not find the Qt platform plugin “wayland” in “”
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.

Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, xcb.

[ros2run]: Aborted

网上很多教程可能会说要改各种环境变量,其实并不是!

这说明没有安装qtwayland,那么安装qtwayland

apt install qtwayland5

然后就可以顺利启动小乌龟了:

ros2 run turtlesim turtlesim_node

小乌龟启动成功

### 安装和配置Docker中的ROS 2 Humble #### 拉取包含ROS 2 HumbleDocker镜像 为了在Docker容器中安装运行ROS 2 Humble,可以使用`docker pull`命令来获取官方提供的预构建镜像。具体来说,可以通过以下命令拉取包含ROS 2 Humble桌面版全部功能的Ubuntu Jammy版本镜像: ```bash sudo docker pull osrf/ros:humble-desktop-full-jammy ``` 此操作会下载一个已经包含了所有必要依赖项以及工具链在内的环境,使得开发者可以直接在这个环境中开发基于ROS的应用程序[^1]。 #### 启动带有图形界面支持Docker容器 为了让RViz或其他GUI应用程序正常工作,在启动容器时需要传递额外参数以启用X11转发或者更现代的方式——Wayland协议的支持。对于后者而言,则需确保主机操作系统也启用了相应服务,通过如下方式创建新的交互式shell session: ```bash xhost +local:root # 允许来自本地用户的连接请求 sudo docker run -it \ --env=DISPLAY=$DISPLAY \ --name ros_humble_container \ osrf/ros:humble-desktop-full-jammy ``` 如果想要采用Wayland作为显示服务器的话,则应调整上述指令中的部分选项为: ```bash sudo docker run -it \ --security-opt seccomp=unconfined \ --privileged \ --device /dev/dri:/dev/dri \ --env="WAYLAND_DISPLAY=$WAYLAND_DISPLAY" \ --volume="$HOME/.config/wayland:/home/$USER/.config/wayland" \ --name ros_humble_wayland_container \ osrf/ros:humble-desktop-full ``` 这里需要注意的是,由于安全性和权限方面的原因,某些情况下可能还需要进一步设置才能让Wayland正确运作于容器内部[^2]。 #### 验证安装成功与否 进入新打开的终端之后就可以尝试执行简单的测试命令验证是否一切就绪了: ```bash source /opt/ros/humble/setup.bash ros2 run demo_nodes_cpp talker & rviz2 ``` 以上两条语句分别用于初始化ROS 2的工作空间路径变量,启动了一个发布者节点与可视化编辑器实例;假如两者均能顺利加载而不报错即表明整个过程顺利完成。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值