【Docker大揭秘】

Docker

  • 调试一天的血与泪的教训:
    • 设备条件:
    • 对应的build preparation
    • 相应的报错以及修改 作为记录
  • 构建FASTLIO2
  • 启动docker
  • 获取镜像
  • 列出镜像
  • 运行container
  • docker中实现宿主机与container中的文件互传

调试一天的血与泪的教训:

在DOCKER中跑通FASTLIO2:
FASTLIO2_ROS2

设备条件:

  1. ubuntu20.04 + docker(22.04 desktop版本)——>docker拉取镜像选择的网站docker拉取ubuntu22.04(ROS2 HUMBLE)
  2. docker (configuration 22.04) ——> ros2 humble版本 (foxy是天坑!)
    请添加图片描述

对应的build preparation

编译 LIVOX-SDK2
直接按照来没问题:需要在你拉取的container 中部署一个ws专门用来存放LIVOX的SDK软件工具包

git clone https://github.com/Livox-SDK/Livox-SDK2.git
cd ./Livox-SDK2/
mkdir build
cd build
cmake .. && make -j
sudo make install

展示如下图(这里的Livox-SDK2文件夹(因为在后续的livox_ros_driver2中会调用他的动态链库.so)):
请添加图片描述
编译 livox_ros_driver2
follow官网的教程 (可以说是很香,但是这里要关注./build.sh humble需要在ws_livox/src/livox_ros_driver2文件夹中才有 并且humble专用)

mkdir -r ws_livox/src
git clone https://github.com/Livox-SDK/livox_ros_driver2.git ws_livox/src/livox_ros_driver2
cd ws_livox/src/livox_ros_driver2
source /opt/ros/humble/setup.sh
./build.sh humble

编译gtsam
这个简单不说了
编译pcl
这里我的pcl选择的是1.14,但是github主运行的是1.10导致引入#include<pcl/io/io.h>中出现错误 同时 pcl在docker 中的安装目录和在宿主机中的安装目录存在差异 需要在cmakelist.txt中set相关的include_dir 以及相关的LIBRARIES_DIR保证你的点云库能够正确find(这个我针对我的框架做一个记录)

相应的报错以及修改 作为记录

Question
请添加图片描述
Answer
因为我是在docker中安装的livox_ros_driver2与宿主机直接默认安装在/usr/local/lib以及/usr/local/include中不一样 所以我对cmakelist(fastlio)进行了调整:
请添加图片描述
关注这里的set是我对应的缺少的两个cmake文件的父级目录。
需要修改对应的cmakelist.txt信息
Question
点云库使用的版本不对应 导致很多函数出现错误:
请添加图片描述Answer
cd 进入到安装pcl-1.14的include头文件位置 发现确实没有io.h:
所以将io.h改称pcd_io.h然后那个函数错了 根据参数调整 完事 一条龙
请添加图片描述

构建FASTLIO2

首先我选择新建一个ws专门用来fastlio2:

通过git clone 
然后 colcon build --symlink-install (build and install一站式服务到家)
运行ros节点 
这里我经常忘记source ./install/setup.bash
然后ros2 launch fastlio2 lio_launch.py(完美 报错了 这个报错我解决了一下午)

请添加图片描述请添加图片描述
Question

请添加图片描述
请添加图片描述这个报错 大致是:理解起来大致是:找不到共享库.so
请添加图片描述Answer
我 find / -name "相应的so"搜寻了对应的.请添加图片描述大概在这个位置:
请添加图片描述我找了很多ROS开源社区遇到问题的友友们怎么解决的 但是 貌似跟我的问题出现了差异
Answer
我最终解决方式
请添加图片描述

export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/ws_livox/install/livox_ros_driver2/lib

启动docker

$ sudo systemctl enable docker 
$ sudo systemctl start docker

将需要使用 docker 的用户加入 docker 用户组
建立docker组

$ sudo groupadd docker

将当前用户加入 docker 组:

$ sudo usermod -aG docker $USER

获取镜像

从 Docker 镜像仓库获取镜像

$ docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]

列出镜像

$ docker image ls

运行container

以这个镜像为基础启动并运行一个容器

docker ps -a(列出所有容器)
docker run -it container-name /bin/bash

请添加图片描述

bash:放在镜像名后的是 命令,这里我们希望有个交互式 Shell,因此用的是 bash。

