Ubuntu18.04+ROS Realsense的安装与使用-程序员宅基地

技术标签: 本科毕设  ubuntu  intel  

前言

本来觉得realsense的使用是挺简单的一回事(事实证明确实简单…),但想着之后自己可能还会多次进行配置,还是记录一下,方便以后查阅


一、安装软件包与librealsense

完全可以照着官方linux安装教程进行安装。以下几乎仅为翻译:(在安装时应断开realsense的连接)

1、内核检查

realsense DKMS kernel drivers package(就是后面需要安装的librealsense2-dkms),支持的Ubuntu LTS内核版本有:4.4, 4.8, 4.10, 4.13, 4.15, 4.18*, 5.0*, 5.3* and 5.4。可以通过 uname -r查看自己电脑内核版本,如我的为5.4.0-67-generic。

2、Installing the packages:

  1. 注册服务器公开密匙:(如果失败可以尝试终端使用代理再尝试)
sudo apt-key adv --keyserver keys.gnupg.net --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE || sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE
  1. 将服务器加入仓库列表
Ubuntu 16 LTS:
sudo add-apt-repository "deb https://librealsense.intel.com/Debian/apt-repo xenial main" -u
Ubuntu 18 LTS:
sudo add-apt-repository "deb https://librealsense.intel.com/Debian/apt-repo bionic main" -u
Ubuntu 20 LTS:
sudo add-apt-repository "deb https://librealsense.intel.com/Debian/apt-repo focal main" -u
  1. 库安装
sudo apt-get install librealsense2-dkms
sudo apt-get install librealsense2-utils

上面两行将部署librealsense2 udev规则,构建和激活内核模块,运行时库以及可执行的演示和工具。

2022.11.21更新:在换了ubuntu20.04(带有)5.15的内核报错后,降级到5.3重新安装依然报错(最后解决)① 首先是sudo apt-get install librealsense2-dkms报错E: Sub-process /usr/bin/dpkg returned an error code (1),这个直接谷歌就能搜到一堆解决方案;然后sudo apt-get install librealsense2-utils报错 librealsense2-utils : 依赖: libgtk-3-dev 但是它将不会被安装,直接安装libgtk-3-dev依旧报错libgtk-3-dev : 依赖: gir1.2-gtk-3.0 (= 3.24.18-1ubuntu1) 但是 3.24.20-0ubuntu1.1 正要被安装,这里直接递归装错误的包,比如这里说需要gir1.2-gtk-3.0=3.24.18-1ubuntu1,那就sudo apt install gir1.2-gtk-3.0=3.24.18-1ubuntu1,然后再装libgtk-3-dev,再报其他错,再解决。。。最终装上了。

可以用aptitude来解决这个依赖问题

  1. 验证:连接realsense,终端输入realsense-viewer即可;也可再验证,终端输入modinfo uvcvideo | grep “version:”,返回的命令中应该包含“realsense”。

  2. 包升级与卸载在这里插入图片描述

  3. 包细节
    在这里插入图片描述

二、ROS

这一部分也有官网的参考安装,也是照着做就可以

1、包安装

采用的是官网的Method1方式,这种方式的坏处是安装的包会在/opt/ros/melodic/share/realsense2_camera路径下,并非自己的catkin_ws。使用Method2的方式可以git到自定义工作空间。推荐Method2

Method1

sudo apt-get install ros-melodic-realsense2-camera
sudo apt-get install ros-melodic-realsense2-description

Method2
首先安装之前可选安装的库,再git realsense2-ros到catkin_ws的src中,无脑catkin_make就ok。

sudo apt-get install librealsense2-dev

2、使用

  1. 获取/camera/depth/color/points
    通过以下指令就将所有相机的所有相关信息通过ros topic的方式发布出去了
roslaunch realsense2_camera rs_camera.launch

也可通过下面命令直接查看点云信息

roslaunch realsense2_camera demo_pointcloud.launch
roslaunch realsense2_camera rs_camera.launch filters:=pointcloud
  1. 获取/camera/depth_registered/points
    这里还需要ros的一个驱动包:git clone https://github.com/ros-drivers/rgbd_launch.git

    之后将rs_rgbd.launch和rs_camera.launch文件中的arg name=“enable_pointcloud” default="true"由false改为true(这一步可以获得/camera/depth/color/points),运行:roslaunch realsense2_camera rs_rgbd.launch


