2D激光雷达LMS研究(其一)

前言
LMS511及LMS111拿在手里已经一年了,相关的算法开发已经进行了一年,写这个系列的目的在于备忘,我记性不大好,顺便复习一下所学的知识。另外,如果有很多人想看的话,我可能会写的详细一点。
在这里插入图片描述
如上所示,sick的激光雷达系列都提供了一个软件,用于测试。但是这个软件没有提供太多的算法支撑,所以最好还是自己编一个程序,实现自己的算法。
https://www.sick.com/cn/zh
程序和文档都可以在官网搜索下载

LMS系列激光雷达连接及报文解读
关于连接部分我写过一点
https://blog.csdn.net/qq_33782623/article/details/103165377

总之,前三位的IP地址一定要保证相同,这样才可以达成局域网。

https://download.csdn.net/download/qq_33782623/12205270
这里推荐下一个测试助手,因为接下来我们将讨论一下如何搭建TCP连接,并收到信息。
在这里插入图片描述
首先,激光雷达是服务器端,上位机是客户端。
上位机先发命令,请求激光雷达把扫描数据发给客户端。

02 02 02 02 00 00 00 11 73 45 4E 20 4C 4D 44 73 63 61 6E 64 61 74 61 20 01 33 03
(转换为字符串 sEN LMDscandata 3)
以十六进制的形式发送给激光雷达。
这是我的lms111的请求测量报文,有可能不适用于你的激光雷达。

如果没反应建议就发送这段命令,
02 73 45 4E 20 4C 4D 44 73 61 6E 64 61 74 61 31 03
(转换为字符串 sEN LMDscandata 1)
以字符串形式发送也可以。

报文文档也一并给大家提供,这都可以在sick官网上下载。
如果之前学过一段时间的ASCII码,就知道02 03为控制字符 ,分别表示本文开始和结束。建议大家再看一下ascii码的知识。
在这里插入图片描述
这是文档中关于连续取数据的命令,对应了我们所发送的
02 73 45 4E 20 4C 4D 44 73 61 6E 64 61 74 61 31 03
化为字符串
也就是 sEN LMDscandata 1

激光雷达应当回
02 73 53 4E 20 4C 4D 44 73 63 61 6E 64 61 74 61 20 31 20 31 20 31 31 34 30 39 31 32 20 30 20 30 20 43 38 32 36 20 43 38 32 39 20 33 46 35 38 38 32 32 30 20 33 46 35 38 44 45 35 44 20 30 20 30 20 37 20 30 20 30 20 31 33 38 38 20 31 36 38 20 30 20 31 20 44 49 53 54 31 20 33 46 38 30 30 30 30 30 20 30 30 30 30 30 30 30 30 20 46 46 46 39 32 32 33 30 20 31 33 38 38 20 32 31 44 (往下皆为距离信息)
20 33 41 20 33 38 20 32 37 20 32 36 20 33 33 20 33 35 20 33 36 20 33 34 20 33 37 20 33 34 20 33 31 20 33 34 20 33 37 20 32 41 20 32 46 20 33 36 20 33 34 20 32 45 20 33 43 20 33 36 20 33 35 20 33 42 20 33 43 20 34 36 20 34 30 20 33 37 20 34 35 20 34 34 20 34 44 20 34 45 20 34 34 20 35 31 20 35 30 20 35 37 20 35 36 20 35 37 20 35 35 20 35 46 20 36 38 20 36 39 20 36 42 20 36 42 20 36 37 20 37 33 20 37 35 20 37 41 20 37 32 20 36 31 20 36 41 20 35 36 20 36 44 20 39 38 20 41 37 20 39 43 20 39 32 20 39 36 20 39 42 20 41 34 20 41 35 20 41 32 20 39 34 20 39 45 20 41 32 20 41 32 20 41 31 20 38 45 20 41 31 20 39 45 20 39 38 20 38 43 20 39 44 20 38 46 20 39 31 20 39 38 20 39 34 20 39 46 20 39 35 20 39 31 20 39 41 20 39 32 20 39 41 20 38 44 20 38 46 20 38 41 20 39 34 20 38 45 20 39 43 20 38 46 20 39 33 20 39 31 20 39 43 20 39 45 20 38 39 20 39 33 20 39 35 20 39 39 20 39 44 20 39 41 20 39 41 20 39 31 20 39 41 20 39 41 20 38 37 20 39 30 20 38 44 20 39 34 20 39 35 20 38 45 20 39 39 20 39 32 20 39 35 20 39 37 20 39 35 20 38 44 20 39 35 20 39 33 20 39 34 20 38 44 20 39 46 20 39 39 20 39 46 20 39 38 20 41 30 20 39 46 20 39 31 20 39 36 20 39 39 20 41 31 20 41 31 20 41 37 20 39 39 20 39 44 20 39 46 20 41 33 20 39 35 20 39 35 20 31 41 32 44 20 31 41 35 41 20 31 41 36 36 20 31 41 37 42 20 31 41 37 37 20 31 41 39 44 20 31 41 43 41 20 31 41 45 43 20 31 42 30 42 20 31 42 33 36 20 31 42 33 41 20 31 41 32 41 20 31 39 44 31 20 31 39 37 30 20 31 39 31 32 20 31 38 42 45 20 31 38 35 38 20 31 37 46 35 20 31 37 41 35 20 31 37 34 46 20 31 36 46 41 20 31 36 41 45 20 31 36 35 30 20 31 36 30 38 20 31 35 42 46 20 31 35 37 39 20 31 35 33 35 20 31 34 46 45 20 31 34 43 35 20 31 34 37 37 20 31 34 33 38 20 31 34 30 34 20 31 33 44 32 20 31 33 39 41 20 31 33 36 30 20 31 33 32 44 20 31 32 46 32 20 31 32 43 42 20 31 32 39 35 20 31 32 36 37 20 31 32 34 34 20 31 32 30 45 20 31 31 45 31 20 31 31 42 43 20

