当前位置: 首页 > news >正文

记录RK3588的docker中启动rviz2报错

安装好rk3588 的docker,pull了ros的完整镜像后,想要启动rviz但是报错,下面是我的踩坑记录

0.原始的启动镜像的脚本:

sudo docker run -it  --rm --privileged --net=host -e DISPLAY=$DISPLAY  --name=my_image_name \-e DISPLAY=$DISPLAY \-v /tmp/.X11-unix/:/tmp/.X11-unix \-v /dev/shm:/dev/shm \-v /home/$USER/ros:/ros_pro \$ARM_IMAGE

1.挂载路径 /usr/lib/aarch64-linux-gnu、/dev/dri 和 XDG_RUNTIME_DIR等,挂载的原因是因为要使用宿主机的gpu进行渲染。(下面的是错误的)

sudo docker run -it  --rm --privileged --net=host -e DISPLAY=$DISPLAY  --name=my_image_name \-e DISPLAY=$DISPLAY \-v /tmp/.X11-unix/:/tmp/.X11-unix \-v /dev/shm:/dev/shm \-v /home/$USER/ros:/ros_pro \--device=/dev/dri:/dev/dri \-e XDG_RUNTIME_DIR=/run/user/$(id -u) \-v /run/user/$(id -u):/run/user/$(id -u) \-v /usr/lib/aarch64-linux-gnu:/usr/lib/aarch64-linux-gnu \$ARM_IMAGE

其中/usr/lib/aarch64-linux-gnu的挂载是错误的,后面会遇到相关的问题

2.docker环境内运行rviz2显示缺少如下文件

缺少libtinyxml.so.2.6.2
缺少libtinyxml2.so.6
缺少libassimp.so.5
缺少libspdlog.so.1

在宿主机上安装如下软件包

sudo apt-get install libtinyxml2.6.2v5 libtinyxml2-6 libassimp5  libspdlog

3.在docker中启动还是报错如下

QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root
arm_release_ver:g13p0-0leac0,rk_so_ver: 10
Segmentation fault (core dumped)

4.在宿主机上面的错误,显示驱动没有安装好

运行指令glxinfo | grep "OpenGL" 报错如下

Error: couldn't find RGB GLX visual or fbconfig

解决方案

sudo apt-get install --reinstall libgl1-mesa-dri libgl1-mesa-glx libglx-mesa0 mesa-utils

然后重启!重启!重启!

5.重启后,在宿主机上重新运行glxinfo | grep "OpenGL"还是报错:

libGL error:failed to create dri screen
libGL error : failed to load driver:rockchip
libGL error:failed to create dri screen
libGL error : failed to load driver:rockchip
但是后面是有一些正确的信息

6.在启动docker的命令中如果挂在了 /usr/lib/aarch64-linux-gnu:/usr/lib/aarch64-linux-gnu 是无法启动rviz的

容器里原本的 /usr/lib/aarch64-linux-gnu 是和它自己安装的系统、ROS、RViz 依赖配套的。
你一挂载,就把它换成了宿主机的版本(Mesa、GL、Qt、OGRE 等版本全换了)。
容器的 ROS2/RViz 可能和宿主机的动态库版本不兼容 → 程序直接崩溃

所以选择挂载gpu有关的即可
-v /usr/lib/aarch64-linux-gnu/dri:/usr/lib/aarch64-linux-gnu/dri

正确的启动容器指令如下

sudo docker run -it  --rm --privileged --net=host -e DISPLAY=$DISPLAY  --name=my_image_name \-e DISPLAY=$DISPLAY \-v /tmp/.X11-unix/:/tmp/.X11-unix \-v /dev/shm:/dev/shm \-v /home/$USER/ros:/ros_pro \--device=/dev/dri:/dev/dri \-e XDG_RUNTIME_DIR=/run/user/$(id -u) \-v /run/user/$(id -u):/run/user/$(id -u) \-v /usr/lib/aarch64-linux-gnu/dri:/usr/lib/aarch64-linux-gnu/dri \$ARM_IMAGE
http://www.lryc.cn/news/619532.html

相关文章:

  • 【论文笔记】DOC: Improving Long Story Coherence With Detailed Outline Control
  • 【114页PPT】基于SAPSRM数字化采购解决方案(附下载方式)
  • XCZU6CG-2FFVC900I Xilinx FPGA AMD ZynqUltraScale+ MPSoC
  • 002.从0开始,实现第一个deepseek问答
  • h5bench(3)
  • 疯狂星期四文案网第38天运营日记
  • 【递归、搜索与回溯算法】综合练习
  • 双椒派E2000D系统盘制作全攻略
  • 2025 电赛 C 题完整通关攻略:从单目标定到 2 cm 测距精度的全流程实战
  • RS485转profinet网关接M8-11 系列 RFID 读卡模块实现读取卡号输出
  • [Oracle数据库] Oracle的表维护
  • npm安装时一直卡住的解决方法
  • Redis宝典
  • PromptPilot — AI 自动化任务的下一个环节
  • 51c自动驾驶~合集14
  • 自动驾驶中安全相关机器学习功能的可靠性定义方法
  • 自动驾驶轨迹规划算法——Apollo EM Planner
  • 云计算-OpenStack 运维开发实战:从 Restful API 到 Python SDK 全场景实现镜像上传、用户创建、云主机部署全流程
  • 关于Google Pixel,或者安卓16,状态栏颜色无法修改的解决方案
  • [系统架构]信息安全技术基础知识(三)
  • VS2022 + Qt 5.15.2+Occ开发环境搭建流程
  • 在腾讯云CodeBuddy上实现一个AI聊天助手
  • 自动化测试框架:自愈脚本、智能用例生成智能缺陷检测:视觉验证、日志异常分析A/B测试优化:多臂老虎机算法、动态流量分配
  • C5.4:光电器件
  • Spring全流程源码-基于spring-boot-starter-parent 2.6.11
  • BM25:概率检索框架下的经典相关性评分算法
  • 二层业务端口相关配置
  • 【P21】OpenCV Python——RGB和BGR,HSV和HSL颜色空间,及VScode中报错问题解决
  • 【Java web】HTTP 与 Web 基础教程
  • 技术速递|使用 AI Toolkit 构建基于 gpt-oss-20b 的应用程序