这里还不太清楚这两个topic之间的差别,前者也是registered后得到的点吗?希望有大佬能够解答,也先挖个坑,以后再填。

补:
自己琢磨了半天,大致想清楚camera/depth/color/pointscamera/depth_registered/points之间的区别了——:

  1. 首先前者camera/depth/color/points的获取方式为,利用针孔成像模型和相机的内参(焦距、光心距等),逐深度图得到点云,再按同样的方式逐彩色图将RGB信息赋予点云。参考https://blog.csdn.net/qq_43176116/article/details/93878513,里面的程序很好的说明了这一点
    在这里插入图片描述
  2. 后者camera/depth_registered/points首先要做的工作就是将3D相机产生的深度图像(depth image)配准(registration),以生成配准深度图像(registed depth image)。实际上配准的目的就是想让深度图和彩色图重合在一起,即是将深度图像的图像坐标系转换到彩色图像的图像坐标系下。配准前后的对比:
    在这里插入图片描述
    参考:
    https://blog.csdn.net/aichipmunk/article/details/9264703
    https://www.cnblogs.com/cv-pr/p/5769617.html
总结一下哈,我理解的是——不进行配准得到的点云是以深度相机摄像头为坐标系得到的,因为首先点云是通过深度图计算得到,再逐像素赋予RGB的。而配准后得到的点云是以彩色相机摄像头为坐标系得到的,因为这时已经将深度图的图像坐标系转换到彩色图下的图像坐标系了。 最终的最终,也就是说这两个点云理论上应该仅存在空间中的一些刚性变换(平移)。 github上的一个issue也可以稍微证明:https://github.com/IntelRealSense/realsense-ros/issues/553

如果有理解的不对的地方还望各位大佬指证,有更好的证明例子也欢迎告诉我,谢谢大噶~


还有很多参数设置(特别是filters)还需要熟悉,目前就不再深究了,能得到点云信息就Ok了

总结

还以为有多难呢,就这?

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/a17381562089/article/details/115345082

智能推荐

Word插件开发

创建一个新的 Office 插件项目:在 Visual Studio 中,选择"文件" -> “新建项目”,然后在模板中选择"Office/SharePoint",选择适当的 Office 插件项目模板,如 Word 插件、Excel 插件或 PowerPoint 插件。设计用户界面:在解决方案资源管理器中,打开你的插件项目,并在其中打开相应的 Office 文件(如 Word 文件、Excel 文件或 PowerPoint 文件)。你可以在 Office 应用中测试插件的功能,并在开发过程中进行调试。

便携式iv检测仪解析

在应用场景方面,便携式IV功率测试仪广泛应用于光伏电站的日常运维、光伏组件生产过程中的质量控制以及光伏项目的前期评估等环节。在光伏电站运维中,定期对光伏组件进行IV测试,可以及时发现性能下降或损坏的组件,为电站的运维提供有力支持。首先,从工作原理来看,光伏电站便携式IV功率测试仪通过模拟太阳光照射光伏组件,并测量组件在不同电压下的电流输出,从而绘制出IV曲线。此外,测试仪还可以计算光伏组件的功率输出、转换效率等参数,为用户提供全面的性能评估。

postgresql 索引之 hash_load_categories_hash postgres-程序员宅基地

文章浏览阅读3.6k次。os: ubuntu 16.04postgresql: 9.6.8ip 规划192.168.56.102 node2 postgresqlhelp create indexpostgres=# \h create indexCommand: CREATE INDEXDescription: define a new indexSyntax:CREATE [ UNIQUE ..._load_categories_hash postgres

face++实现人脸识别及人脸相似度对比_face++人脸识别 html5-程序员宅基地

文章浏览阅读4.8k次。使用face++,先获取key和secret下方是人脸识别,还添加了画出人脸轮廓的正方形下方是人脸识别,还添加了画出人脸轮廓的正方形 import requests#网络访问控件 from json import JSONDecoder#互联网数据交换标准格式 import cv2 as cv#图像处理控件 http_url ="https://a..._face++人脸识别 html5

desencrypt java md5_Java实现DES加密与解密,md5加密以及Java实现MD5加密解密类-程序员宅基地