计算机接受的char为十进制,要转为十六进制才是上面的报文。

我们再转为ASCII字符串大概为这个形式(我随机找的别人博客的报文,和上文内容不同)
https://blog.csdn.net/embedclub_LYF/article/details/42290939
sRA LMDscandata 1(版本号) 1(设备号) 89A271(序列号) 0 0(设备状态) C44(指令计数) 5CA(扫描计数) E1CED(开始时间) E2775(发送时间) 0 0(数字量输入) 7 0(数字量输出) 0(保留) 9C4(2500HZ) 168(扫描分辨率 360度 ) 0(没有编码器) 1(输出通道1) DIST1(输出内容) 3F800000(系数 很重要的数字 此时表示真实距离为距离信息的1倍 为40000000时表示真实距离为距离信息的2倍) 00000000(系数偏移量) FFF92230(开始角度 反码 -450000 就是-45度) 9C4(角度分辨率 2500 就是0.25度 每个扫描点的角度增量) 43A(扫描点个数) 44F(第一个扫描点:4256+416+15=1103mm 角度为-45度 注意是围绕扫描原点的极坐标) 445(第二个扫描点 角度为-45+0.25=-44.75 以此类推直至扫描个数上限) 451 440 451 450 44F 459 45B 474 45B 47B 46E 470 483 49B 481 48C 4A3 49D 4B3 4B7 4B1 4C7 4C1 4C2 4D4 4DD 4E4 4EB 4FA 511 505 504 50E 522 529 544 537 53C 54F 55A 564 56C 586 587 583 5A1 5B2 5A4 5AD 5C9 5CE 5ED 5FB 5F6 5FF 609 604 620 62C 633 62A 64F 664 66E 680 679 69D 6AC 6AD 6C3 6DE 6E2 6FD 6FE 714 719 728 73C 753 765 761 753 74B 753 751 761 763 759 75B 742 73F 74E 74E 745 742 74E 740 729 728 737 724 724 732 738 728 716 70B 72E 70F 717 713 715 714 715 709 710 705 6FF 6F8 702 6F3 6FB 6F3 6EB 6F1 6E8 6E6 6E7 6F5 6E1 6DD 6DE 6E7 6E0 6D9 6DE 6D3 6E7 6DB 6D0 6E6 6D4 6E0 6CC 6C7 6D9 6DA 6D1 6C5 6D3 6CB 6C9 6CE 6CF 6CE 6C3 6BA 6CD 6C9 6C7 6C4 6C2 6CB 6CF 6B9 6C0 6CC 6BB 6CB 6CF 6C8 6BC 6B8 6C1 6C4 6C1 6C1 6C0 6CD 6C5 6C0 6BB 6CB 6C8 6BB 6CC 6B4 6CF 6C1 6CA 6C3 6CA 6B6 6C0 6CC 6C3 6D2 6BB 6CB 6C5 6D3 6BD 6CE 6CC 6C1 6C4 6CD 6E0 6BE 6C9 6CF 6D8 6CD 6D4 6C1 6CB 6CC 6CD 6C8 6D8 6C6 6D0 6CC 6DB 6D2 6D7 6E0 6E2 6E1 6E0 6ED 6DC 6E4 6E8 6E3 6F4 6E1 6F4 6E6 6E9 6F4 705 6F6 6F9 6F0 6FA 6F1 6FD 710 70A 702 71C 709 71F 70A 725 716 718 71B 727 72D 728 720 72D 72E 72E 742 73F 74C 749 742 73D 74C 751 759 75B 75F 764 765 756 75B 76F 76C 777 771 77C 785 77F 786 79A 793 797 79F 7A7 7B0 7AC 7A5 7B9 7C1 7C5 7C6 7D5 7D5 7DB 7C6 7DD 7E1 7E9 7E5 802 805 80A 7F5 81A 821 81B 82D 830 834 837 82B 828 837 84A 84B 861 869 866 871 87E 888 89D 89C 8AE 8AF 8BB 8BD 8C6 8C6 8D4 8EA 8E9 8E4 8FD 904 904 916 91D 930 931 93A 94D 942 956 94E 966 978 980 988 992 993 99D 9AB 9C2 9D1 9DC 9E3 9F2 9F7 A04 A07 A1A A12 A13 A01 A07 9EE 9EE 9C8 9D5 9C9 9C0 9B1 9AE 9A5 99D 989 992 981 985 974 975 96D 967 95E 947 93F 944 939 93C 929 92C 918 915 907 908 905 8F8 8EF 8F2 8EB 8ED 8DC 8D1 8BF 8D0 8C1 8CE 8C7 8CC 8DE 8F7 914 923 907 8FC 8E3 8C1 8B4 8C3 8C7 8D0 8C0 8AB 8AE 8A9 89F 89D 89C 8A3 8A0 89F 89E 891 88E 897 88D 892 867 84D 865 875 875 87C 873 875 860 84D 855 852 84A 83F 834 833 80D 7E2 7DB 7E5 7D8 7DB 7D4 7DA 7CE 7DE 7D8 7D0 7CE 7CC 7CC 7C3 7BB 7C9 7BD 7B7 7B2 7AF 7BB 7BD 7B4 7B8 7B7 7B5 79E 7A8 7A0 7A1 7A4 79D 7A8 795 792 799 78C 791 79E 78D 79E 794 796 794 788 79A 78D 788 784 781 77E 77E 780 779 784 78C 780 78A 774 78A 782 77C 780 783 77F 782 77B 76F 77F 77B 77E 782 785 78A 77B 779 76E 781 77A 77A 777 778 76D 772 77C 771 794 79C 7A3 7A3 7AB 7B4 7C5 7DE 7D6 7E9 7EA 7E9 7F0 7EA 7EC 7E7 7B6 7C7 7DA 7EC 7EA 7DD 7E0 7ED 7F4 7E2 7F5 7F5 7F7 7EF 7F1 7EC 7E0 7EE 7E7 7CF 7EC 7F4 7F3 7F9 7E0 7EB 7F6 7FE 7FF 7F4 804 7FB 7F9 807 803 810 7EE 7D4 7CE 7C5 7CB 7CB 7D4 7E2 7DF 7F3 7E3 7ED 7E2 803 834 815 813 81F 81D 811 81A 81D 81B 82B 833 82F 828 837 842 842 83A 844 855 84D 854 858 855 86F 878 86D 87B 880 879 877 874 87C 886 881 895 89E 887 898 8A8 8A8 899 8AE 8B3 8B5 8AD 8BA 8C8 8BE 8D9 8D0 8DE 8E2 8E5 8E6 8EF 902 905 90E 90B 917 913 929 92C 939 93B 946 94E 952 953 960 969 978 972 989 987 98B 991 99A 9AA 9B7 9B9 9D1 9D1 9D5 9EB 9F2 9FD A0F A07 A17 A23 A3C A34 A49 A52 A5D A65 A7E A7E A8F AA0 A91 AAD AC5 AC1 AD5 ACB AE5 AE7 AF2 B07 B0F B27 B34 B52 B41 B68 B6F B8B B8B B9D BAD BC7 BD6 BDB BF8 BFA C1A C2E C45 C4D 27C 28A 286 282 27A 26A 258 266 26A 26E 265 25A 255 256 254 24C 251 253 24A 245 24B 24B 240 23C 239 237 237 239 237 23C 234 22F 230 224 22C 227 224 22F 221 21B 21D 20F 20B 215 223 217 216 212 21F 21F 20E 21D 217 218 209 1FF 21A 20F 1F8 217 206 1FD 205 212 215 214 1F9 203 202 1FC 203 201 20D 200 205 200 1E3 1FD 1FB 1F3 204 1F9 1D9 1F7 1F9 1ED 1DB 1F2 1F9 1F2 1DC 1F5 1ED 1EB 1E9 1EC 1E8 1EA 1D4 1D2 1EF 1E0 1D2 1E8 1F2 1F2 1D0 1D8 1DA 1B3 198 17D 188 179 15D 177 178 189 190 185 199 1A0 198 1A9 1A6 1B5 1B2 19E 1A5 1A2 19C 1A9 1A7 1A4 1AB 19E 199 18A 171 150 154 13D 135 140 146 146 154 15C 15E 158 160 14A 13B 12A 119 11B 124 127 129 131 132 129 12F 11C 129 127 132 12C 12B 120 128 117 126 11D 130 117 129 122 12B 110 10E 102 118 11B 122 12B 127 10E 119 108 109 11F 10E 10F 119 107 110 10B 110 114 105 FC 107 FD F3 E9 E7 EF EC D4 DC C3 CB C1 BF BD C5 B3 B7 9A 9B A9 9C 92 8D 92 97 9B 7F 90 89 7F 73 85 77 7A 68 77 65 77 76 7F 7B 6F 62 69 7B 72 6C 64 6F 67 51 51 4F 57 5C 48 56 4D 4D 3C 43 45 44 44 46 4C 56 39 48 41 4B 43 52 50 3E 60 73 66 88 88 9F AA B2 B3 CD E6 105 10D 12D 145 196 1A1 1C1 1B1 1E3 1E3 1E4 1DE 1E7 1EB 1F0 1E4 1F1 1F7 1FE 206 1F5 1FA 206 1F9 200 203 20A 21C 210 20C 20D 205 21D 219 21A 222 217 22E 229 225 237 22D 22D 0 0 0 0 0 0
想要得到确实的距离信息,还要再把十六进制的距离信息转换为十进制。

