使用Realsense 435深度传感器摄像头进行迷宫导航

作者 donggua

2020-01-31 01.自动驾驶 无评论 脚印:

译自DIYRobocars.COM官网Blog,原文发布于2020年1月7日。

在过去的一年中,从廉价的激光雷达到具有立体视觉和激光投影的“深度相机”,都出现了价格低廉的优质深度传感器。就像大多数全尺寸自动驾驶汽车一样,现在可以轻松地用DIY机器人的深度感应来增强甚至取代计算机视觉。英特尔凭借其出色的Realsense系列深度感测和跟踪摄像头一直引领着这项工作,这些摄像头的价格不到200美元,具有可靠的SDK和通常内置的处理程序。这篇文章是我使用它们的教程中最新的文章(有关使用Realsense T265跟踪相机的先前文章在这里)。

将深度感测相机与激光雷达(2D或2.5D)进行比较的一种方法是使用它们来导航迷宫。有许多方法可以迷宫导航,包括非常简单的深度传感器,例如超声波(声纳)阵列或一维激光距离传感器(“飞行时间”),但是激光雷达单元和深度感应相机之间的共同因素是它们比一维传感器具有更多的功能:它们都返回像素或点的数组,这些像素或点具有遍及车辆周围区域的深度信息。

这两种传感器之间的区别在于,旋转的激光雷达装置可以潜在地显示整个360度圆盘上的那些点。另一方面,深度相机通常只能看到像固态激光雷达一样向前的矩形区域,其水平散布约为90度。但是,与大多数固态激光雷达不同,深度相机通常具有更宽的垂直范围(大约90度)。

相机的测距范围通常比激光雷达短(最大10m,而低成本激光雷达最大20-30m),并且距离物体越远,精度就越低。另一方面,深度相机的分辨率要高得多(相机每秒百万点,而低成本激光雷达大约为10,000)。

相机也便宜得多:RealSense 435为180 美元,而最便宜的固态激光雷达Benewake CE30-A为840美元。

这是总结以上内容的表格:

2D旋转激光雷达(RPLidar A1 2.5D固态激光雷达(Benawake CE30-C 3D深度相机(Intel Realsense 435
成本 $ 120 $ 959 $ 179
解析度 8k点/秒 150k点/秒 1m点/秒
范围 12m 3-4m 9-10m
覆盖范围 360 x 1度 132 x 9度 87 x 58度

该实验的目的是查看Realsense深度相机是否能像激光一样好。剧透:可以!(见下文)

关于我为此使用的计算机的注释是Raspberry Pi3。它没有足够的功能来真正利用Realsense传感器的高速和大数据返回优势。但是,我之所以使用它,是因为我想将新的Sphero RVR用作底盘,因为借助内置的陀螺仪和带有编码器的PID驱动的电机控制器,它可以使所有电机驱动器和航向控制变得简单而自动化,因此做得很好。 -您只需告诉它前进的方向和方向,就像箭一样。

RVR可以通过USB用5v为车载计算机供电(它通过单独的串行电缆与计算机通信)。这使我只能使用5v供电的计算机,包括Raspberry Pi系列,OdroidsJetson Nano。但是,还有英特尔推荐的低成本x86单板计算机(SBC),称为UP Board,它也可以在5V电压下运行。因此,如果我再次开始此操作,我会改用它,因为它应该能够通过简单的“ sudo apt安装”和“ pip安装”来安装Realsense SDK。

Rpi的第二个问题是Realsense SDK仅可在Ubuntu(以及Windows)上运行,尽管这不是这里的选择。尽管有一个适用于Raspberry Pi 3 的Ubuntu(Ubuntu Mate)版本,但对功能更强大的Raspberry Pi 4的支持尚不完整,我无法让Realsense对其进行处理。Raspberry Pi 3就是这样。

在Rpi 3上编译Realsense SDK(librealsense)可能需要一整天(无人值守,谢天谢地),并且每次Intel发行新版本时都必须重新进行一次,因此有点麻烦。因此,经验教训是:如果您有UP Board,请使用它。但是,如果您碰巧拥有RPi 3,它将运行得更慢。

软件

足够的硬件:让我们谈谈软件!我执行迷宫跟踪任务的方法是基本上观察汽车前方的所有深度特征,并尽可能宽阔地观察,并将垂直的“感兴趣区域”(ROI)设置在地面上方且不远处迷宫墙的高度。我弄清楚哪条路径的障碍物最远(即最开放)并朝那条路走-基本上走到最前方的路径。(这在数学上与避开障碍物最近的区域相同)。

我的Python代码中,我按以下方式进行操作。每秒三十次,Realsense传感器会向我发送一个深度图(640×480像素)。为了节省处理时间,我为垂直ROI内的每条扫描线从左至右读取了每五个像素(在本例中为220至280行),创建了128个“堆栈”,每个堆栈包含60个垂直像素,大约为总计8,000点。然后,我对每个堆栈中的值求平均值,并在串行终端中以粗略的基于字符的显示方式显示它们,如下所示(点越小,障碍越远,即前方的路径越清晰):

然后,我将它们分成10个堆栈的块,总共13个块。然后每个块得到一个平均值,然后我转向具有最高平均值(最远距离)的块。如果由于Realsense深度摄像头的视野相对狭窄而被卡在一个角落(“角” =所有可见方向的障碍物均小于0.75米),我将停下来并以15度为增量旋转,直到看到前进的道路。

这很简单,但是大多数时候都可以使用。也就是说,简单的360度2D激光雷达在此过程中会做得更好,因为它可以始终看到最佳的打开路径,而无需停止和旋转。因此,在这种理想化的环境中,一种简单的“距右墙10厘米远”的声纳将同样有效(但在现实环境中则不然)。因此,迷宫并不是对Realsense传感器的最佳测试-在更开放的环境中,将其用于障碍物检测和躲避(而不是路径跟踪)会更好地展示其优势。

得到教训:

  1. 不要将Raspberry Pis用于Realsense传感器。改用Up板或Jetson Nanos
  2. 与固态激光雷达相比,深度相机在短距离感应方面同样出色且便宜
  3. 也就是说,360度感测优于90度感测
  4. Sphero RVR平台易于使用。就是这样!

发表评论

电子邮件地址不会被公开。 必填项已用*标注