46044| 39
|
激光雷达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芯片会计算实际角度和报告角度的差距。 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执行一下。 |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed