docker中可视化rviz

背景

华硕 x556ub电脑,使用NVIDIA GEFORCE 940M 显卡

1. 确定适合的 NVIDIA 驱动版本

运行以下命令以检查 GPU 型号和推荐的驱动版本:

ubuntu-drivers devices

在这里插入图片描述根据输出结果,安装 nvidia-driver-535:

sudo apt update
sudo apt install -y nvidia-driver-535

重启系统

sudo reboot

验证 NVIDIA 驱动是否正常

nvidia-smi

在这里插入图片描述

2. 检查 NVIDIA Container Toolkit 安装

2.1 安装 NVIDIA Container Toolkit

distribution=$(. /etc/os-release; echo $ID$VERSION_ID) && \
    curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - && \
    curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | \
    sudo tee /etc/apt/sources.list.d/nvidia-docker.list

### 如何在 Docker 中运行 rviz2 为了能够在 Docker 容器中成功启动和使用 `rviz2`,需要确保几个关键组件被正确配置。这不仅涉及到了解如何拉取合适的 ROS 2 镜像,还涉及到 X11 转发以便于 GUI 应用程序可以在主机上显示。 #### 拉取 ROS 2 Foxy 的 Docker 镜像 对于想要使用最新稳定版 ROS 2 和其下的 `rviz2` 工具来说,应该考虑基于 Ubuntu Focal (Foxy Fitzroy) 版本的官方镜像: ```bash docker pull ros:foxy-ros-base-focal ``` #### 设置 Dockerfile 或者直接通过命令行参数来启用 X11 转发支持 为了让容器内的应用程序能够访问到宿主机上的显示器,通常会采用两种方法之一:一是修改 Dockerfile 添加必要的环境变量;二是当创建容器实例时传递特定选项给 `docker run` 命令。这里推荐后者作为临时测试用途更为简便的方式[^1]。 具体做法是在执行 `docker run` 启动新容器的时候加上 `-e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix` 参数,这样就可以让容器内部的应用连接回本地机器正在使用的图形桌面服务了。 #### 运行带有 Rviz2 的 ROS 2 容器 下面给出完整的命令用于启动一个包含 `rviz2` 的 ROS 2 环境,并允许它打开窗口展示三维模型等内容: ```bash xhost +local:root # 允许来自 root 用户(即容器中的默认用户)的客户端连接至当前用户的 X server docker run -it --rm \ -e DISPLAY=$DISPLAY \ -v /tmp/.X11-unix:/tmp/.X11-unix \ ros:foxy-ros-base-focal bash apt-get update && apt-get install -y ros-foxy-rviz2 source /opt/ros/foxy/setup.bash rviz2 ``` 上述过程首先设置了 X 主机权限以接受来自容器内进程发出的请求,接着定义了一系列环境变量使得远程渲染成为可能,最后进入交互模式安装所需的软件包并启动 `rviz2` 可视化工具[^4]。 #### 注意事项 由于安全原因,在实际部署环境中不建议长期开启 `xhost +local:root` 权限授予方式。可以探索其他更加严格的安全策略,例如仅针对单个应用开放权限或是利用 Wayland 协议替代传统的 X Window System 实现更好的隔离效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值