首页 > 系统相关 >docker(ubuntu18.04) + 宿主机(ubuntu20.04) + ROS + 乐视三合一体感摄像头LeTMC-520 环境搭建

docker(ubuntu18.04) + 宿主机(ubuntu20.04) + ROS + 乐视三合一体感摄像头LeTMC-520 环境搭建

时间:2024-06-19 15:44:52浏览次数:20  
标签:ubuntu20.04 容器 ros 宿主机 camera 内核 ROS astra

参考链接:https://blog.csdn.net/weixin_45225720/article/details/114464244

1. 准备 docker 环境

docker pull hyeonjaegil/vins-mono

docker run -it --privileged     --network host  --gpus all \
-v /tmp/.X11-unix:/tmp/.X11-unix   \
-e DISPLAY -e NVIDIA_VISIBLE_DEVICES=all   \
-e NVIDIA_DRIVER_CAPABILITIES=all   \
-e FASTRTPS_DEFAULT_PROFILES_FILE=/usr/local/share/middleware_profiles/rtps_udp_profile.xml   \
-v /dev/*:/dev/*       \
-v /etc/localtime:/etc/localtime:ro       \
-v ~/.Xauthority:/root/.Xauthority:rw   \
-v /home/h/projects/LET-NET:/root/LET-NET       \
--name LeTMC-520-IMU      \
hyeonjaegil/vins-mono:melodic     /bin/bash

在容器内查看系统版本:

lsb_release -a 

输出:

No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 18.04.6 LTS
Release:	18.04
Codename:	bionic

查看内核版本

cat /proc/version
Linux version 5.15.0-107-generic (buildd@lcy02-amd64-017) (gcc (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0, GNU ld (GNU Binutils for Ubuntu) 2.34) #117~20.04.1-Ubuntu SMP Tue Apr 30 10:35:57 UTC 2024

uname -a 
Linux h-pc 5.15.0-107-generic #117~20.04.1-Ubuntu SMP Tue Apr 30 10:35:57 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux

问题:为什么容器内 显示操作系统是 18.04, 而 内核版本又显示 20.04 呢?

答案:

我的宿主机版本是 20.04。

你在 Docker 容器中看到的操作系统版本与宿主机的内核版本不一致,这是 Docker 的预期行为。下面解释为什么会出现这种情况:

容器内的操作系统版本
Docker 容器的操作系统版本由其基础镜像决定。例如,如果你使用的是 ubuntu:18.04 镜像,那么容器内的操作系统版本就是 Ubuntu 18.04。这就是为什么你在容器内运行 lsb_release -a 时会看到以上信息。

容器内的内核版本
Docker 容器使用的是宿主机的内核,这意味着容器内的所有进程实际上在使用宿主机的内核。这也是为什么你在容器内运行 uname -acat /proc/version 时,会看到宿主机的内核版本,而不是基础镜像的内核版本。例如,你在容器内看到的内核版本和宿主机的内核版本一致。

原因总结
容器使用宿主机内核:

  1. Docker 容器共享宿主机的内核,因此在容器内看到的内核版本与宿主机相同。这是 Docker 轻量级虚拟化的一部分,允许多个容器共享一个宿主机内核,提高资源利用效率。
  2. 基础镜像决定用户空间环境:
    Docker 容器的用户空间环境(包括操作系统版本)由其基础镜像决定。例如,使用 ubuntu:18.04 基础镜像时,容器内的操作系统版本是 Ubuntu 18.04。

以上行为说明:容器的用户空间环境是 Ubuntu 18.04,但它使用的是宿主机的内核 5.15.0-107-generic,这是预期的行为。

总结

这种行为是 Docker 设计的一部分,目的是在轻量级虚拟化环境中共享宿主机资源,提高效率。因此,看到这种不一致是正常的,不需要担心。如果有特定需求需要在容器内使用不同的内核,则需要考虑其他虚拟化技术,如使用虚拟机。


2. 安装相机驱动 astra_camera_ros

参考:https://github.com/orbbec/ros_astra_camera

安装依赖:

apt install libgflags-dev  ros-$ROS_DISTRO-image-geometry ros-$ROS_DISTRO-camera-info-manager ros-$ROS_DISTRO-image-transport ros-$ROS_DISTRO-image-publisher libgoogle-glog-dev libusb-1.0-0-dev libeigen3-dev
# 其实上面的 docker 镜像已经满足这个依赖了。

Install libuvc.

cd  # /root 
git clone https://github.com/libuvc/libuvc.git
cd libuvc
mkdir build && cd build
cmake .. && make -j4
sudo make install
sudo ldconfig

开始:

Create a ros workspace( if you don't have one).

mkdir -p ~/ros_ws/src

Clone code from github.

cd ~/ros_ws/src
git clone https://github.com/orbbec/ros_astra_camera.git

Build

cd ~/ros_ws
catkin_make

Install udev rules.

cd ~/ros_ws
source ./devel/setup.bash
roscd astra_camera
./scripts/create_udev_rules

报错:

This script copies a udev rule to /etc to facilitate bringing
up the astra usb connection as /dev/astra*
cp: cannot create regular file '/etc/udev/rules.d': No such file or directory
Restarting udev
udev: unrecognized service
udev: unrecognized service

解决:

apt-get update
apt -y install udev
./scripts/create_udev_rules

报错:

Restarting udev

  • udev does not support containers, not started
  • udev does not support containers, not started

先不管它

udevadm control --reload && sudo  udevadm trigger

Start the camera

In terminal 1

cd ~/ros_ws
source ./devel/setup.bash 
roslaunch astra_camera astra.launch

In terminal 2

docker exec -it 容器id /bin/bash
cd ~/ros_ws
source ./devel/setup.bash
rviz

In terminal 3

docker exec -it 容器id /bin/bash
rqt

问题:

无法显示 rgb 图像。

解决:

参考:https://blog.csdn.net/Numberors/article/details/105637209

apt-get install -y usbutils && lsusb

Bus 002 Device 002: ID 174c:3074 ASMedia Technology Inc. ASM1074 SuperSpeed hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 009: ID 2bc5:0502  
Bus 001 Device 008: ID 2bc5:0403  
Bus 001 Device 007: ID 05e3:0610 Genesys Logic, Inc. 4-port hub
Bus 001 Device 002: ID 174c:2074 ASMedia Technology Inc. ASM1074 High-Speed hub
Bus 001 Device 005: ID 8087:0032 Intel Corp. 
Bus 001 Device 004: ID 26ce:01a2  
Bus 001 Device 003: ID 17ef:608c Lenovo 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

修改 astra_pro.launch 文件, 将 501 改为 502:

vim src/ros_astra_camera/launch/astra_pro.launch 

<arg name="uvc_product_id" default="0x0502"/>

然后在终端1:

source ./devel/setup.bash
roslaunch astra_camera astra_pro.launch

终端2:

rviz

终端3:

rqt

在 rvis add 一个 topic

image

恭喜你 rgb 出来了:

image

问题:无法显示彩色的点云

解决:

https://blog.csdn.net/xpc0507/article/details/120842435

https://robot.czxy.com/car/orbslam/astra_ros/

https://github.com/orbbec/ros_astra_camera/tree/eefd2a06f435a5c807ee1a492df91e28be242c2f

https://blog.csdn.net/qq_50220094/article/details/126186616

cd /root/ros_ws/src/ros_astra_camera/cfg
wget https://robot.czxy.com/car/orbslam/assets/camera.yaml
vim /root/ros_ws/src/ros_astra_camera/cfg/camera.yaml

修改:

camera_name: rgb_camera

vim ../../../src/ros_astra_camera/launch/astra_pro.launch

修改为:

<arg name="enable_point_cloud_xyzrgb" default="true"/>
<arg name="color_info_uri" default="file:///root/ros_ws/src/ros_astra_camera/cfg/camera.yaml"/>

然后在 Rviz:

![image](/i/l/?n=24&i=blog/1564596/202406/1564596-20240619152250058-1381990894.png)

image

然后我们就成功了。

自己做相机标定,请参考:

http://www.javashuo.com/article/p-ugupylzx-kh.html

https://blog.csdn.net/weixin_40511249/article/details/124803685

https://blog.csdn.net/fvsdf/article/details/124724859

标签:ubuntu20.04,容器,ros,宿主机,camera,内核,ROS,astra
From: https://www.cnblogs.com/odesey/p/18256384

相关文章

  • CrossOver 2024软件安装包下载
    CrossOver不像Parallels或VMware的模拟器,而是实实在在MacOSX系统上运行的一个软件。CrossOvers能够直接在Mac上运行Windows软件与游戏,而不需虚拟机。它为Windows软件提供所需的资源,以达到在MacOSX系统上运行Windows程序的目的。安装包获取地址:CrossOverlinux(其......
  • 超声波传感器在ROS中的使用代码示例
     代码展示了一个ROS节点,它会模拟超声波传感器数据的发布。在实际应用中,你需要替换模拟数据生成的部分,使用你的微控制器提供的真实数据。#include"ros/ros.h"#include"sensor_msgs/Range.h"//这个函数将被定时器调用,用于发布超声波数据voidpublishUltrasonicData(cons......
  • ROS1迁移到ROS2
    在将ROS1迁移到ROS2的过程中,需要考虑以下几个重要的注意事项:1.**先决条件**:在开始迁移之前,请确保ROS1包的所有依赖项在ROS2中都是可用的。2.**包规范格式**:ROS2不支持ROS1的包规范格式1,只支持较新的格式版本(2及更高版本)。如果`package.xml`文件使用的是格式1,需要至少......
  • Ubuntu 使用Vscode的一些技巧 ROS
    UbuntuVSCode的一些设置(ROS)导入工作空间推荐只导入工作空间下的src目录如果将整个工作空间导入VSCode,那么这个src就变成了次级目录,容易在写程序的时候把本应该添加到具体工程src目录里的代码文件给误添加到这个catkin_ws下这个src目录里Ctrl+Shift+B快捷编译设置......
  • ROS实验课(三)
    writeinadvance此次实验课给我的生活来了沉重的一击,不单单是因为没有做出来,还因为我卡在了插件缺失而无法解决。之前对待实验课,能在操作流程之外有暇思考具体的实现,此次只能记录简单的操作流程部分。老规矩,基于同样的《ROS机器人开发技术基础》教材。以下是实验内容,要......
  • Microsoft PPP CHAP Extensions, Version 2 rfc笔记
    之前在网上阅读过mschapv2的协议流程,并记录到博客随便中peap-mschapv2认证流程chap mschappap协议简介,mschapv1mschapv2区别8021x认证客户端都是依赖于操作系统,但是不可控,目前准备自己编写8021x客户端,所以来看看itefrfc文档了主要文档有:rfc2759 ......
  • 论文解读——EMNLP2023《Cross-lingual Prompting: Improving Zero-shot Chain-of-Tho
    一、研究背景  本研究聚焦于改进跨语言链式思考(Chain-of-Thought,CoT)推理,这是针对大型语言模型(LLMs)推理过程中的一种技术。传统上,链式思考通过引导模型按步骤生成推理路径,以提高推理任务的准确性。具体来说,零样本链式思考(zero-shotCoT)通过简单的提示,如“Let’sthinks......
  • KAN:使用 Microsoft 的 KubeAI Application Nucleus简化边缘 AI
    我们需要的是在Kubernetes上构建和管理边缘机器学习应用程序的一致方法,一种可以加快开发和交付速度的方法。这就是KAN的作用,即KubeAIApplicationNexus。正如介绍性博客文章所指出的那样,这个名字来自一个普通话动词,翻译为“观看”或“看”。KAN是一个开源项目,托管在GitHub......
  • [转]考试 PL-500 学习指南:Microsoft Power Automate RPA 开发人员
    考试PL-500学习指南:MicrosoftPowerAutomateRPA开发人员|MicrosoftLearn技能概览设计自动化(25-30%)开发自动化(45-50%)部署和管理自动化(20-25%)设计自动化(25-30%)使用PowerAutomate特性和功能设计自动化利用PowerAutomate生态系统区......
  • Ubuntu安装Vins-Fusion(2) —— Ubuntu20.04安装vins
    目录前言1、准备1.1安装ROS1.2安装CeresSolver2、安装VINS-Fusion3、测试(EuRoCMAV数据集)3.1、下载数据集3.2Monocualrcamera+IMU3.3Stereocameras+IMU3.4Stereocameras参考前言VINS-Fusion是一种基于优化的多传感器状态估计器,可为自主应用(无人......