sick激光器LMS4000软件使用方法以及通信协议数据解析
前言
最近在使用sick激光传感器LMS4000配合机器人获取点云数据,在网上查了几天都没查到这个类型激光器相关的资料,其他类型我看有博文提及过。自己看英文的说明书学习很折磨,因此在初步研究明白部分使用方法后,做一个记录和总结,也希望能帮助一下有和我有相同困扰的工程师,本人第一次写博文,有错误或者表述不清晰的地方希望大家指出,互相交流,一起进步。
我们工作站使用的sick激光器型号是LMS4000,具体的一些安装方法我个人不太了解,如果有想了解这方面的朋友,留言给我,我可以咨询下同事。我们实验站只使用了一台激光器,对多台激光器联合工作的模式也不太了解。因此,以下的内容只针对单台LMS4000在windows操作系统下的软件部分。
一、sick激光传感器软件下载
需要下载的说明书和软件都在这里。
说明书,只有英、德、法三种语言(本人英文水平一般,因此看的我很折磨)。
软件下载界面。
C++和C的程序库是在github上的,二者是一个文件,应该是SDK,我看了下感觉是需要ROS的,这个我完全不了解,因此我就没使用,大家可以酌情下载,如果有会使用的,可以教教我。
如果想直接使用,下载SOPAS Engineering Tool就可以了,下载完成后直接解压即可;SDD文件也需要下载,下载完成后放在软件同一目录下,软件内需要时配置即可。
也可以在Sopas软件内部下载SDD文件,那种方式好像更容易些,但是我当时配置的时候忘记截图了。
以上就是软件的部分准备工作,下面讲一下软件的使用方法。
二、软件使用方法
如果使用场景比较简单,可以直接参考此章,如果使用场景较复杂,建议还是查看说明书的第3章和第7章。
1.设置网段以及登录设备
首先将激光器通过网线与自身电脑相连,为了能顺利连接上设备,要修改电脑的IP地址与设备在同一个网段,我是按照同事的指导配置的,这里就不细说了,放一张截图供大家参考吧。
通过网线正确连接上设备之后就可以登陆了,右键点击想要使用的设备,如图所示。
登录的时候选择相应的用户级别,我这里选的是“授权的用户”,密码在说明书的第7章7.1节,登录成功后点击设备右上角的三个点。
主界面上左侧显示一些设备信息,右侧就是当前角度范围内激光器采集到的点,红色框的地方是对显示模式进行修改,可以根据需要自行查看。
2.基础设置以及应用
基础设置里会有一些频率、角度分辨率、测量角度之类的量,它们中部分可以在后面应用界面修改。激光控制有自由采集、软触发、硬触发等,我只用过自由采集和软触发。自由采集情况下,激光会常亮,上面开始测量停止测量的选项也会消失,相当于一直处于开始测量状态;软触发情况下,开始测量的时候激光器亮,停止测量和待机情况下激光器不亮。
我在测试过程中发现了一个事情:
1、从开始测量状态切换到待机状态再切换回开始测量状态,激光器会由亮到关闭再到亮;
2、从开始测量状态切换到停止测量状态再切换回开始测量状态,激光器由亮到关闭,切换回来的时候也不会亮,要想让激光器有光,需要停止测量后切换两次待机状态再切换回开始测量状态,即停止—待机—开始—待机—开始,激光器才会亮。
这个应该是时间戳,我没用到,所以没做设置,就不细说了。
下面说应用界面。
这个是一些激光器的扫描设置和预处理,我使用此激光器只是为了取点云,点云处理会后续处理,因此我对中间那些滤波器的选择比较随意,需要设置这些的朋友还得阅读下说明书。这个界面我主要就是设置开始终止角度以及最下面的角度分辨率。
下面是数据输出格式。我只需要距离、角度、码值(Encoder),设置好让它们以数字格式输出即可。
最下面是扫描的一些设置,设置好扫描时间和码值,相机的支架带着相机运动并点击开始,就可以得到一幅点云了,点云内的数据单位是m,我比较喜欢用mm,因此我在处理过程中会将其×1000。
这里需要注意的是,
1、软件里的扫描时间最长只有10s,如果需要更长时间的数据,就需要调用SDK的接口或者自己写程序与激光器通信(3.2节会讲)
2、保存后的pcd文件,无法直接用点云显示软件打开,以CloudCompare为例,打开pcd文件的时候会报错,需要人为修改一下pcd文件,将这四个多余的部分删除即可。
3、保存的pcd文件的坐标轴不是右手系的,无法用于后续标定等步骤,因此我在处理的时候,重新构建了相机坐标系,以激光线的方向为x轴,高度方向为z轴,垂直于此二轴且码值变化的方向为y轴。pcd文件中是按照x、z、y的坐标进行存储的。
4、按照3中的方法转换点云后,x、z方向上坐标值与真实空间中的值基本一样了,但是y方向的值仍然与真实空间中距离有偏差,这是因为码值分辨率导致的,这个的调整方法在2.4节中说。
3.外部接口设置以及配置
左侧应该是激光硬触发的接口,我暂时未使用到,不在此细说了。右侧上方是IP地址,下面是TCP通信的端口。
上图中,我只设置过编码器的值,别的都没改过,编码器的增加方式选择如图所示,将相机的支架移动到一个初始的位置,将码值置0(保证移动后码值增加),相当于此位置即为相机坐标系y轴的零点,后续采集的时候,可以记录起始点的码值,获取点云后通过码值的比例和起始点码值得到当次采集的点在相机坐标系下的位置。如果10s的扫描时间可以满足你实验的需求,码值设置不设置都不会有影响。
前面的参数都设置好后,就可以点击“save permanently”保存了,后面再打开软件,默认使用上次保存的参数。
4.码值与距离的比例以及码值分辨率
首先采集两组点云,分别记录它们的起始点码值和空间中的距离,两个起点的距离尽量远一些,这样求出来的比例尺比较准确,用码值除以距离可以得到一个比例尺。举个例子,第一次扫描的起始点码值为977,第二次扫描的起始码值为5932,它们的空间距离为1800mm,比例尺即为
1800 / (5932 - 977) = 0.36326942
码值分辨率就是单次扫描的点云内部的比例。点云内某一点与扫描起点的距离:当前坐标值 × 0.36326942×10×1000,单位是mm。
第二章部分章节拖了一个月才补上,一些细节确实记忆不够深刻,如有错误,欢迎指正。
三、通信协议解析
通信协议的下载地址和说明书一样,它就在说明书的下面。
PS:这个通信协议的文档是针对所有产品的,“×”的代表对应产品有此项功能。
1.通过socketTool通信
由于我自己不会写TCP通信,但是我还想先解析通信协议,所以先用通信助手获取应答数据。
我们是作为客户端,也就是TCP client,设置好IP和端口,按照上述截图,我这边输入“192.168.3.201”和“2112”,点击连接后,即可完成连接。
接下来发送一些简单的指令,看看应答数据如何(只看十六进制部分)。
以Authorized client登录:
发送数据:{
02 73 4D 4E 20 53 65 74 41 63 63 65 73 73 4D 6F 64 65 20 30 33 20 46 34 37 32 34 37 34 34 03 }sMN SetAccessMode 03 F4724744[1次]
收到数据:{
02 73 41 4E 20 53 65 74 41 63 63 65 73 73 4D 6F 64 65 20 31 03 }sAN SetAccessMode 1
与通信协议对照后发现一样,Start measurement、Stop measurement、Stand by状态的应答也是固定的,不在此赘述了。
读取频率和角分辨率:
发送数据:{
02 73 52 4E 20 4C 4D 50 73 63 61 6E 63 66 67 03 }sRN LMPscancfg[1次]
收到数据:{
02 73 52 41 20 4C 4D 50 73 63 61 6E 63 66 67 20 45 41 36 30 20 31 20 33 34 31 20 38 36 34 37 30 20 31 33 31 32 44 30 03 }sRA LMPscancfg EA60 1 341 86470 1312D0
EA60 就代表600HZ,即频率;341代表1/12°,即角度分辨率;86470 是LMS4000的起始角度(这个是产品本身的参数,不是人为设置的,而且通信协议上应该是写错了),即55°;1312D0是LMS4000的终止角度,即125°。
读取实际输出范围(当前设置65°-108°):
发送数据:{
02 73 52 4E 20 4C 4D 50 6F 75 74 70 75 74 52 61 6E 67 65 03 }sRN LMPoutputRange[1次]
收到数据:{
02 73 52 41 20 4C 4D 50 6F 75 74 70 75 74 52 61 6E 67 65 20 31 20 33 34 31 20 39 45 42 31 30 20 31 30 37 41 43 30 03 }sRA LMPoutputRange 1 341 9EB10 107AC0
341代表1/12°,即角度分辨率;9EB10是自己设置的起始角度,即65°;107AC0是自己设置的终止角度,即108°。
上面的测试让我对通信协议有了基础的了解,接下来就是解析单帧数据。
使用通信协议说明4.3.6的poll one telegram获取单帧数据:
发送数据:{
02 73 52 4E 20 4C 4D 44 73 63 61 6E 64 61 74 61 03 }sRN LMDscandata[1次]
收到数据:{
02 73 52 41 20 4C 4D 44 73 63 61 6E 64 61 74 61 20 31 20 31 20 31 33 36 41 43 37 44 20 31 20 30 20 35 41 39 38 20 42 35 32 38 20 41 34 37 44 42 43 36 30 20 41 34 37 44 43 30 35 35 20 30 20 30 20 38 20 30 20 30 20 45 41 36 30 20 32 31 43 30 20 31 20 42 34 39 20 30 20 32 20 44 49 53 54 31 20 33 44 43 43 43 43 43 44 20 30 30 30 30 30 30 30 30 20 39 45 42 31 30 20 33 34 31 20 32 30 35 20 30 20 36 45 37 36 20 35 34 35 37 20 35 34 35 37 20 35 34 36 33 20 35 34 41 43 20 35 35 32 34 20 35 35 32 30 20 35 35 42 30 20 35 35 45 30 20 35 36 31 38 20 35 36 39 31 20 35 36 42 32 20 35 37 35 34 20 35 37 38 36 20 35 37 42 41 20 35 37 45 36 20 35 37 45 32 20 35 37 44 37 20 35 37 43 46 20 35 37 42 45 20 35 37 42 31 20 35 37 41 34 20 35 37 39 36 20 35 37 37 46 20 35 37 37 37 20 35 37 36 44 20 35 37 36 30 20 35 37 35 34 20 35 37 34 43 20 35 37 33 38 20 35 37 32 44 20 35 37 31 46 20 35 37 31 36 20 35 37 30 32 20 35 36 46 39 20 35 36 45 46 20 35 36 45 33 20 35 36 44 39 20 35 36 43 41 20 35 36 42 44 20 35 36 42 31 20 35 36 41 31 20 35 36 39 35 20 35 36 38 41 20 35 36 38 30 20 35 36 37 35 20 35 36 36 37 20 35 36 36 30 20 35 36 35 32 20 35 36 34 41 20 35 36 34 30 20 35 36 32 44 20 35 36 32 35 20 35 36 31 32 20 35 36 30 43 20 35 36 30 34 20 35 35 46 34 20 35 35 45 36 20 35 35 44 45 20 35 35 44 32 20 35 35 43 33 20 35 35 42 46 20 35 35 42 36 20 35 35 41 37 20 35 35 39 41 20 35 35 39 30 20 35 35 37 45 20 35 35 37 38 20 35 35 37 31 20 35 35 36 31 20 35 35 35 38 20 35 35 35 31 20 35 34 35 34 20 35 31 31 30 20 35 31 31 32 20 35 31 30 39 20 35 31 30 38 20 35 31 30 41 20 35 31 35 38 20 35 32 36 33 20 35 32 41 37 20 35 33 31 46 20 35 33 33 33 20 35 33 37 41 20 35 33 45 35 20 35 34 33 46 20 35 34 36 37 20 35 34 38 36 20 35 34 39 35 20 35 34 39 43 20 35 34 39 39 20 35 34 38 45 20 35 34 38 32 20 35 34 37 32 20 35 34 36 39 20 35 34 36 31 20 35 34 35 45 20 35 34 35 33 20 35 34 34 42 20 35 34 34 34 20 35 34 33 39 20 35 34 33 31 20 35 34 32 37 20 35 34 31 46 20 35 34 31 42 20 35 34 31 30 20 35 34 30 39 20 35 33 46 46 20 35 33 46 38 20 35 33 45 44 20 35 33 45 38 20 35 33 45 31 20 35 33 44 31 20 35 33 43 38 20 35 33 43 34 20 35 33 42 44 20 35 33 42 36 20 35 33 41 43 20 35 33 41 30 20 35 33 39 38 20 35 33 38 46 20 35 33 38 39 20 35 33 38 32 20 35 33 37 44 20 35 33 37 34 20 35 33 36 45 20 35 33 36 38 20 35 33 36 30 20 35 33 35 41 20 35 33 35 34 20 35 33 34 38 20 35 33 34 31 20 35 33 33 42 20 35 33 33 33 20 35 33 32 43 20 35 33 32 36 20 35 33 32 31 20 35 33 31 39 20 35 33 31 31 20 35 33 30 38 20 35 33 30 32 20 35 32 46 43 20 35 32 46 34 20 35 32 45 44 20 35 32 45 36 20 35 32 44 43 20 35 32 44 36 20 35 32 44 30 20 35 32 43 44 20 35 32 43 41 20 35 32 43 34 20 35 32 42 44 20 35 32 42 35 20 35 32 41 43 20 35 32 41 37 20 35 32 41 31 20 35 32 39 43 20 35 32 39 34 20 35 32 38 46 20 35 32 38 38 20 35 32 38 31 20 35 32 37 41 20 35 32 37 35 20 35 32 36 45 20 35 32 36 37 20 35 32 36 35 20 35 32 35 46 20 35 32 35 41 20 35 32 35 33 20 35 32 34 45 20 35 32 34 42 20 35 32 34 37 20 35 32 33 46 20 35 32 33 38 20 35 32 33 35 20 35 32 32 42 20 35 32 32 36 20 35 32 32 34 20 35 32 31 46 20 35 32 31 42 20 35 32 31 35 20 35 32 31 31 20 35 32 30 44 20 35 32 30 37 20 35 32 30 31 20 35 31 46 42 20 35 31 46 36 20 35 31 46 35 20 35 31 46 30 20 35 31 45 44 20 35 31 45 36 20 35 31 45 33 20 35 31 44 46 20 35 31 44 42 20 35 31 44 33 20 35 31 43 46 20 35 31 43 45 20 35 31 43 39 20 35 31 43 32 20 35 31 42 45 20 35 31 42 39 20 35 31 42 36 20 35 31 42 35 20 35 31 42 32 20 35 31 41 44 20 35 31 41 38 20 35 31 41 36 20 35 31 41 33 20 35 31 39 45 20 35 31 39 38 20 35 31 39 33 20 35 31 39 33 20 35 31 39 30 20 35 31 38 43 20 35 31 38 37 20 35 31 38 33 20 35 31 37 44 20 35 31 32 39 20 34 46 35 37 20 34 46 32 37 20 34 46 32 32 20 34 46 32 30 20 34 46 31 42 20 34 46 31 36 20 34 46 31 30 20 34 46 30 43 20 34 46 30 36 20 34 46 30 33 20 34 46 30 31 20 34 46 30 32 20 34 46 30 30 20 34 45 46 46 20 34 45 46 44 20 30 20 33 34 34 31 20 33 34 30 31 20 33 33 44 44 20 33 33 43 31 20 33 33 42 34 20 33 33 41 45 20 33 33 41 38 20 33 33 41 31 20 33 33 39 36 20 33 33 38 35 20 33 33 38 34 20 33 33 37 45 20 33 33 37 41 20 33 33 37 37 20 33 33 37 30 20 33 33 36 39 20 33 33 36 35 20 33 33 35 41 20 33 33 35 38 20 33 33 35 32 20 33 33 34 39 20 33 33 34 37 20 33 33 33 46 20 33 33 33 41 20 33 33 33 42 20 33 33 33