相比于 上一篇文章 ,这里我们将官方给的 rosbag 数据包替换为来自深度相机的实时数据。之所以选择 Intel RealSense 这款深度相机,仅仅是因为它是最容易买到的。。。在京东上搜“深度相机”,符合要求的几乎都是这个系列的。具体到 D435i 这个型号,它可以提供深度和 RGB 图像,而且带有 IMU,未来如果我们继续做视觉+惯导的 SLAM 也够用了。
参考: https://www.intelrealsense.com/depth-camera-d435i/
Intel 官方给出了非常详细的介绍,尤其是 产品手册 ,几乎涵盖了用户需要(以及不需要)了解的全部信息。
这里把其中关于 D435i 的关键信息摘录出来,方便以后查阅。
Interl RealSence D4×× 系列,包括 D435i,都是采用经典的双目视觉的方式测量深度。尽管具有红外投射器,但并不是采用红外反射测距。它的作用仅仅是投射不可见的固定的红外纹理样式,提高在纹理不明显的环境中(例如白墙)的深度计算精度,辅助双目视觉测距。左右两个相机将图像数据送入内置的深度处理器,在其中基于双目测距的原理计算每个像素的深度值。
下图显示的是红外投射在白纸上的纹理模式:
双目测距相机的参数
红外投射器参数
RGB 相机参数
深度图像分辨率与支持的帧率
RGB图像分辨率与支持的帧率
IMU 参数
Intel RealSense SDK 2.0 是跨平台的开发套装,包含了基本的相机使用工具如 realsense-viewer,也为二次开发提供了丰富的接口,包括 ROS,python , Matlab, node.js, LabVIEW, OpenCV, PCL, .NET 等。
在 Linux 系统中,开发工具库有两种安装方式,一种是安装预编译的 debian 包,另一种是从源码编译。
如果 Linux 内核版本为 4.4, 4.8, 4.10, 4.13, 4.15, 4.18* 5.0* and 5.3*,并且没有用户自定义的模块,最好选择安装预编译的 debian 包,方便很多。
通过如下命令查看 ubuntu kernel 版本
显示结果为 5.0.0-23-generic ,满足上述版本要求。我们选择安装预编译的 debian 包。
Ubuntu 下的安装步骤可以参考 https://github.com/IntelRealSense/librealsense/blob/master/doc/distribution_linux.md
具体步骤摘录如下(针对 Ubuntu 18.04):
然后就可以运行 realsense-viewer 查看相机的深度和 RGB 图像,以及 IMU 中的测量,如下图所示:
另外还需要查看一下
确认包含 realsense 字样,例如 version: 1.1.2.realsense-1.3.14 。
再查看一下 dkms
返回结果中包含类似 librealsense2-dkms, 1.3.14, 5.0.0-23-generic, x86_64: installed 。
如果以上都没问题,说明 RealSense SDK 2.0 安装成功!
如果上述返回结果有误,则可能影响后续的运行。根据我们的经验,realsense-dkms 会选择 /lib/modules 中的第一个 kernel 安装,如果系统中存在多个 kernel,而当前运行的 kernel 不是 /lib/modules 中的第一个 kernel,就可能出问题。
Intel RealSense D4×× 系列相机从 Firmware version 5.12.02.100 开始加入了自标定功能,大大提高了相机标定的自动化程度,不再需要拿着标定板摆拍了。
详细 *** 作可以查看 这里 。
简要流程:
在本文中,我们的最终目的是将相机的深度和 RGB 数据发布到 ros topic 上,然后通过 ORB SLAM 2 进行点云建图。
这里就需要用到 ROS 的 realsense 库 ros-$ROS_VER-realsense2-camera 。需要注意的是,这个 ROS 库并不依赖于 RealSense SDK 2.0,两者是完全独立的。因此,如果只是想在 ROS 中使用 realsense,并不需要先安装上边的 RealSense SDK 2.0。
安装步骤参考 https://github.com/IntelRealSense/realsense-ros 。
具体命令如下(前提:已安装 ROS melodic 版本):
包括两部分:
在启动相机之前,我们需要设置一下 realsense2_camera rospack 中的 rs_camera.launch 的文件。
对于 ros launch 中各个参数的介绍可以参考 这里 。
在 rs_camera.launch 文件中确保以下两个参数为 true :
前者是让不同传感器数据(depth, RGB, IMU)实现时间同步,即具有相同的 timestamp
后者会增加若干 rostopic,其中我们比较关心的是 /camera/aligned_depth_to_color/image_raw ,这里的 depth 图像与 RGB 图像是对齐的,对比如下
然后就可以用如下命令启动相机了:
部分 ros topic 如下:
其中关键的是 /camera/color/image_raw 和 /camera/aligned_depth_to_color/image_raw 分别对应 RGB 图像和深度图像。基于这些数据,我们希望实现 ORB SLAM 2 + 点云建图的效果 。
相比于采用 rosbag 数据包的 ORB SLAM 2,这里有以下几点修改:
做完以上修改,就可以按照 前一篇文章 中的步骤编译和运行 ORB SLAM 2 了,此时深度和 RGB 数据不再是来自 rosbag ,而是来自相机。
命令总结如下:
最终保存的点云地图效果如下:
本文记录了基于深度相机 Intel RealSense D435i 实现 ORB SLAM 2 的过程,由于之前的文章( 1 , 2 )已经非常详细的记录了基于 rosbag 数据包的 ORB SLAM 2,本文的大部分内容是记录与深度相机相关的一些设置,方便自己以后查阅,也希望能帮到类似研究方向的其他读者。
英特尔实感摄像头是借助红外发射器实现深度计算的立体摄像头。在ISAAC中,RealSense摄像机被各种GEM的用作普通彩色摄像机,这些GEM仅需要单个摄像机图像,例如对象检测。它也可以用于需要深度图像的GEM,例如Superpixels。
ISAAC SDK提供了 RealsenseCamera 小码,以通过librealsense SDK访问来自RealSense摄像机的数据流。ISAAC自动处理所有依赖项,不需要手动安装。
小码可以通过各种参数进行配置。最值得注意的是,您可以通过 row 和 cols 参数更改所需的分辨率,并通过 rgb_framerate 和 depth_framerate 参数更改所需的帧速率。请注意,如 isaac.RealsenseCamera小码文档 中所述,仅支持某些模式。如果连接了多个摄像机,则需要通过 dev_index 或 serial_number 参数指定所需的设备。
ISAAC提供了一个基本的示例应用程序来测试您的RealSense摄像机。您可以使用以下命令运行它:
应用程序运行后,您可以使用ISAAC Sight来查看摄像机图像。
RealSense相机可能在使用过时的固件版本。您可以通过如上所述运行RealSense示例应用程序来检查相机的固件版本。如果固件版本不是推荐的版本,则应用程序会在控制台上显示一条消息。
如果您需要更新固件,请按照官方网站上的说明进行 *** 作: https : //dev.intelrealsense.com/docs/firmware-update-tool 。
推荐的固件版本是 5.11.15 。
Realsense实感相机需要USB3.0 +连接。USB 3.0端口和电缆可以通过端口和电缆连接器内部的蓝色组件识别。Jetson Xavier USB-C端口是USB 3.0端口。
通过USB-C端口测试RealSense相机发现了稳定性问题,可以通过使用无源的USB集线器来解决。该 AmazonBasics USB 3.1 C型至4端口铝集线器(AmazonBasics USB 3.1 Type-C to 4-Port Aluminum Hub Connector) 已被验证在与RealSense相机工作时非常可靠。
运行 sudo nvpmodel -m 0 使能所有Jetson的内核,并增加了扩展的最小时钟频率。此更改在重新启动后仍然存在。运行 sudo nvpmodel -q 以显示当前设置。在某些情况下,这会增加处理能力,并可能减少帧丢失和图像模糊。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)