[疑难解答]激光雷达FAQ

查看: 25484|回复: 33

[疑难解答] 激光雷达FAQ

[复制链接]
本帖最后由 微笑的rockets 于 2019-1-15 14:22 编辑

大家有关于激光雷达的问题,欢迎在本贴发问,我们的工程师会尽量在这个帖子里将大家常见的问题进行回答。
1、什么是激光雷达
答:激光雷达是以发射激光束探测目标的位置、速度等特征量的雷达系统。从工作原理上讲,与微波雷达没有根本的区别:向目标发射探测信号(激光束),然后将接收到的从目标反射回来的信号(目标回波)与发射信号进行比较,作适当处理后,就可获得目标的有关信息,
参考:http://baike.baidu.com/view/131602.htm?fr=aladdinRoboPeak的激光雷达可以进行360°的扫描,因此可以将周边最近6米以内的最近的物体到模块本身的距离测量出来。
也可以理解为激光雷达就是一圈的激光测距仪。

2、激光雷达能干什么
答:激光雷达可以进行360°的二维距离探测,SLAM,3D扫描与模型构建,障碍物检测,多点触摸等

3、激光雷达有什么缺点
答:由于采用激光进行探测,所以无法正确反射激光的都会导致数据不准确,镜面,透明玻璃,水等会导致数据偏离。所以如果有这种环境的地方,需要考虑用其他传感器进行补充。

4、激光雷达有在 processing,Arduino, Raspberry or pcDuino上的样例代码吗?
答:激光雷达有提供SDK,把SDK中的linux代码在Raspberry or pcDuino 上编译即可。processing可以直接获取激光雷达的串口数据,根据SDK中提供的数据格式进行各种处理。Arduino下的驱动可以在以下网址找到。
http://www.robopeak.com/blog/?p=618
使用说明
http://www.robopeak.net/data/doc/rplidar/appnote/RPLDAPPN01-rplidar_appnote_arduinolib-zhCN.pdf
使用效果演示http://www.tudou.com/programs/view/rf2Lo7ov95U/?lvt=0&resourceId=0_07_10_28

5、arduino是否可以用Robopeak的激光雷达做slam
答:arduino可以用robopeak的激光雷达作为传感器,但是由于激光雷达的数据量较大(115.2kbps),以arduino的能力来说无法完成slam的处理,因此建议采用更高级一些的控制器来进行处理,例如树莓派,pcduino,cubeboard等。但作为360的传感器是完全可以使用的。

6、是否可以采用智能手机来作为激光雷达的数据处理。
答:是的,可以通过手机来进行激光雷达的数据处理。由于Robopeak提供的激光雷达采用串口通信,如果你有一定的编程基础,可以参考Robopeak开源的sdk将激光雷达数据进行采集和处理。采集的方式可以直连或者通过其他无线的方式进行。

7、为什么我测量300mm的距离  给显示290mm左右,测量800mm的距离  给显示812mm 分辨率和精度有什么区别 答:分辨率是对距离的解析程度。
在近距离情况下,由于传感器激光出射角是在偏离中心位置的,所以你观测的距离和传感器观测到的实际数据有一定偏差的。
近距离下你会发现有1cm左右的偏差。这倒不是说传感器不准。

8、如何进行激光雷达的标定
答:基本的思路如下

在已知距离Y用不透光平板挡住
读取传感器读数X
然后用软件进行数据拟合。

二次拟合的公式可以是:

Y = A*x^2 + B*x + C

其中,X是传感器读数,Y是真实数据。你先通过采集点的过程,用(X,Y)序列拟合这个函数,求出A B C三个系数。

以后,软件采集到传感器读数了,代入到上述公式的x中,就求出标定后的距离值了
9、最近ROS官方支持了激光雷达,请问该如何将rplidar加入ROS
How to build rplidar ros package
1) Clone this project to your catkin's workspace src folder
2) Running catkin_make to build rplidarNode and rplidarNodeClient
How to run rplidar ros package
There're two ways to run rplidar ros package

I. Run rplidar node and view in the rviz

roslaunch rplidar_ros view_rplidar.launch

You should see rplidar's scan result in the rviz.

II. Run rplidar node and view using test application

roslaunch rplidar_ros rplidar.launch

rosrun rplidar_ros rplidarNodeClient

