赞
踩
硬件平台:ARS408毫米波雷达、can转485转换器、485转串口转换器
软件平台:Windows10、python3
本篇博客实现的功能:
一、通过两个转换器将毫米波雷达的原始数据传入电脑端的串口中
二、再将此数据经过python文件处理得出有效目标探测信息
本文中的雷达是利用can协议进行数据通讯,初次接触毫米波雷达,并不清楚如何进行can协议解析,故用曲线救国的方法,将can口转为串口进行数据接受和解析。
首先,毫米波雷达本身can口连接一个can转485转换器
其次,再用485转串口转换器连接到PC端
注:上述设备均可在淘宝购得。
软件采用python语言。
首先解决打开串口、接收数据:
运用serial模块
转换为hex显示
- import serial
- import binascii
-
- def byte_to_hexStr(byte):
- return binascii.hexlify(byte).decode('utf-8')
-
- def get_serial(): # 串口数据处理+接收
- return byte_to_hexStr(ser.read())
-
-
- ser = serial.Serial("COM3", 115200) # Open port with baud rate
- print("running")
- while True:
- data = get_serial() # ser源读取数据
- print(data)
解决数据解析:
依照此款毫米波提供的技术文档进行数据解析
文档中的内容如下:
代码如下:
- def circular_shift_left(int_value, k, bit=8):
- bit_string = '{:0%db}' % bit
- bin_value = bit_string.format(int_value) # 8 bit binary
- bin_value = bin_value[k:]
- int_value = int(bin_value, 2)
- #print("取低位:", bin_value)
- return int_value
-
- while True:
- #雷达object报头“06 0b”,共9位
- if get_serial() == "06":
- for i in range(9):
- list.insert(i, get_serial())
- if list[0] == "0b":
- print("有效数据", list[0:9])
- #处理有效数据,转为目标信息
- id = int(list[1], 16) # ID_wei = list[1]
- x1 = int(list[2], 16) # X_Dist_1_wei = list[2]
- x2 = int(list[3], 16) # X_Dist_2_wei = list[3]
- y1 = int(list[3], 16) # Y_Dist_1_wei = list[3]
- y2 = int(list[4], 16) # Y_Dist_2_wei = list[4]
- xs1 = int(list[5], 16) # X_Speed_1_wei = list[5]
- xs2 = int(list[6], 16) # X_Speed_2_wei = list[6]
- ys1 = int(list[6], 16) # Y_Speed_1_wei = list[6]
- ys2 = int(list[7], 16) # Y_Speed_2_wei = list[7]
- dyndrop = int(list[7], 16) # DynDrop_wei = list[7]
- rcs = int(list[8], 16) # RCS_wei = list[8]
-
- X_Dist = (x1 << 5 | x2 >> 3) * 0.2 - 500
- Y_Dist = (circular_shift_left(y1, 5, 8) << 8 | y2) * 0.2 - 204.6
- X_Speed = (xs1 << 2 | xs2 >> 6) * 0.25 - 128.0
- Y_Speed = (circular_shift_left(ys1, 2, 8) << 3 | ys2 >> 5) * 0.25 - 64.0
- DynDrop = circular_shift_left(dyndrop, 5, 8)
- RCS = rcs * 0.5 - 64.0
- print('id:', id, 'X位移:', X_Dist, 'Y位移', Y_Dist, 'X速度:', X_Speed, 'Y速度:', Y_Speed, 'DD:', DynDrop, 'RCS:', RCS)
-
- else:
- pass
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。