docker中可视化rviz

news2024/12/27 7:47:29

docker中可视化rviz

  • 背景
  • 1. 确定适合的 NVIDIA 驱动版本
  • 2. 检查 NVIDIA Container Toolkit 安装
    • 2.1 安装 NVIDIA Container Toolkit
    • 配置 NVIDIA Runtime
    • 重启 Docker
    • 验证 NVIDIA Docker 支持
    • 验证 OpenGL 和图形支持
      • 测试 GUI 应用
      • 验证 OpenGL
      • lio_sam_rviz-9] process has died
        • 确认当前显卡的使用情况
        • 1. 切换到 NVIDIA 模式
        • 2. 验证 NVIDIA 是否成为主显卡
    • 额外检查
      • 解决方法

背景

华硕 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

sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit

输入第一个命令,输出:
在这里插入图片描述

用的18.04的源,若修改源为20.04的,会发现有错误,所以就用这个试试

sudo nano /etc/apt/sources.list.d/nvidia-docker.list

源内容为

deb https://nvidia.github.io/libnvidia-container/stable/ubuntu18.04/$(ARCH) /
#deb https://nvidia.github.io/libnvidia-container/experimental/ubuntu18.04/$(ARCH) /
deb https://nvidia.github.io/nvidia-container-runtime/stable/ubuntu18.04/$(ARCH) /
#deb https://nvidia.github.io/nvidia-container-runtime/experimental/ubuntu18.04/$(ARCH) /
deb https://nvidia.github.io/nvidia-docker/ubuntu18.04/$(ARCH) /

更新

sudo apt-get update

安装 NVIDIA Container Toolkit

运行以下命令安装 nvidia-container-toolkit

sudo apt-get install -y nvidia-container-toolkit

配置 NVIDIA Runtime

运行以下命令自动配置 NVIDIA Runtime:

sudo nvidia-ctk runtime configure

输出
在这里插入图片描述

重启 Docker

重新启动 Docker 服务以应用更改:

sudo systemctl restart docker

验证 NVIDIA Docker 支持

运行一个支持gpu的镜像:

docker run -it --rm \
    --gpus all \
    -e DISPLAY=$DISPLAY \
    -v /tmp/.X11-unix:/tmp/.X11-unix \
    osrf/ros:melodic-desktop-full bash

在容器内:

nvidia-smi

输出为:
在这里插入图片描述

验证 OpenGL 和图形支持

测试 GUI 应用

安装 x11-apps 并运行 xclock 测试 GUI:

apt-get update && apt-get install -y x11-apps
xclock

如果显示一个时钟窗口,说明图形支持正常。
在这里插入图片描述

验证 OpenGL

安装 mesa-utils 并运行 glxinfo:

apt-get install -y mesa-utils
glxinfo | grep "OpenGL"

在这里插入图片描述此处报错:(但没直接解决),重启docker,后再按上面验证的步骤进行一遍又显示下面的,不清楚为什么

在这里插入图片描述
注意!!!
此处有问题,如果是下面的输出,只是rviz是可以打开的,但我运行lio_sam时则打不开rviz,如下:

lio_sam_rviz-9] process has died

在这里插入图片描述
原因是opengl使用的是cpu的核显,正确的是使用GPU

确认当前显卡的使用情况

运行以下命令查看当前显卡使用情况:

xrandr --listproviders

输出

ubuntu2004@ubuntu2004-X556UB: ~$ xrandr --listproviders
Providers: number : 2
Provider 0: id: 0x46 cap: 0x9, Source Output, Sink Offload crtcs: 3 outputs: 4 associated providers: 0 name:modesetting
Provider 1: id: 0x236 cap: 0x0 crtcs: 0 outputs: 0 associated providers: 0 name:NVIDIA-G0

从 xrandr --listproviders 的输出可以看出,你的系统使用了混合显卡配置(NVIDIA Optimus),默认情况下系统可能优先使用集成显卡(modesetting),而不是 NVIDIA GPU(NVIDIA-G0)。以下是详细的解决方法,确保系统能够正确使用 NVIDIA GPU。

1. 切换到 NVIDIA 模式

使用 prime-select 命令将系统切换到使用 NVIDIA GPU 模式:

sudo prime-select nvidia

运行完成后,重启系统:

sudo reboot
2. 验证 NVIDIA 是否成为主显卡

重启后,运行以下命令检查当前模式:

prime-select query

如果输出为 nvidia,说明 NVIDIA GPU 已被启用。

glxinfo | grep "OpenGL"

在这里插入图片描述

额外检查

检查 Docker 配置