因为执行ROS2程序往往需要同时开启多个终端窗口,所以 往往可以通过下面进行(但是进入到fastlio2文件夹后应该都需要source ./install/setup.bash)docker容器启动多个终端,docker启动多个终端

docker exec -it cd3b79a85d7e /bin/bash

请添加图片描述

docker中实现宿主机与container中的文件互传

请添加图片描述

docker ps -a 
docker run -it container-name /bin/bash

//复制文件
docker ps -a //查看所有container-name的ID
docker cp /宿主机文件内容绝对路径 容器名称:/目标复制路径
docker exe -it container-name /bin/bash//查看文件是否复制成功

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

APISQL企业版离线部署教程

针对政务、国企、医院、军工等内网物理隔离的客户&#xff0c;有时需要多次摆渡才能到达要安装软件的服务器。本教程将指导您使用Linux和Docker Compose编排服务&#xff0c;实现APISQL的离线部署。 准备 准备一台Linux(x86_64)服务器。 安装Docker Engine&#xff08;推荐版本…

音视频入门基础:AAC专题(11)——AudioSpecificConfig简介

音视频入门基础&#xff1a;AAC专题系列文章&#xff1a; 音视频入门基础&#xff1a;AAC专题&#xff08;1&#xff09;——AAC官方文档下载 音视频入门基础&#xff1a;AAC专题&#xff08;2&#xff09;——使用FFmpeg命令生成AAC裸流文件 音视频入门基础&#xff1a;AAC…

docker 可用镜像服务地址(2024.10.25亲测可用)

1.错误 Error response from daemon: Get “https://registry-1.docker.io/v2/” 原因&#xff1a;镜像服务器地址不可用。 2.可用地址 编辑daemon.json&#xff1a; vi /etc/docker/daemon.json内容修改如下&#xff1a; {"registry-mirrors": ["https://…

【AI应用落地实战】智能文档处理本地部署——可视化文档解析前端TextIn ParseX实践

湘江之畔&#xff0c;秋风送爽。前不久&#xff0c;2024长沙中国1024程序员节在长沙盛大举行。今年的程序员节主题为“智能应用新生态”&#xff0c;以科技为纽带&#xff0c;搭建起了一个共筑智能应用新生态的交流平台&#xff0c;众多技术大咖齐聚一堂&#xff0c;探讨智能应…

echarts实现 水库高程模拟图表

需求背景解决思路解决效果index.vue 需求背景 需要做一个水库高程模拟的图表&#xff0c;x轴是水平距离&#xff0c;y轴是高程&#xff0c;需要模拟改水库的形状 echarts 图表集链接 解决思路 配合ui切图&#xff0c;模拟水库形状 解决效果 index.vue <!--/*** author:…

Kubeadm搭建k8s

一、架构 节点名称规格IP地址安装组件master012C/4G&#xff0c;cpu核心数要求大于2192.168.88.76docker、kubeadm、kubelet、kubectl、flannelnode012C/2G192.168.88.20docker、kubeadm、kubelet、kubectl、flannelnode022C/2G192.168.88.21docker、kubeadm、kubelet、kubect…

transformers和bert实现微博情感分类模型提升

项目源码获取方式见文章末尾&#xff01; 600多个深度学习项目资料&#xff0c;快来加入社群一起学习吧。 《------往期经典推荐------》 项目名称 1.【LSTM模型实现光伏发电功率的预测】 2.【卫星图像道路检测DeepLabV3Plus模型】 3.【GAN模型实现二次元头像生成】 4.【CNN模…

【Apache Zookeeper】

一、简介 1、场景 如何让⼀个应⽤中多个独⽴的程序协同⼯作是⼀件⾮常困难的事情。开发这样的应⽤&#xff0c;很容易让很多开发⼈员陷⼊如何使多个程序协同⼯作的逻辑中&#xff0c;最后导致没有时间更好地思考和实现他们⾃⼰的应⽤程序逻辑&#xff1b;又或者开发⼈员对协同…

了解lwip

lwIP是一个小型的开源的TCP/IP协议栈&#xff08;精简版的TCP/IP协议&#xff09;&#xff0c;博客借用了其他博客的内容在此声明。 TCP/IP协议栈结构 应用层&#xff1a;HTTP,MQTT,NTP、FTP....... 传输层:TCP协议&#xff08;用于不可靠设备可靠传输&#xff09;&#xff…

