草庐IT

Intel Realsense D455深度相机的标定及使用(一)——安装librealsense SDK2.0以及realsense-ros

AndyVictory 2023-04-21 原文

一、安装Intel® RealSense™ SDK 2.0

         Intel® RealSense™ SDK 2.0 的DKMS内核驱动包(librealsense2-dkms)支持Ubuntu LTS内核版本4.4、4.8、4.10、4.13、4.15、4.18、5.0、5.3、5.4。

        1.1 查看自己的内核版本:

sudo cat /proc/version

        如果非上述版本,需要手动安装和修补版本,请移步官网教程:https://github.com/IntelRealSense/librealsense/blob/master/doc/distribution_linux.md

本教程不适合你。

        1.2 注册服务器公钥:

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE || sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE

        如果公钥无法检索,检查并指定代理设置:

export http_proxy="http://<proxy>:<port>"

        重新运行该命令。

        1.3 将服务器添加到储存库列表

sudo add-apt-repository "deb https://librealsense.intel.com/Debian/apt-repo $(lsb_release -cs) main" -u

        1.4 安装库

sudo apt-get install librealsense2-dkms
sudo apt-get install librealsense2-utils

        上面两行代码将部署librealsense2 udevs规则,构建和激活内核模块、运行库和可执行演示和工具包。

        1.5 可选择安装开发人员和调试包:

sudo apt-get install librealsense2-dev
sudo apt-get install librealsense2-dbg

        1.6 验证内核是否已经更新:

modinfo uvcvideo | grep "version:"

         version后面出现realsense表示更新成功。

        1.7 启动realsense-viewer

        插入D455相机,可能需要USB3.0及以上接口。启动realsense-viewer:

realsense-viewer

        通过界面左侧的选项可以打开imu,双目和rgb相机模块,右上可切换2D、3D界面:

         成功!退出realsense-viewer界面。

二、realsense-ros的安装与编译

        2.1 创建工作空间

       创建工作空间 ,这里~/Packages/RealsenseRos_ws可以自定义路径,但必须包含/src:

mkdir -p ~/Packages/RealsenseRos_ws/src

cd ~/Packages/RealsenseRos_ws/src

         2.2 从github上下载realsense-ros并修改指针:

git clone https://github.com/IntelRealSense/realsense-ros.git
cd realsense-ros/
git checkout `git tag | sort -V | grep -P "^2.\d+\.\d+" | tail -1`
cd ..

        2.3 安装ddynamic_reconfigure

        初始化工作空间前,最好检查一下ddynamic_reconfigure是否安装。

        执行如下命令(注意将melodic改为自己的ROS对应版本,修改“melodic”为"kinect"、"neotic"等等):

sudo apt-get install ros-melodic-ddynamic-reconfigure

        否则会出现报错:提示没有ddynamic_reconfigure。

        2.4 初始化工作空间       

catkin_init_workspace
cd ..
catkin_make clean

        2.5 安装源码

catkin_make -DCATKIN_ENABLE_TESTING=False -DCMAKE_BUILD_TYPE=Release
catkin_make install

        2.6 添加工作路径到bashrc文件

        注意修改~/Packages/RealsenseRos_ws/为自己的路径。

echo "source ~/Packages/RealsenseRos_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc

        2.7 插上相机并启动相机

        插上相机运行

roslaunch realsense2_camera rs_camera.launch

        如果出现报错:[camera/realsense2_camera_manager-2]进程已经死亡。报错如下:

/opt/ros/melodic/lib/nodelet/nodelet: symbol lookup error: /home/khz/ROS/catkin_ws/devel/lib//librealsense2_camera.so: undefined symbol: _ZN2cv3MatC1EiiiRKNS_7Scalar_IdEE
[camera/realsense2_camera_manager-2] process has died [pid 4924, exit code 127, cmd /opt/ros/melodic/lib/nodelet/nodelet manager __name:=realsense2_camera_manager __log:=/home/khz/.ros/log/81b1e24a-8f95-11ec-8270-344b50000000/camera-realsense2_camera_manager-2.log].
log file: /home/khz/.ros/log/81b1e24a-8f95-11ec-8270-344b50000000/camera-realsense2_camera_manager-2*.log
[camera/realsense2_camera-3] process has finished cleanly
log file: /home/khz/.ros/log/81b1e24a-8f95-11ec-8270-344b50000000/camera-realsense2_camera-3*.log

        如下图:

         由于出现提示:未定义标识符undefined symbol: _ZN2cv3MatC1EiiiRKNS_7Scalar_IdEE。猜测是OpenCV库的问题。

        解决方案:

        首先看看自己有没有安装OpenCV,没有安装请先安装,安装过程略。

        如果已经安装,打开realsense-ros的功能包文件夹下 realsense2_camera 文件夹下的 CmakeLists.txt文件,做出如下修改:

        添加set(OpenCV_DIR /usr/local/share/OpenCV/)到find_package前(下图11行,注意检查自己OpenCV的路径),添加OpenCV REQUIRED到find_package里(下图26行,注意放在括号里)。

         添加${OpenCV_LIBS}到目标链接库里(下图127行)

         然后跳回2.5再次安装,完成后执行roslaunch realsense2_camera rs_camera.launch。看到如下图就是启动成功了(有Realsense Node Is Up就行,警告可以忽略)。

         2.8 启动RGBD相机

        如果是RGBD相机,需启用第二步验证:

roslaunch realsense2_camera rs_rgbd.launch

        如果出现报错:

Resource not found: rgbd_launch
ROS path [0]=/opt/ros/melodic/share/ros
ROS path [1]=/home/andyvictory/Packages/RealsenseRos_ws/src
ROS path [2]=/opt/ros/melodic/share
The traceback for the exception was written to the log file

        安装RGBD的launch(注意ROS版本):

sudo apt install ros-melodic-rgbd-launch

        安装成功!

参考文章:

https://blog.csdn.net/qq_44305475/article/details/123686786?ops_request_misc=&request_id=&biz_id=102&utm_term=d455&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-2-123686786.nonecase&spm=1018.2226.3001.4187https://blog.csdn.net/qq_44305475/article/details/123686786?ops_request_misc=&request_id=&biz_id=102&utm_term=d455&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-2-123686786.nonecase&spm=1018.2226.3001.4187https://blog.csdn.net/robinvista/article/details/115732239?ops_request_misc=&request_id=&biz_id=102&utm_term=d455&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-3-115732239.nonecase&spm=1018.2226.3001.4187https://blog.csdn.net/robinvista/article/details/115732239?ops_request_misc=&request_id=&biz_id=102&utm_term=d455&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-3-115732239.nonecase&spm=1018.2226.3001.4187

https://blog.csdn.net/qq_40186909/article/details/113104595?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522166312286216782391821994%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=166312286216782391821994&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~pc_rank_v39-2-113104595-null-null.142%5Ev47%5Epc_rank_34_2,201%5Ev3%5Econtrol_2&utm_term=realsense%20%E7%9A%84%20D%20%E7%9F%A9%E9%98%B5&spm=1018.2226.3001.4187https://blog.csdn.net/qq_40186909/article/details/113104595?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522166312286216782391821994%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=166312286216782391821994&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~pc_rank_v39-2-113104595-null-null.142%5Ev47%5Epc_rank_34_2,201%5Ev3%5Econtrol_2&utm_term=realsense%20%E7%9A%84%20D%20%E7%9F%A9%E9%98%B5&spm=1018.2226.3001.4187

