【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//查看文件是否复制成功

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

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

相关文章

ubuntu-开机黑屏问题快速解决方法

开机黑屏一般是由于显卡驱动出现问题导致。 快速解决方法&#xff1a; 通过ubuntu高级选项->recovery模式->resume->按esc即可进入recovery模式&#xff0c;进去后重装显卡驱动&#xff0c;重启即可解决。附加问题&#xff1a;ubuntu的默认显示管理器是gdm3,如果重…

海洋生物图像分割系统:算法改进策略

海洋生物图像分割系统源码&#xff06;数据集分享 [yolov8-seg-C2f-DiverseBranchBlock&#xff06;yolov8-seg-C2f-Faster-EMA等50全套改进创新点发刊_一键训练教程_Web前端展示] 1.研究背景与意义 项目参考ILSVRC ImageNet Large Scale Visual Recognition Challenge 项目…

PHP-FPM 性能配置优化

4 核 8 G 服务器大约可以开启 500 个 PHP-FPM&#xff0c;极限吞吐量在 580 qps &#xff08;Query Per Second 每秒查询数&#xff09;左右。 Nginx php-fpm 是怎么工作的&#xff1f; php-fpm 全称是 PHP FastCGI Process Manager 的简称&#xff0c;从名字可得知&#xff…

第十七周:机器学习

目录 摘要 Abstract 一、MCMC 1、马尔科夫链采样 step1 状态设定 step2 转移矩阵 step3 马尔科夫链的生成 step4 概率分布的估计 2、蒙特卡洛方法 step1 由一个分布产生随机变量 step2 用这些随机变量做实验 3、MCMC算法 4、参考文章 二、flow-based GAN 1、引…

【Linux网络】Linux网络基础入门:初识网络,理解网络协议

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ ⏩收录专栏⏪&#xff1a;Linux “ 登神长阶 ” &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀Linux网络 &#x1f4d2;1. 计算机网络背景发展历程"协议" &#x1f4dc;2. 网络协…

UML外卖系统报告(包含具体需求分析)

1、系统背景 随着互联网技术的快速发展&#xff0c;外卖订餐服务逐渐成为人们生活中的一部分。传统的电话订餐方式面临诸多不便和限制&#xff0c;而基于互联网的外卖订餐系统则提供了更加便捷、快速和高效的订餐服务。这种系统通过将餐厅、顾客和配送人员连接起来&#xff0c…

Sentinel详解

参考博客&#xff1a; SpringCloud Sentinel集成到微服务项目中&#xff08;保姆级教程&#xff09; 什么是Sentinel Sentinel 是面向分布式服务架构的轻量级流量控制产品&#xff0c;主要以流量为切入点&#xff0c;从流量控制、熔断降级、系统负载保护等多个维度来保护服务…

Vue学习记录之二十五 Vue3中Web Componets的使用

一、webcomponets介绍 在Vue 3中使用Web Components可以通过多种方式实现。Web Components是一组允许你创建可重用、封装良好的自定义元素的标准技术。它们包括Custom Elements、Shadow DOM、HTML Templates等。 Vue3 支持原生模式&#xff0c;可以让单个文件的js,css,html以h…

移植rv1106SDK的ipcweb到ubuntu

移植minilogger 在sdk中找到minilogger&#xff0c;复制到任意的文件夹&#xff0c;执行 cmake ./ make make install把minilogger 安装到系统 修改Makefile 在上次那个基础上&#xff0c;修改Makefile #* 这里原来要包含../Makefile.param&#xff0c;但含有sdk的很多参数…

w003基于Springboot的图书个性化推荐系统的设计与实现

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

Mysql(十) --- 用户权限和管理

文章目录 前言1. 应用场景2.用户2.1. 查看用户2.2. 创建用户2.2.1 语法2.2.2. 注意事项 2.2.3.示例2.3. 修改密码2.3.1. 语法2.3.2. 示例 2.4.删除用户2.4.1.语法2.4.2.示例 3. 权限和授权MySQL内置支持的权限列表3.1.给用户授权3.1.1.语法3.1.2. 示例 3.2.回收权限3.2.1.语法3…