验证 NVIDIA Runtime 是否已正确配置:

docker info | grep -i runtime

在这里插入图片描述
从 docker info | grep -i runtime 的输出可以看到以下关键点:

nvidia runtime 已注册:
输出中显示了 nvidia runtime,说明 NVIDIA Container Toolkit 已正确安装。

默认运行时是 runc:
当前默认的容器运行时是 runc,而不是 nvidia。因此,运行容器时需要手动指定 --gpus all 来启用 GPU 支持。

两条警告:
WARNING: bridge-nf-call-iptables is disabled
WARNING: bridge-nf-call-ip6tables is disabled 这些警告与网络配置相关,但不影响 GPU 功能。

解决方法

  1. 手动指定 GPU 支持

当默认运行时为 runc 时,需要在运行容器时手动启用 GPU 支持。例如:

docker run -it --rm --gpus all \
    -e DISPLAY=$DISPLAY \
    -v /tmp/.X11-unix:/tmp/.X11-unix \
    osrf/ros:melodic-desktop-full bash

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2254040.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AC+AP漫游实验

实验拓扑 实验要求 1.AP1服务vlan10,AP2服务vlan20,实现三层漫游 2.AP1与AP2为不同AP组,直接转发 实验步骤 1.配置VLAN放行相关流量 交换机与AP接口为trunk口并修改PVID为30 2.配置相关业务使得ap上线 3.配置vap上线,AP可用…

力扣92.反转链表Ⅱ

题目描述 题目链接92. 反转链表 II 给你单链表的头指针 head 和两个整数 left 和 right &#xff0c;其中 left < right 。请你反转从位置 left 到位置 right 的链表节点&#xff0c;返回 反转后的链表 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], left …

BERT和RoBERTa;双向表示与单向的简单理解