有关Intel Realsense D455深度相机的标定及使用(一)——安装librealsense SDK2.0以及realsense-ros的更多相关文章

  1. 深度学习部署:Windows安装pycocotools报错解决方法 - 2

    深度学习部署:Windows安装pycocotools报错解决方法1.pycocotools库的简介2.pycocotools安装的坑3.解决办法更多Ai资讯:公主号AiCharm本系列是作者在跑一些深度学习实例时,遇到的各种各样的问题及解决办法,希望能够帮助到大家。ERROR:Commanderroredoutwithexitstatus1:'D:\Anaconda3\python.exe'-u-c'importsys,setuptools,tokenize;sys.argv[0]='"'"'C:\\Users\\46653\\AppData\\Local\\Temp\\pip-instal

  2. 深度学习12. CNN经典网络 VGG16 - 2

    深度学习12.CNN经典网络VGG16一、简介1.VGG来源2.VGG分类3.不同模型的参数数量4.3x3卷积核的好处5.关于学习率调度6.批归一化二、VGG16层分析1.层划分2.参数展开过程图解3.参数传递示例4.VGG16各层参数数量三、代码分析1.VGG16模型定义2.训练3.测试一、简介1.VGG来源VGG(VisualGeometryGroup)是一个视觉几何组在2014年提出的深度卷积神经网络架构。VGG在2014年ImageNet图像分类竞赛亚军,定位竞赛冠军;VGG网络采用连续的小卷积核(3x3)和池化层构建深度神经网络,网络深度可以达到16层或19层,其中VGG16和VGG

  3. ruby Hash 包括另一个哈希,深度检查 - 2

    进行这种深度检查的最佳方法是什么:{:a=>1,:b=>{:c=>2,:f=>3,:d=>4}}.include?({:b=>{:c=>2,:f=>3}})#=>true谢谢 最佳答案 我想我从那个例子中明白了你的意思(不知何故)。我们检查子哈希中的每个键是否在超哈希中,然后检查这些键的对应值是否以某种方式匹配:如果值是哈希,则执行另一次深度检查,否则,检查值是否相等:classHashdefdeep_include?(sub_hash)sub_hash.keys.all?do|key|self.has_key?(key)&&ifs

  4. ruby-on-rails - Ruby 获取深度嵌套的 JSON API 数据 - 2

    我有一个Rails应用程序,它从WorldWeatherOnlineAPI获取响应。我正在使用rest-clientgem,响应采用JSON格式。我使用以下方法解析响应:parsed_response=JSON.parse(response)parsed_response显然是一个散列。我需要的数据是哈希内的字符串,数组内的哈希,另一个数组内的哈希,另一个哈希内的另一个哈希内的字符串。最内层的嵌套散列在["hourly"]中,这是一个由8个散列组成的数组,每个散列有20个键,拥有各种天气参数的字符串值。数组中的每个哈希值都是一天中的不同时间(预测是每三小时一次,3*8=24小时)。因此

  5. ruby-on-rails - 在 Rails 中实现具有灵活深度的类别和子类别的最佳方法? - 2

    我的项目中有一个类别和子类别模型。我想以灵活的方式拥有许多子级别。我想制作一个self引用的“父”外键,但我不太确定该怎么做。有任何想法吗?谢谢!Cat1Sub1SubSub1SubSub2Sub2Cat2Sub1Cat3Sub1Sub2SubSub1 最佳答案 试试acts_as_tree插件 关于ruby-on-rails-在Rails中实现具有灵活深度的类别和子类别的最佳方法?,我们在StackOverflow上找到一个类似的问题: https://st

  6. ruby - 将 OpenStruct 深度转换为 JSON - 2

    我有一个OpenStruct,它嵌套在许多其他OpenStructs中。将它们全部深度转换为JSON的最佳方法是什么?理想情况下:x=OpenStruct.newx.y=OpenStruct.newx.y.z=OpenStruct.newz='hello'x.to_json//{y:z:'hello'}现实{} 最佳答案 没有默认方法来完成这样的任务,因为内置的#to_hash返回哈希表示,但它不会深度转换值。如果值是OpenStruct,它会原样返回,不会转换成Hash。然而,这并不难解决。您可以创建一个遍历OpenStruct实

  7. 李沐《动手学深度学习》d2l——安装和使用 - 2

    今天想要跟着沐神学习一下循环神经网络,在跑代码的时候,d2l出现了问题,这里记录一下解决的过程,方便以后查阅。李沐《动手学深度学习》d2l——安装和使用安装d2l解决Import“...“couldnotberesolved问题PermissionError:[WinError5]拒绝访问。:'..\\\data'安装d2l下载whl:https://www.cnpython.com/pypi/d2l/dl-d2l-0.15.1-py3-none-any.whl将下载的文件放到这里:在这个文件中右键,选择“在终端中打开”在终端中输入如下命令:condaactivatepytorch_envpi

  8. 有仰拍相机和俯拍相机时,俯拍相机中心和吸嘴中心的标定 - 2

    俯拍相机中心和吸嘴中心的标定文章目录俯拍相机中心和吸嘴中心的标定前言适用模型如下:一、使用一个标定片进行标定1.关键注意:2.标定步骤:二、使用一个L型的工件1.关键注意:2.标定步骤:总结前言在自动化设备领域,使用相机进行定位是很普遍存在的,而使用相机定位就必定会用到标定,本文介绍两种关于吸嘴上方的俯拍相机和吸嘴中心的标定方法(前提是带有仰拍相机和俯拍相机)。【还有很多相机的使用场景的标定方法将在以后的文章中进行阐述】适用模型如下:一、使用一个标定片进行标定1.关键注意:关键是使用两个相机的中心和识别偏差,得到两个相机的中心固定偏差。注:后续俯拍相机拍物料识别得到的偏差以吸嘴中心在俯拍相机中

  9. ruby - 如何在 Ruby 中深度复制 Proc? - 2

    在Ruby中是否有直接的方法来生成Proc的副本?我有一个名为@foo的Proc。我想要另一种方法来定期增加@foo的附加逻辑。例如:#createinitialProc@foo=lambda{|x|x}#augmentwithmorelogic@foo=lambda{|x|x>1?x*x:@foo[x]}我不希望进行扩充的第二行生成递归函数。相反,我希望@foo按值绑定(bind)到新的@foo定义的词法范围内,生成一个看起来更像这样的函数:@foo=lambda{|x|x>1?x*x:lambda{|x|x}[x]}由于生成的函数如下所示,我得到了无限递归和最终的堆栈溢出:@foo

  10. 相机内参标定,相机和激光雷达联合标定 - 2

    相机内参标定,相机和激光雷达联合标定一、相机标定原理1.1成像过程1.2标定详解二、相机和激光雷达联合标定2.1标定方法汇总2.2Autoware的安装与运行2.2.1安装方式2.2.2安装Autoware的依赖(Ubuntu16.04/kinetic)2.2.3编译Autoware1.创造工作空间2.下载Autoware源码3.其他依赖4.编译5.效果2.3Autoware标定激光雷达和相机的外参过程一、相机标定原理1.1成像过程现实物体在相机中的成像过程离不开世界坐标系、相机坐标系、图像坐标系以及像素坐标系,只有理解了这些才能对获取的图像进行准确的分析。成像过程:四个坐标系如下图所示:世界

随机推荐