安装好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.pswp.cn/web/92974.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/92974.shtml
英文地址,请注明出处:http://en.pswp.cn/web/92974.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ThingJS 新手学习技巧

一、ThingJS 基础认知 1.1 ThingJS 是什么 ThingJS 是一款基于 WebGL 技术的 3D 可视化开发平台,它为开发者提供了简单易用的 API 和丰富的 3D 场景组件,让开发者能够快速构建出高质量的 3D 可视化应用。无论是智慧园区、智慧楼宇、智慧交通还是工业监…

【软考架构】需求工程中,系统分析与设计的结构化方法

结构化方法诞生于20世纪70年代,是为了应对当时日益复杂的软件系统开发挑战(如“软件危机”)而提出的。它强调系统性、规范性、分解和抽象,目标是提高软件开发的效率、质量和可维护性,降低复杂性。 核心思想&#xff1a…

FPGA常用资源之IO概述

目录 一、前言 二、I/O资源 2.1 I/O端口资源 2.1.1 IOB 2.1.2 ILOGIC/OLOGIC 2.2 ZHOLD 2.3 IDDR/ODDR 2.4 IDELAY 2.5 ISERDES/OSERDES 2.6 IO Logic Resource连接 2.7 Device示意图 三、工程示例 3.1 工程代码 3.2 Device结果 一、前言 FPGA芯片从内部结构看主…

密集遮挡场景识别率↑31%!陌讯轻量化部署方案在智慧零售的实战解析

一、零售业痛点:当技术遇上客流洪流据《2024智慧零售技术白皮书》统计,高峰期超市顾客密度超3人/㎡时,​​目标漏检率高达48%​​。核心挑战包括:​​动态遮挡​​:购物车/货架造成的持续性目标截断​​计算瓶颈​​&a…

力扣(O(1) 时间插入、删除和获取随机元素)

一、题目分析(一)功能需求 我们需要实现 RandomizedSet 类,包含以下功能: RandomizedSet():初始化数据结构。bool insert(int val):当元素 val 不存在时,插入该元素并返回 true;若已…

前端开发的面试自我介绍与准备

前端面试自我介绍不知道怎么说的,直接参考下面的模板,然后换成你的经历 自我介绍控制在1分钟左右,千万不要说的太久,面试官会烦的,但是又不好意思打断你 切记面试是人和人面对面的交流,要有,面试…

10、系统规划与分析

一、系统规划步骤系统规划步骤对现有系统进行初步调查分析和确定系统目标分析子系统的组成和基本功能拟定系统的实施方案拟定系统的可行性研究指定系统建设方案系统规划阶段的产出物:可行性研究报告、系统设计任务书。习题1、拟定系统的实施方案是在系统规划阶段完成…

Nginx学习笔记(六)—— Nginx反向代理

📚Nginx学习笔记(六)—— Nginx反向代理 📌 一、反向代理核心概念 本质原理: #mermaid-svg-UkFRDp2Ut7MK5T2N {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-s…

三伍微电子GSR2406 IoT FEM 2.4G PA 射频前端模组芯片

三伍微电子GSR2406 IoT FEM 2.4G PA 射频前端模组芯片规格书Product Description The GSR2406 is a high-performance, fully integrated RF front-end module (FEM) designed for Zigbee technology, Thread, and Bluetooth (including low energy) applications. The GSR2406…

开发避坑指南(24):RocketMQ磁盘空间告急异常处理,CODE 14 “service not available“解决方案

异常信息 Caused by: org.apache.rocketmq.client.exception.MQBrokerException: CODE: 14 DESC: service not available now, maybe disk full, CL: 0.94 CQ: 0.94 INDEX: 0.94, maybe your broker machine memory too small.异常背景 一个项目里面用到了rocketmq&#x…

开源WAF新标杆:雷池SafeLine用语义分析重构网站安全边界

文章目录前言【视频教程】1.安装Docker2.本地部署SafeLine3.使用SafeLine4.cpolar内网穿透工具安装5.创建远程连接公网地址6.固定Uptime Kuma公网地址前言 当个人或企业站点上线后面临的首要威胁往往来自网络攻击——据统计,超过60%的Web应用漏洞利用尝试在流量到达…

Mac M1探索AnythingLLM+SearXNG

SearXNG 能聚合来自多达 200 多个搜索服务,可私有化部署,并提供了灵活自定义选项。 AnythingLLMSearXNG,刚好能解决AnythingLLM因为网络限制导致web search不可用的问题。 1 安装docker 下载mac m1版本的docker并安装。 https://docs.dock…

模式设计:策略模式及其应用场景

简介 策略模式(Strategy Pattern)是一种行为型设计模式,它允许在运行时动态选择算法或行为。核心思想是将算法封装成独立的类(策略),使它们可以相互替换,让算法的变化独立于使用它的客户端。 核心思想 解耦:将算法的定义与使用分离。每个算法封装起来,使它们可以互…

Squash Merge(压缩合并)和Rebase Merge(变基合并)介绍

文章目录**1. Squash Merge(压缩合并)****定义****操作步骤****特点****优点****缺点****2. Rebase Merge(变基合并)****定义****操作步骤****特点****优点****缺点****3. 对比总结****4. 选择建议****5. 示例场景****Squash Merg…

Linux编程 —— framebuffer

一、framebuffer概念framebuffer:帧缓冲,帧缓存技术Linux内核专门为图形化显示提供的一套应用程序接口。二、基本操作步骤1. 打开显示设备(/dev/fb0) 2. 获取显示设备相关参数(分辨率,像素格式)---》ioctl 3. 建立显存…

文件编辑html

<!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>文件行内容编辑器</title><script src&…

具有熔断能力和活性探测的服务负载均衡解决方案

一、整体架构设计 1.核心组件 负载均衡器&#xff1a;负责选择可用的服务节点健康检查器&#xff1a;定期检测服务节点的可用性服务节点管理&#xff1a;维护所有可用节点的状态信息 2.负载均衡策略 轮询(Round Robin)随机(Random)加权轮询(Weighted Round Robin)最少连接(Leas…

技术演进中的开发沉思-62 DELPHI VCL系列:VCL下的设计模式

今天聊聊设计模式&#xff0c;当然这个章节目前仅限于DELPHI VCL,因为接下来梳理的Factory/Factory Method、Bootstrap 和 ForEach 这三种设计样例&#xff0c;看似独立&#xff0c;却在实际开发中相互配合&#xff0c;共同构建起高效、灵活的程序架构。在 DELPHI VCL 开发的技…

Docker 101:面向初学者的综合教程

掌握 Docker 已成为软件开发中的一项关键技能。本教程探讨了容器化的世界&#xff0c;包括其核心概念、优缺点&#xff0c;以及开始使用容器化的分步指南。 无论是 Docker 的新手&#xff0c;还是希望复习基础知识的更有经验的开发人员&#xff0c;本指南都能满足需求。 什么…

RTOS YAFFS

在 YAFFS (Yet Another Flash File System) 的语境中&#xff0c;“Check Point” 并不是一个标准的、核心的官方术语。它更可能是对 YAFFS 关键机制 Summary 或 Checkpointing 功能的非正式表述或理解偏差。其核心含义是指 YAFFS 在特定时刻保存文件系统关键元数据的状态&…