基于Springboot+微信小程序的房产交易租赁服务平台设计与实现 (含源码数据库)

1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: SpringBoot自带 apache tomcat 主要技术: Java,Springboot,mybatis,mysql,vue 2.视频演示地址 3.功能 该系统…

《Linux运维总结:基于ARM64+X86_64架构CPU使用docker-compose一键离线部署redis 6.2.14容器版哨兵集群》

总结&#xff1a;整理不易&#xff0c;如果对你有帮助&#xff0c;可否点赞关注一下&#xff1f; 更多详细内容请参考&#xff1a;《Linux运维篇&#xff1a;Linux系统运维指南》 一、部署背景 由于业务系统的特殊性&#xff0c;我们需要面向不通的客户安装我们的业务系统&…

【计算机网络 - 基础问题】每日 3 题(五十九)

✍个人博客&#xff1a;https://blog.csdn.net/Newin2020?typeblog &#x1f4e3;专栏地址&#xff1a;http://t.csdnimg.cn/fYaBd &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会分享 C 面试中常见的面试题给大家~ ❤️如果有收获的话&#xff0c;欢迎点赞…

Dolphins 简介——一种新颖的多模态语言模型

背景问题 现在的自动驾驶系统在处理复杂的多变的现实驾驶场景时&#xff0c;往往缺乏人类驾驶员的全面理解&#xff0c;及时学习和适应能力以及错误纠正能力&#xff0c;为了实现能够像人类一样理解和响应复杂现实世界场景的完全自主车辆(AV)一直是一个重要目标。Dolphins 是一…

LabVIEW汽车状态监测系统

LabVIEW汽车状态监测系统通过模拟车辆运行状态&#xff0c;有效地辅助工程师进行故障预测和维护计划优化&#xff0c;从而提高汽车的可靠性和安全性。 项目背景&#xff1a; 现代汽车工业面临着日益增长的安全要求和客户对于车辆性能的高期望。汽车状态监测系统旨在实时监控汽…

面试经典 150 题.P26. 删除有序数组中的重复项(003)

本题来自&#xff1a;力扣-面试经典 150 题 面试经典 150 题 - 学习计划 - 力扣&#xff08;LeetCode&#xff09;全球极客挚爱的技术成长平台https://leetcode.cn/studyplan/top-interview-150/ 题解&#xff1a; class Solution {public int removeDuplicates(int[] nums) …

FPGA时序分析和约束学习笔记(3、Timequest时序路径详解和优化)

FPGA时序分析和约束学习笔记&#xff08;3、Timequest时序路径详解和优化&#xff09; Timequest中Data Path分析 Data Arrival Path clock path&#xff1a;时钟信号到达源寄存器时钟端口的时间 data path&#xff1a;数据从源寄存器Q端口出发到达目标寄存器D端口的时间 D…

浮动+flex布局

一.浮动 1.介绍 2.效果 <style> .one{ width: 100px; height: 100px; background-color: red; float: left; } .two{ width: 200px; height: 200px; background-color: blue; float: right; } </style> </head> <body> <div class"one&quo…

yandex企业邮箱:烽火域名邮箱有哪些优势?

yandex企业邮箱申请教程&#xff1f;如何用yandex免费域名邮箱&#xff1f; yandex企业邮箱作为一款备受推崇的企业邮箱服务&#xff0c;凭借其独特的优势&#xff0c;成为了众多企业的首选。烽火将深入探讨yandex企业邮箱的优势&#xff0c;特别是与烽火域名邮箱相比&#xf…

Python CGI编程-上传和下载文件file

文件上传&#xff1a;form表单需要设置enctype属性为 multipart/form-data&#xff0c;请求的网址是&#xff1a;http://localhost/post.html点击上传&#xff0c;页面跳转到&#xff1a;http://localhost/cgi-bin/hello.py上传的文件存在了/temp路径下文件下载&#xff0c;文件…

NVR小程序接入平台/设备EasyNVR多个NVR同时管理视频监控新选择

在数字化转型的浪潮中&#xff0c;视频监控作为安防领域的核心组成部分&#xff0c;正经历着前所未有的技术革新。随着技术的不断进步和应用场景的不断拓展&#xff0c;视频监控系统的兼容性、稳定性以及安全性成为了用户关注的焦点。NVR小程序接入平台/设备EasyNVR&#xff0c…