Golang Agent 可观测性的全面升级与新特性介绍

作者&#xff1a;张海彬&#xff08;古琦&#xff09; 背景 自 2024 年 6 月 26 日&#xff0c;ARMS 发布了针对 Golang 应用的可观测性监控功能以来&#xff0c;阿里云 ARMS 团队与程序语言与编译器团队一直致力于不断优化和提升该系统的各项功能&#xff0c;旨在为开发者提…

基于SpringBoot的中药材进存销管理系统设计与实现

摘要 中药材进存销管理系统是为了满足中药材生产和销售企业的高效管理需求&#xff0c;涵盖了药材采购、库存管理和销售跟踪等主要功能。本系统采用Spring Boot框架进行开发&#xff0c;结合了前端和数据库设计&#xff0c;构建了一个实用的中药材管理平台&#xff0c;为企业提…

游戏服务器被攻击有办法防护吗

游戏服务器受到攻击时比较常见的。就算是刚上线的游戏&#xff0c;都会有被攻击的时候。游戏服务器受到攻击的原因以及解决方案有哪些呢&#xff1f; 游戏服务器被攻击的原因有哪些呢&#xff1f; 1、常见的攻击&#xff0c;大部分来自于同行之间的恶意竞争&#xff0c;你的游…

【QT】Qt窗口(上)

个人主页~ Qt窗口 一、菜单栏二、工具栏三、状态栏四、浮动窗口 Qt窗口是通过QMainWindow类来实现的&#xff0c;我们之前的学习是通过QWidget类实现的 QMainWindow包含一个菜单栏Menu Bar②&#xff0c;多个工具栏Tool Bars③&#xff0c;多个浮动窗口Dock Widgets&#xff0c…

OpenRTP 传输增加OpenRTPServer

开源地址 最近增加了OpenRTPServer&#xff0c; 已经修改完成一版放在了目录下&#xff0c;window和linux下编译都成功了&#xff0c;不过由于修改代码CMakefile 需要修改&#xff0c;先放放 OpenRTP开源地址 vlc得纠错传输方式 我发现我代码写错以后&#xff0c;vlc 依然能…

大数据Azkaban(二):Azkaban简单介绍

文章目录 Azkaban简单介绍 一、Azkaban特点 二、Azkaban组成结构 三、Azkaban部署模式 1、solo-server ode&#xff08;独立服务器模式&#xff09; 2、two server mode&#xff08;双服务器模式&#xff09; 3、distributed multiple-executor mode&#xff08;分布式多…

【Rust】环境搭建

▒ 目录 ▒ &#x1f6eb; 导读需求 1️⃣ 安装Chocolatey安装依赖 2️⃣ 安装RustRover安装toolchain&#xff08;rustup、VS&#xff09;重启配置生效设置安装插件 &#x1f4d6; 参考资料 &#x1f6eb; 导读 需求 重装系统&#xff0c;记录下环境搭建遇到的问题。 1️⃣ …

【最全基础知识2】机器视觉系统硬件组成之工业相机镜头篇--51camera

机器视觉系统中,工业镜头作为必备的器件之一,须和工业相机搭配。工业镜头是机器视觉系统中不可或缺的重要组成部分,其质量和性能直接影响到整个系统的成像质量和检测精度。 目录 一、基本功能和作用 二、分类 1、按成像方式分 2、按焦距分 3、按接口类型分 4、按应用…

如何制定有效的学习计划

文章目录 第一章&#xff1a;目标设定1.1 目标的重要性1.2 SMART原则1.3 目标设定公式 第二章&#xff1a;时间管理2.1 时间的重要性2.2 制定时间表2.3 时间管理公式2.4 番茄工作法2.5 时间分配公式 第三章&#xff1a;学习策略3.1 学习方法3.2 学习材料的选择3.3 学习效果公式…