文章浏览阅读322次。很多时候要对秘要进行持久化加密,此时的加密采用md5。采用对称加密的时候就采用DES方法了import java.io.IOException;import java.security.MessageDigest;import java.security.SecureRandom;import javax.crypto.Cipher;import javax.crypto.SecretKey;im..._java desencrypt.encrypt(pass)

BZOJ 2818 欧拉函数,线性筛_线性筛预处理质数表, 并求出欧拉函数, 预处理前缀和即可 bzoj2818boj-程序员宅基地

文章浏览阅读145次。题目链接:https://www.acwing.com/problem/content/description/222/给定整数N,求1<=x,y<=N且GCD(x,y)为素数的数对(x,y)有多少对。GCD(x,y)即求x,y的最大公约数。输入格式输入一个整数N输出格式输出一个整数,表示满足条件的数对数量。数据范围1≤N≤10^7输入样例:4..._线性筛预处理质数表, 并求出欧拉函数, 预处理前缀和即可 bzoj2818boj

随便推点

Lane Detection_lanedetectionlite-程序员宅基地

文章浏览阅读1.2k次。fromhttps://towardsdatascience.com/finding-lane-lines-simple-pipeline-for-lane-detection-d02b62e7572bIdentifying lanes of the road is very common task that human driver performs. This is important ..._lanedetectionlite

【数据结构】静态表查找之顺序查找、二分查找、分块查找_读取表元是什么意思-程序员宅基地

文章浏览阅读4.1k次,点赞8次,收藏23次。​通过一定的方法找出与给定关键字相同的数据元素的过程叫做查找。也就是根据给定的某个值,在查找表中确定一个关键字等于给定值的记录或数据元素。_读取表元是什么意思

如何设置交易滑点?精确到tick 测算期货冲击成本(附源码)_滑点设置多少合适-程序员宅基地

文章浏览阅读8.3k次,点赞4次,收藏18次。我们在非撮合回测模式下,因为无法获知交易价格当时的真实盘口价差、挂单数量,常主观设定一个滑点均值,比如针对螺纹钢等合约,设置 1 跳,针对某些交易不活跃的品种,设置 2 跳。但是这种近乎拍脑袋的方法并不精确。我们今天尝试通过简单的辅助工具,实现尽可能接近准确的 tick 级别滑点设置,代码已写好,不用编程也可获得结果。_滑点设置多少合适

大数据技术之 Azkaban_azkaban要建立job之间的依赖关系需要使用-程序员宅基地

文章浏览阅读551次。尚硅谷大数据技术之 Azkaban—————————————————————————————更多 Java –大数据 –前端 –python 人工智能资料下载,可百度访问:尚硅谷官网尚硅谷大数据技术之 Azkaban(作者:尚硅谷大数据研发部)版本:V3.0一 概述1.1 什么是 AzkabanAzkaban 是由 Linkedin 公司推出的一个批量工作流任务调度器,主要用于在一个工作流内以一个特定的顺序运行一组工作和流程,它的配置是通过简单的 key:value 对的方式,通过配置中_azkaban要建立job之间的依赖关系需要使用

python批量修改文件编码格式,由utf-16 le 格式转为utf-8_utf16le转换utf8-程序员宅基地

文章浏览阅读5k次,点赞2次,收藏9次。#! python3# encoding: utf-8import osimport chardetdef strJudgeCode(str1): return chardet.detect(str1)"""def readFile(path): with open(path,'r',encoding='utf-16 le') as f: filecontent ..._utf16le转换utf8

android:AppWidget 窗口小部件的开发思想和Demo_安卓小部件开发demo-程序员宅基地

文章浏览阅读1.1k次。AppWidget 窗口小部件的开发思想和Demo  这篇文章讲一下android系统“窗口小部件”(也叫做,主屏幕部件)的开发过程。什么叫窗口小部件呢?是指在主屏幕上显示的独立视图(不过填充了数据)。这些视图的数据内容由后台进程顶起更新。要用到RemoteViews来显示部件,还要指派广播接收器更新这些RemoteViews. 既可以单独做个窗口小部件,也可在App中嵌入多个窗口小部_安卓小部件开发demo

推荐文章

热门文章

相关标签