SICK LMS511开发及数据结构分析、坐标转换
生活随笔
收集整理的這篇文章主要介紹了
SICK LMS511开发及数据结构分析、坐标转换
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
SICK LMS511開發及數據結構分析、坐標轉換
最近公司有新上的項目,開始接觸激光掃描儀,型號SICK LMS511。
獲取數據
在網上看了一些資料,有通過SICK自帶的軟件看了一下激光掃描儀的配置,實際上可以將激光掃描儀視作socket server,只要用自己熟悉的語言編寫client程序就可以了。因為現在是項目的初期階段,我用python簡單寫了個程序作為測試用途,后期為方便與其他程序對接,可能會換C#或Java。
// An highlighted block def startclient():""":return:"""BUFSIZE = 40000ADDR = (HOST, PORT)while True:data = input('>')#data = '02 73 52 4E 20 4C 4D 44 73 63 61 6E 64 61 74 61 03'if not data:breakbites = getcmd(data)cmdstring = bytearray(bites, encoding='utf-8')print(cmdstring)tcpclisocket = socket(AF_INET, SOCK_STREAM)tcpclisocket.connect(ADDR)tcpclisocket.send(cmdstring)pcddata = tcpclisocket.recv(BUFSIZE).decode()print(pcddata)caldata(pcddata)tcpclisocket.close() def getcmd(hexstring):""":param hexstring::return:"""hexstring = hexstring.replace(" ", "")if (len(hexstring) % 2) != 0:hexstring += " "bits = ""for x in range(0, len(hexstring), 2):bits += chr(int(hexstring[x:x + 2], 16))return bits上面的程序包含了指令格式轉換、向socket server發送指令及數據接收。向激光掃描儀發送的單次測量指令為:
02 73 52 4E 20 4C 4D 44 73 63 61 6E 64 61 74 61 03這樣可以從激光掃描儀中獲取一次數據,形式如下:
sRA LMDscandata 0(版本號) 1(設備號) 11740A4(序列號) 0 0(設備狀態) 174C(指令計數) BB30(掃描計數) C1E6D829(開始時 間) C1E72134(發送時間) 0 0(數字量輸入) 3F 0(數字量輸出) 0(保留) 1388(5000HZ) 168(每次掃描頻率) 0(沒有編碼器) 1(輸出通道1) DIST1(回波層) 40000000(系數)00000000(系數偏移量) AAE60(開始角度) 1388(角度分辨率) 51(掃描點個數) 380(第一個掃描點,單位mm) 388 386 37A 36D 35F 35E 35C 35D 35B 354 361 34C 324 32E 33F 32F 34A 345 347 33A 32B 32F 339 33D 33C 33C 33C 33B 337 339 311 309 304 331 30B 30D 333 331 320 332 331 331 331 32E 32F 332 330 332 331 331 334 336 337 335 337 337 336 33C 338 339 341 340 33F 341 344 344 352 17D 147 142 13C 136 130 12D 129 123 121 11D 119 113 0 0 0 0 0 0上述是獲取到的數據的數據結構,上述的數據是在極坐標下的數據,知道每個點的距激光掃描儀中心點的距離和角度,那么可以根據公式轉成直角坐標系下的數據
效果圖對比
可以看出來基本上是吻合的。
代碼資源:https://download.csdn.net/download/baidu_33251089/10755381
總結
以上是生活随笔為你收集整理的SICK LMS511开发及数据结构分析、坐标转换的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于AUTOSAR开发工具链的AUTOS
- 下一篇: ES京东搜索