You should see rplidar's scan result in the console



10、  Just wondering how many data could be sampled for each revolution of the motor? I am using the arduino interface, as I observed, on average 10 to 20 points will be sampled per revolution, is this normal?
想询问下电机旋转一圈能采集多少个点的数据?我使用arduino,我观察到,每圈大概有10到20点的数据被采集到,这正常吗?
------------------
答:
The number of samples to be retrieved per rotation can be calculated using the following formula:
采样量能够根据以下的公式来获得:

number of samples = SAMPLE_RATE / rotation_frequency.

The SAMPLE_RATE is a constant value as provided in the datasheet.
SAMPLE_RATE是有数据手册提供的常数。
It should be a value around 2000.
这个数据一般为2000。
The rotation_frequency is the current rotation speed.
rotation_frequency是当前的旋转速度。

For example, if the current rotation is 5.5hz ( or 330rpm ), the number of samples is expect to be around 2000/5.5 = 363.6.
距离来说,如果当前的转速是5.5hz(或者说是330rpm)那采样的数据应该是在2000/5.5=363.6左右。

You may use the framegrabber tool provided in the SDK to check that.
你可以用我们提供的SDK中的图像采集工具进行检查。

For arduino interface, you may find the retrieved sample data is less  than the expected value. This is mainly due to the low performance of the arduino's AVR processor.
对于arduino来说,你会发现取样数据会小于预期的数据,这是因为AVR的处理器能力确实没有办法做到这个处理能力。

For 2000 samples per second, the processor must handle each data within 500 micro seconds. As a 16Mhz processor is not fast enough to handle each sample node it received. The incoming sample data will be discarded.
对2000/秒的数据量来说,处理器必须在每个500毫秒内处理完这些数据。但是对于16Mhz的处理器来说,这远远不足以处理每个接收到的数据节点。进来的数据就会被抛弃了。

11、During testing the Sensor i did Log the Angle Values given to me by the "ultra_simple.exe" of the SDK. The Picture shows the Angle Values over time. There are repeating Offset/Peaks in the recorded Angle. What is the reason for this behaviour?
What solution would you suggest to use this data?
我在用SDK里面提供的ultra_simple.exe测试时记录下了角度制,并制成图标发现在记录角度时会重复的出现偏差/峰值(并不是单调递增的)。为什么会出现这样的表现?
有什么解决方法的建议呢?

-------

答:
The offset and peaks found in the angle value is caused by RPLIDAR's optical characteristic as the laser beam does not emit from the rotation center. The offset angle value commonly is not wrong data. 这种情况是正常的。这是由于激光点并不是由原点发射(这是由于激光雷达的光学特性)出来的。

Here is a quick answer regarding to your second question:  If you want to make the angle value of the valid data to be monotonic increasing, please use the ascendScanData() function provided in our SDK. This function will re-order the sample data. Our ROS node driver uses this function to emulate the data looks like it taken from a traditional scanner with laser beam emits in the rotation center. You may refer to the code on github :
https://github.com/robopeak/rplidar_ros
如果你希望你的角度数据在图表中已单调递增的形式出现,请使用我们SDK中的ascendScanData() 函数。这个函数会重新调整数据的顺序。在我们ROS节点驱动中使用这个函数来仿真,以便让数据看起来像传统的扫描仪(激光由中心发射)。你可以参考我们托管在github的代码