现在我们整理一下流程:
计算机接受char类型(十进制)
转为 ASCII码 此时能得到十六进制的字符串距离信息
再将十六进制距离信息字符串转为十进制数字信息。

至此报文解析结束了,至于编程如何实现,等到导师的项目结题,我会把我的程序发给大家看看。

https://me.csdn.net/renshengrumenglibing
这博主写的几篇文章不错,我就参照他的形式,讲一下激光扫描的带阻滤波、均匀采样、激光特征分类、描述子生成以及位姿矩阵求解。但不会上代码的,因为涉及到导师项目,结题以后会无保留的发给大家。

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
激光雷达SICK LMS200编译失败可能有多种原因。首先,编译错误可能是由于软件版本不匹配所引起的。如果使用的编译器或操作系统版本与激光雷达的驱动程序或SDK不兼容,就会出现编译失败。此时,我们可以尝试使用兼容的软件版本重新安装驱动程序或SDK,然后重新编译。 其次,编译失败可能是由于配置错误引起的。在使用激光雷达之前,通常需要进行一些配置,如设置环境变量、路径、端口等。如果配置不正确,编译过程中会出现错误。我们需要检查这些配置参数,确保其正确无误,并重新尝试编译。 另外,编译失败还可能是由于代码错误引起的。在编写代码时,可能会存在语法错误、变量命名错误、函数调用错误等。检查代码并修复这些错误是解决编译失败的重要步骤。我们可以仔细检查代码中的每一行,并参考相关文档或示例代码来确保代码的正确性。 最后,编译失败还可能是由于缺少依赖项或库文件引起的。在编译过程中,可能会因为缺少必要的依赖项或库文件而失败。我们需要检查是否安装了所有必须的依赖项,并将其正确地链接到编译器中。 综上所述,激光雷达SICK LMS200编译失败可能是由于软件版本不匹配、配置错误、代码错误或缺少依赖项等原因引起的。通过仔细检查并解决这些问题,我们可以顺利地编译激光雷达

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值