目录 BERT和RoBERTa大型预训练语言模型 BERT的原理 RoBERTa的原理 举例说明 双向表示与单向的简单理解 除了预训练语言模型,还有什么模型 一、模型类型与结构 二、训练方式与数据 三、应用场景与功能 四、技术特点与优势 BERT和RoBERTa大型预训练语言模型 BERT(Bi…

群控系统服务端开发模式-应用开发-短信工厂腾讯云短信开发

一、腾讯云短信工厂开发 1、添加框架对应的SDK composer require tencentcloud/tencentcloud-sdk-php 2、添加腾讯云工厂 在根目录下extend文件夹下Sms文件夹下channel文件夹下&#xff0c;创建腾讯云短信发送工厂并命名为TencentSmsSender。记住&#xff0c;一定要在腾讯云短…

SD-WAN 2.0 在金融行业的典型应用场景

目录 全扁平化组网 场景需求 应用方案 SD-WAN 2.0 在金融行业的创新实践 SD-WAN5G提高金融行业网络接入可靠性 全扁平化组网 随着金融机构数字化转型的推进&#xff0c;机构业务的多样性、复杂性、 个性化等要求&#xff0c;对现有的金融机构网络架构与网管人员运维模式提出…

Next.js 新手容易犯的错误 | All about “use client“ (2)

在上一篇文章中&#xff08;Next.js 新手容易犯的错误 | All about "use client" (1)&#xff09;&#xff0c;我们探讨了 Next.js 中服务端组件和客户端组件的运行机制以及常见的使用误区。 这篇文章将作为续集&#xff0c;进一步分析更多开发中容易遇到的问题&…

优化SEO策略的关键在于长尾关键词的有效运用

内容概要 在数字营销的快速发展背景下&#xff0c;搜索引擎优化&#xff08;SEO&#xff09;策略的制定显得尤为重要。而长尾关键词作为一种有效的关键词策略&#xff0c;正逐渐成为提升搜索引擎排名的重要工具。长尾关键词通常由三到四个词组成&#xff0c;具体而具有针对性&…

医学临床机器学习中算法公平性与偏差控制简析

摘要 随着医疗领域中数据的不断积累和计算能力的提升&#xff0c;临床机器学习技术发展迅速&#xff0c;但算法不公平性和偏差问题凸显。本文深入探讨了临床机器学习算法公平性的重要性、概念与定义、在临床应用中的影响、偏差来源、降低偏差方法及提升公平性策略。通过对不同…

​​​​​​​移远通信基于高通平台发布可集成边缘计算功能的5G MBB解决方案

在5G技术与人工智能深度融合的背景下&#xff0c;各行各业正迎来前所未有的创新机遇。为了加速5G移动宽带&#xff08;MBB&#xff09;行业向智能化转型&#xff0c;并简化边缘计算应用的开发流程&#xff0c;移远通信近期隆重推出了基于骁龙5G调制解调器及射频系统打造&#x…

六、文本搜索工具(grep)和正则表达式

一、grep工具的使用 1、概念 grep&#xff1a; 是 linux 系统中的一个强大的文本搜索工具&#xff0c;可以按照 正则表达式 搜索文本&#xff0c;并把匹配到的行打印出来&#xff08;匹配到的内容标红&#xff09;。 2、语法 grep [options]…… pattern [file]…… 工作方式…

【计算机网络】实验3:集线器和交换器的区别及交换器的自学习算法

实验 3&#xff1a;集线器和交换器的区别及交换器的自学习算法 一、 实验目的 加深对集线器和交换器的区别的理解。 了解交换器的自学习算法。 二、 实验环境 • Cisco Packet Tracer 模拟器 三、 实验内容 1、熟悉集线器和交换器的区别 (1) 第一步&#xff1a;构建网络…

linux-安全-iptables防火墙基础笔记

目录 一、 iptables链结构 五链 二、 iptables表结构 四表 三、 匹配流程 四、 语法 五、 匹配 1. 通用匹配 2. 隐含匹配 3. 显示匹配 六、 SNAT 七、 DNAT 八、 规则备份及还原 1. 备份 2. 还原 这篇将讲解iptables防火墙的基础知识 一、 iptables链结构 规则…

一个实用的端到端的深度学习库存模型

G1 文章信息 文章题为“A Practical End-to-End Inventory Management Model withDeep Learning”&#xff0c;该文于2022年发表至“MANAGEMENT SCIENCE”。文章的核心是提出了端到端的框架用于多周期库存补货问题。 2 摘要 文章研究了一个数据驱动的多周期库存补货问题&am…

<工具 Claude Desktop> 配置 MCP server 连接本地 SQLite, 本机文件夹(目录) 网络驱动器 Windows 11 系统

也是在学习中... 起因&#xff1a; 抖音博客 艾克AI分享 他的视频 #143《Claude开源MCP彻底打破AI的信息孤岛》 提到: Claude开源的MCP太强了&#xff0c;视频后面是快速演示&#xff0c;反正看了好几遍也没弄明白。菜单都不一样&#xff0c;感觉用的不是同一家 Claude. 探…

交易所 Level-2 历史行情数据自动化导入攻略

用户部署完 DolphinDB 后&#xff0c;需要将历史股票数据批量导入数据库&#xff0c;再进行数据查询、计算和分析等操作。DolphinDB 开发了 ExchData 模块&#xff0c;主要用于沪深交易所 Level-2 行情原始数据的自动化导入&#xff0c;目前已支持的数据源包括&#xff1a; 沪…

matlab finv()函数解释 F分布 和 逆累积分布函数 卡方分布

1.Earths flattening 翻译并解释含义 "Earths flattening" 翻译为中文是“地球的扁率”。 含义解释&#xff1a; 地球的扁率是指地球形状偏离完美球形的程度。地球并非一个完美的球体&#xff0c;而是一个扁球体&#xff0c;即在两极略微扁平&#xff0c;赤道略微…

Istio笔记01--快速体验Istio

Istio笔记01--快速体验Istio 介绍部署与测试部署k8s安装istio测试istio 注意事项说明 介绍 Istio是当前最热门的服务网格产品&#xff0c;已经被广泛应用于各个云厂商和IT互联网公司。企业可以基于Istio轻松构建服务网格&#xff0c;在接入过程中应用代码无需更改&#xff0c;…

国家烟草局招聘信息查看

以下是官网链接&#xff1a; 国家烟草专卖局 在首页&#xff0c;鼠标移到行业资讯&#xff0c;点击人事与培训&#xff0c;即可看到相应的招聘信息了。

【SpringMVC】用户登录器项目,加法计算器项目的实现

阿华代码&#xff0c;不是逆风&#xff0c;就是我疯 你们的点赞收藏是我前进最大的动力&#xff01;&#xff01; 希望本文内容能够帮助到你&#xff01;&#xff01; 目录 一&#xff1a;用户登录项目实现 1&#xff1a;需求 2&#xff1a;准备工作 &#xff08;1&#xf…

联通光猫DT741-csf 完全po解 改桥接

1.管理员密码破解&#xff0c;把光猫的loid pppoe用户名密码&#xff0c;各个连接vlan id记下来 打开链接 http://192.168.1.1/hidden_version_switch.html version选择Default Version&#xff0c;点击submit&#xff0c;光猫默认重启。重启后ip地址变为192.168.1.1 并且dhcp…