As a triangulation based laser ranger, the laser beam is not placed in the sensor's rotation center. So the heading of the sensor's rotating part is not actually the heading of the detected object. There will be a small offset in the heading angle, e.g. the theta1 and theta2 in the below figure. The sensor's build-in dsp will calculate the actual angle value by itself and report the actual value to outsides.
由于我们是基于三角定位法的激光测距仪,所以激光点并不是由传感器中心发出的。所以指向被测物体的角度并不是探测器的中心角度。发射角度和指向面有一定的夹角。如图theta1和theta2在图中所示角度。传感器内部的dsp芯片会计算实际角度和报告角度的差距。
QQ图片20140704181130.jpg
Since the angle offset changes depending on the distance of the target object been detected, although our sensor keeps taking measurements in a fixed time period (the angular increment of the sensor's spinning part is constant), the angular increments of the detected target points may still be different.  If the current detected object distance is farther than the previous object, the current angle value may be less than the previous one. Besides, if the current sample data is invalid (no object detected), there is no way to get the ACTUAL angle value, the encoder's raw angle value will be used instead.由于角度偏移量取决于被检测出的目标物体的距离的变化,虽然我们的传感器保持采取在一个固定的时间周期的测量(传感器的旋转部件的角度增量是恒定的),所检测到的目标点的角度增量可能仍是不同的。如果当前检测到的物体的距离比前面的对象更远,当前角度值可以小于前一个。此外,如果当前的样本数据是无效的(没有对象检测),就没有办法来获得实际的角度值,编码器的原始角度值将被使用。
12、请问我怎么获得这个激光雷达的资料
答:可以和客服直接联系询问索要或者和robopeak联系哦。他们的网址是www.slamtec.com

13、使用这个激光雷达,推荐多少位的单片机?
答:32位,主频100Mhz以上,内存20k以上

14、楼主你好,最近我买了一个rplidar,按照你们给的教程,在Linux系统(我用的是ubuntu14.04)下使用,将SDK编译后,当执行simple_grabber和ultra_simple时显示出错:error,cannot bind to tte specified serial port ********,我在Linux系统下用串口调试助手显示可以正常接收数据,但在终端始终出现上述错误?请问这是什么回事?
答:可以试着用sudo执行一下。

Rockets  NPC
 楼主|

发表于 2014-8-13 18:22:47

newbee 发表于 2014-8-12 21:56
其实想问下,如果说要学习如何制作雷达,需要什么样的知识?

很好的问题
如果你说的是如何制作激光雷达,其实robopeak已经将激光雷达的原理公布
你可以参考其提供的资料制作。
如果是激光雷达,我觉得你可能需要数学(建立数学模型)光学(计算光路)编程(c++)等一系列的知识。
但最重要的我觉得还是一颗好奇的心。
回复 支持 1 反对 0

使用道具 举报

Rockets  NPC
 楼主|
来自手机

发表于 2014-5-18 10:41:05

最近robopeak发布了arduino的驱动,可以在Arduino下使用激光雷达http://www.robopeak.com/blog/?p=618 http://www.tudou.com/programs/view/rf2Lo7ov95U/?lvt=0&resourceId=0_07_10_28 http://www.robopeak.net/data/doc/rplidar/appnote/RPLDAPPN01-rplidar_appnote_arduinolib-zhCN.pdf
回复 支持 反对

使用道具 举报

csk  见习技师

发表于 2014-5-18 23:25:50

几个配图: rplidar_arduino.PNG
Voila_Capture 2014-05-17_12-03-07.png
DSC00808.JPG

回复 支持 反对

使用道具 举报

Rockets  NPC
 楼主|

发表于 2014-7-8 14:17:31

FAQ更新了些问题,欢迎自取。
回复 支持 反对

使用道具 举报

supertoby  见习技师

发表于 2014-7-23 10:03:12

好东西。。。。想研究但无从下手。。。
回复 支持 反对

使用道具 举报

Rockets  NPC
 楼主|

发表于 2014-7-23 18:16:12

supertoby 发表于 2014-7-23 10:03
好东西。。。。想研究但无从下手。。。

有何疑问,尽管问来!
回复 支持 反对

使用道具 举报

newbee  学徒

发表于 2014-8-12 21:56:27

其实想问下,如果说要学习如何制作雷达,需要什么样的知识?
回复 支持 反对

使用道具 举报

newbee  学徒

发表于 2014-8-13 21:45:57

Rockets 发表于 2014-8-13 18:22
很好的问题
如果你说的是如何制作激光雷达,其实robopeak已经将激光雷达的原理公布
你可以参考其提供的资 ...

想慢慢尝试做一个出来,问题就是知识不够,玩硬件现在是爱好。谢谢回复!
回复 支持 反对

使用道具 举报

newbee  学徒

发表于 2014-8-13 21:45:59

Rockets 发表于 2014-8-13 18:22
很好的问题
如果你说的是如何制作激光雷达,其实robopeak已经将激光雷达的原理公布
你可以参考其提供的资 ...

想慢慢尝试做一个出来,问题就是知识不够,玩硬件现在是爱好。谢谢回复!
回复 支持 反对

使用道具 举报

流苏  学徒

发表于 2014-8-25 22:25:19

你好!平面内雷达满足不了基本的需求,想用一个三维空间内的激光雷达,请问有没有相关的传感器,我查了一下,网上有说三维激光扫描仪的东西,但是这个东西一般太慢。我现在只需要几米的范围但是要求更快些,到大ms级别最好,误差在mm级别
回复 支持 反对

使用道具 举报

流苏  学徒

发表于 2014-8-25 22:25:33

希望得到您的解答!谢了!!
回复 支持 反对

使用道具 举报

Rockets  NPC
 楼主|

发表于 2014-8-26 10:57:29

流苏 发表于 2014-8-25 22:25
你好!平面内雷达满足不了基本的需求,想用一个三维空间内的激光雷达,请问有没有相关的传感器,我查了一下 ...

我觉得,你可以考虑把激光雷达安装在一个旋转的平台上,这样就可以有一个全三维的扫描,当然这需要软件的支持。
回复 支持 反对

使用道具 举报

流苏  学徒

发表于 2014-8-26 13:39:31

Rockets 发表于 2014-8-26 10:57
我觉得,你可以考虑把激光雷达安装在一个旋转的平台上,这样就可以有一个全三维的扫描,当然这需要软件的 ...

不这样,无论是什么点击带动都太慢了,扫描之后需要实时返回相关的数据,需要是10ms-100ms这样级别的时间啊。而且关于你旋转的角度如何测量精度也是个问题啊。
回复 支持 反对

使用道具 举报

流苏  学徒

发表于 2014-8-26 13:42:48

Rockets 发表于 2014-8-26 10:57
我觉得,你可以考虑把激光雷达安装在一个旋转的平台上,这样就可以有一个全三维的扫描,当然这需要软件的 ...

我用的激光雷达,她的一数据返回20ms左右,再算上旋转一周的时间久太久了。所以很纠结不知道还有什么解决办法没?
回复 支持 反对

使用道具 举报

流苏  学徒

发表于 2014-8-26 13:44:22

Rockets 发表于 2014-8-26 10:57
我觉得,你可以考虑把激光雷达安装在一个旋转的平台上,这样就可以有一个全三维的扫描,当然这需要软件的 ...

这么跟你说吧,我们的东西想让机器人能偶识别飞行的小物体,并作出动作。根据返回数据我们自己做处理
回复 支持 反对

使用道具 举报

Rockets  NPC
 楼主|

发表于 2014-8-26 15:31:14

流苏 发表于 2014-8-26 13:44
这么跟你说吧,我们的东西想让机器人能偶识别飞行的小物体,并作出动作。根据返回数据我们自己做处理 ...

我的看法是,这个应该属于视觉捕捉的范畴。因此我觉得你大概需要的是一个高速高分辨率的基于双目摄像头的定位系统来进行。
kinect系统也许也可以,不过貌似处理速度不够快,没有玩过,具体数据不详。
你这个系统有点类似组群四轴定位那个视频的。
回复 支持 反对

使用道具 举报

流苏  学徒

发表于 2014-8-27 20:37:17

Rockets 发表于 2014-8-26 15:31
我的看法是,这个应该属于视觉捕捉的范畴。因此我觉得你大概需要的是一个高速高分辨率的基于双目摄像头的 ...

你说的意思我明白了,就是应用摄像头来捉这个技术,我们现在也有这么个想法,也就相当于一个摄像头抓住物体确定方位,几个摄像头配合确定物体的深度。但是这个深度是个问题啊。不像是激光雷达可以轻易知道这个。
回复 支持 反对

使用道具 举报

我是创客  学徒

发表于 2014-8-28 15:08:32

楼主能不能加你qq,我刚买了个rplidar,有很多资料没有!想多请教楼主一下。
回复 支持 反对

使用道具 举报

Rockets  NPC
 楼主|

发表于 2014-9-20 20:34:35

我是创客 发表于 2014-8-28 15:08
楼主能不能加你qq,我刚买了个rplidar,有很多资料没有!想多请教楼主一下。 ...

可以和客服直接联系询问索要或者和robopeak联系哦。
回复 支持 反对

使用道具 举报

李天佑  学徒

发表于 2014-11-6 08:38:58

楼主RPlidar,建议用多少位的单片机比较好
回复 支持 反对

使用道具 举报

12下一页
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
wifi气象站

硬件清单

btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2019 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail