SICK LMS511开发及数据结构分析、坐标转换

SICK LMS511开发及数据结构分析、坐标转换

最近公司有新上的项目,开始接触激光扫描仪,型号SICK LMS511。

获取数据

在网上看了一些资料,有通过SICK自带的软件看了一下激光扫描仪的配置,实际上可以将激光扫描仪视作socket server,只要用自己熟悉的语言编写client程序就可以了。因为现在是项目的初期阶段,我用python简单写了个程序作为测试用途,后期为方便与其他程序对接,可能会换C#或Java。

// An highlighted block
def startclient():
    """

    :return:
    """
    BUFSIZE = 40000
    ADDR = (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:
            break
        bites = 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

上述是获取到的数据的数据结构,上述的数据是在极坐标下的数据,知道每个点的距激光扫描仪中心点的距离和角度,那么可以根据公式转成直角坐标系下的数据

效果图对比

SICK软件SOPAS Engineering Tool扫描的数据图
我的数据通过python显示图
可以看出来基本上是吻合的。

代码资源:https://download.csdn.net/download/baidu_33251089/10755381

  • 1
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
### 回答1: LMS511是一种激光测距仪的型号,它采用特定的数据格式来传输测量数据。LMS511数据格式通常以二进制形式表示,每个数据包包含了多个测量值。 在LMS511数据包中,首先包含了一个起始标志,用于标识数据包的开始。接下来的几个字节包含了一些控制信息,例如数据包长度、扫描角度范围等。在这些控制信息之后,是实际的测量数据。 LMS511的测量数据由一系列数据点组成,每个数据点表示一个距离测量值。每个数据点通常由距离值、强度值和角度值组成。距离值表示激光测量的物体与测距仪的距离,强度值表示激光信号的强度,而角度值表示测距仪扫描时的角度位置。 除了这些基本的测量数据外,LMS511数据格式还可以包含一些其他的信息,例如设备状态、扫描速度等。这些附加信息可以帮助用户更好地理解和分析测量数据。 总结起来,LMS511数据格式是一种用于传输激光测距仪测量数据的二进制格式。它包含了起始标志、控制信息和测量数据等部分。通过解析LMS511数据格式,我们可以获取到一系列的测量数据,从而了解到物体与测距仪的距离、强度和角度等信息。 ### 回答2: LMS511是一种激光测距仪,用于测量距离和传感器的环境感知。它的数据格式是一种特定的通信协议,用于传输从传感器获取的数据。数据格式通常以二进制编码表示,以确保高效的数据传输。 LMS511的数据格式包括多个字段,以提供丰富的信息。其中一些字段包括测量距离、反射强度、角度和噪声等。测量距离字段提供了物体到传感器的精确距离,反射强度字段表示目标物体的反射性能,角度字段表示物体相对于传感器的角度位置,噪声字段表示测量的信号质量。 LMS511的数据格式还包括一些控制字段,用于设置传感器的工作模式和参数。这些字段可用于控制传感器的扫描速度、扫描角度范围和数据输出格式等。通过这些控制字段,用户可以根据需要自定义传感器的工作方式。 在使用LMS511的数据格式时,需要根据协议进行解析和处理。通常,需要使用特定的软件工具或代码库来解析传感器的输出数据,并将其转换为可读的格式或进行进一步的分析。这些工具和代码库提供了方便的接口,使用户能够轻松地使用LMS511的数据。 总结来说,LMS511的数据格式是一种用于传输传感器数据的特定通信协议。通过解析和处理数据格式,用户可以获取有关测量距离、反射强度、角度和噪声等信息,并根据需要控制传感器的工作模式和参数。 ### 回答3: LMS511是一种高性能的2D激光扫描仪,它广泛应用于机器人导航、自动化制造和测量应用领域。LMS511的数据格式是以二进制形式传输的,因此在解码之前需要进行二进制数据处理。 LMS511的数据格式包括扫描数据和状态数据。扫描数据是指扫描仪在水平和垂直方向上扫描到的测量点的信息。每个测量点包含角度和距离两个数据。角度数据表示测量点相对于扫描仪本身的位置,而距离数据表示测量点与扫描仪之间的距离。这些数据以二进制形式进行传输,并采用IEEE 754标准将其转换为浮点数。 状态数据是指扫描仪的工作状态信息,包括扫描频率、扫描开始角度、扫描结束角度等。这些信息可以帮助用户了解扫描仪的运行状态并进行相应的调整。 为了解析LMS511的数据,用户需要首先建立与扫描仪的通信连接,并发送相应的指令以请求数据。扫描仪将通过数据接口传输二进制数据,用户需要使用适当的数据处理软件将其解码并转换为可读的形式。常见的数据处理软件包括MATLAB、LabVIEW等。 总之,LMS511的数据格式是以二进制形式传输的,包括扫描数据和状态数据。用户需要通过相应的数据处理软件解析和转换数据,以便进行进一步的分析和应用。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值