ARS408-21毫米波雷达笔记
目录
- 参数
- 连接
- 配置示例
- 标定
- 测试
- 解析
- YawRate与车速输入
- 录包回放
- DBC下载
- 参考
- 微信公众号
参数
ARS 408 , 德国大陆的毫米波雷达:
型号: ARS408-21(XX, Far Range 250m), ARS408-21SC(特殊的软件版本, 扩展到1200m, 优化目标分类行人检测, 增加多边形配置等), 本篇测的是前者ARS408-21XX
发射频率76…77GHz, 发射功率14.1~35.1dBm, 调制方式FMCW(Frequency Modulated Continuous Wave)
扫描频率17Hz(58.8ms), 但是应用程序的输出周期72ms(70~80ms)
3个测距范围: (Far Range)长距0.2~250m, (Near/Short Range)短距0.2~70m@±45°, 短距0.2~20m@±60°. 前面的0.2m为近距离盲区, 毕竟是波, 近距离来回时间太短的话来不及测量, 包括激光雷达也会有近距离盲区. ARS408的探测区域FoV如图所示:
天线通道: 4TX/2x6RX = 24 channels = 2TX/6RX far - 2TX/6RX near. 上图也可以看出有4个发射. ARS408 双波束(长距和短距)同时工作,不可切换,检测到的目标按距离远近或者 RCS 大小依次输出,默认按距离由近及远输出
测量分辨率: 1.79m@far range, 0.39m@near range, 满足 1.5 到 2 倍分辨率的条件下可对两个物体进行区分. 精度±0.4m@far, ±0.1m@near
对于常见的目标(乘用车, 摩托车, 自行车, 行人)的范围限制:
速度范围: -400km/h…+200km/h, -指远离leaving object, +指靠近approximation
速度分辨率: 0.37km/h@far, 0.43km/h@near, 精度0.1km/h
供电电压: 8~32V, 典型功耗6.6W, 峰值功耗12W, 实测平均功耗23V*0.26A≈6W
工作温度: 40°C…+85°C
8P接口, 对插的连接器为 1-1534229-1 : AMP 汽车连接器护套 | TE Connectivity 定义为 1-Power, 8-GND, 4-CANL, 7-CANH, 其实办公室内测的话, 直接拿杜邦线插上去就可以, CAN通信速率500Kbit/s
安装方向: 正面的印字要是正的, 或者说出线口离左前轮近(对于不分头尾前后都装毫米波的平板车要注意), 图中Sensor Orientation = 0的方向(图中并不是要前面装2个只是安装方向的示意图)
安装位置: 车辆水平方向中心±600mm, 垂直方向离地高度295mm~800mm, 不影响性能
输入信号:
YawRate
(deg/s, 左正右负, 超过172deg/s雷达输出目标数量为0),VehicleSpeed
(需要指明静止, 前进还是后退, m/s, 超过115m/s雷达输出目标数量变为0), 可能是为了判断物体是否静止或者多普勒效应的考虑, 周期上建议50ms, Cluster模式不需要输入这两个信号. 一般只需要前向雷达输入, 角雷达不用.输出信号: 输出模式为(未跟踪)Cluster和(跟踪)Object两种方式, Object模式最多100个目标, Cluster模式最多250个目标. 本篇测试Object方式, 主要是坐标目标的相对速度和角度关系, 其它的还有标准差, 相对加速度, 目标的长宽, 目标的分类(点/汽车/卡车客车/行人/摩托车/自行车/宽大目标)等
连接
基于以下事实:
- ARS408 CAN通讯速率500Kbit/s, 内部无120Ω终端电阻
- 8字节标准帧算上填充位, 位数在 111~131位, 平均一下, 按125位计算, 500000/125/1000=4帧/ms=288帧/72ms
- 如果60B(8字节), 60C(7字节, 简便点按8字节算), 60D(8字节)全部输出的话, 也就最多288/3=96个目标, 如果控制CAN总线负载率60%以下, 最多96*0.6=57.6个目标, 当然一般视野内不会总有这么多目标, 实际负载率会低很多
- 如果不要60C, 只60B, 60D输出的话, 最多288/2=144个目标, 可以满足文档的最大100个目标
- 保守点, 一路CAN只挂一个毫米波雷达, 设置输出30~50个目标
- ARS408-21支持1路CAN上挂载8个毫米波雷达, 需要配置输出ID的不同, 主要是标准帧中间的0~7的改变, 如本来输出60B的, 如果雷达ID配置为7, 那么该帧变为67B, 其它帧的中间那个数字也都会变, 所以一般供应商会给8个DBC文件对应8种不同的雷达ID, 正常只用0即可. 挂这么多当然要精心调教下输出目标数量和输出内容, 确保最坏情况下总线负载不炸
- 因为500K CAN本身的通信容量限制, 建议一路CAN只挂一个毫米波雷达
下面的测试 把Xavier can1, 毫米波雷达连到一起, 一路CAN只挂一个设备, 接120Ω终端电阻.
配置示例
如雷达配置, 直接发送下面的配置:
# 写入NVM, range排序, 60D输出, 60C输出, objects模式, 标准功率, ID 00, 最大检测距离200m, 继电器不用, 标准灵敏度
can1 200 [8] FF 19 00 00 08 9D 01 00
不想计算的话, 也可以写Python脚本, 在Xavier CAN1发出去:
# pip install python-can
# pip install cantools
import can
import cantools
from pprint import pprintdb = cantools.database.load_file('ARS408_id0.dbc')# for i in range(len(db.messages)):
# print(db.messages[i])
RadarConfiguration_message = db.get_message_by_name('RadarConfiguration')# pprint(RadarConfiguration_message.signals)
can_bus = can.interface.Bus(bustype='socketcan', channel='can1', bitrate=500000)
data = RadarConfiguration_message.encode({'RadarCfg_StoreInNVM_valid': 1,\'RadarCfg_SortIndex_valid': 1,\'RadarCfg_SendExtInfo_valid': 1,\'RadarCfg_SendQuality_valid': 1,\'RadarCfg_OutputType_valid': 1,\'RadarCfg_RadarPower_valid': 1,\'RadarCfg_SensorID_valid': 1,\'RadarCfg_MaxDistance_valid': 1,\'RadarCfg_MaxDistance': 200,\'RadarCfg_RadarPower': 0,\'RadarCfg_OutputType': 1,\'RadarCfg_SensorID': 0,\'RadarCfg_StoreInNVM': 1,\'RadarCfg_SortIndex': 1,\'RadarCfg_SendExtInfo': 1,\'RadarCfg_SendQuality': 1,\'RadarCfg_CtrlRelay': 0,\'RadarCfg_CtrlRelay_valid': 1,\'RadarCfg_RCS_Threshold': 0,\'RadarCfg_RCS_Threshold_Valid': 1})
message = can.Message(arbitration_id=RadarConfiguration_message.frame_id, data=data, is_extended_id=False)
can_bus.send(message)
# can1 200 [8] FF 19 00 00 08 9D 01 00
其中:
- 需要先配置好Xavier的can1, 500Kbit/s, 此处略
- pip安装
python-can
和cantools
包, 前者用于CAN收发, 后者用于DBC解析 'RadarCfg_StoreInNVM_valid': 1
中的 1 也可以写成 ‘Valid’ , 写数值和写信号定义是一样的- 关闭60C和60D输出可以设置 ‘RadarCfg_SendExtInfo’ 和 ‘RadarCfg_SendQuality’ 的值为0
输出模式: Object(最多100个目标)/Cluster(最多250个目标), 可以在过滤器中配置目标数量, 但有文档不建议用, 因为输出目标不一定在滤波器中, 特别是静止或者被遮挡改变ID的目标.
标定
车辆停在水平方向上, Yaw/Pitch/Roll都需要标定, 可能需要 水平尺, 角度尺, 金属板, 角反射器等, 参见手册, 此处不再赘述.
测试
object目标列表时序图:
这里用Xavier can1来测试.
先来看正常的输出报文:
$ python3 -m can.viewer -c can1 -i socketcanCount Time dt ID DLC Data
52 51.053085 1.000303 0x201 8 C0 19 00 00 10 F4 00 00
720 51.843109 0.074975 0x60A 4 04 8E 6F 10
3523 51.844130 0.000254 0x60B 8 03 51 A4 11 80 20 41 6C
3523 51.845205 0.000291 0x60C 7 03 7C 61 3A 02 20 E8
3523 51.846200 0.000262 0x60D 8 03 7C EF A6 70 80 19 0B
52 51.053202 1.000233 0x700 4 04 1E 01 00$ candump -td -x can1(000.000000) can1 RX - - 60A [4] 02 BA DF 10(000.000222) can1 RX - - 60B [8] 06 4E 94 00 80 20 01 93(000.000257) can1 RX - - 60B [8] 01 4F 3C 04 80 20 01 5F(000.000278) can1 RX - - 60C [7] 06 84 A3 3A 02 20 E8(000.000224) can1 RX - - 60C [7] 01 7C 61 3A 02 20 E8(000.000275) can1 RX - - 60D [8] 06 7D 0F A1 70 80 0D 0C(000.000251) can1 RX - - 60D [8] 01 7D 0F A6 70 80 16 0B(000.068508) can1 RX - - 60A [4] 02 BA E1 10(000.000223) can1 RX - - 60B [8] 06 4E 94 00 80 20 01 93(000.000286) can1 RX - - 60B [8] 01 4F 3C 04 80 20 01 5F(000.000296) can1 RX - - 60C [7] 06 84 A3 3A 02 20 E8(000.000185) can1 RX - - 60C [7] 01 7C 61 3A 02 20 E8(000.000296) can1 RX - - 60D [8] 06 7D 0F A1 70 80 0D 0C(000.000235) can1 RX - - 60D [8] 01 7D 0F A6 70 80 16 0B(000.039077) can1 RX - - 201 [8] C0 19 00 00 10 F4 00 00(000.000162) can1 RX - - 700 [4] 04 1E 01 00# can负载率查看
$ canbusload can1@500000can1@500000 367 47775 22072 9%can1@500000 403 52515 24280 10%can1@500000 1222 160350 74512 32%can1@500000 1912 251200 116832 50%$ canbusload can1@500000 -r -t -b -c
canbusload 2021-06-11 15:23:40 (worst case bitstuffing)can1@500000 100 12620 5696 2% |....................|
其中:
- 0x201和0x700为状态和版本信息, 1s输出一次
- 0x60A给出目标数量, 70~80ms输出一次
- 0x60E为碰撞检测警告, 由于没有使能碰撞检测(0x400), 不输出
- 60B, 60C, 60D 依次连续输出
- 这里没有输入yawrate和车速信息
- can.viewer是按照python-can包自带的
- candump, canbusload命令找不到的话:
sudo apt install can-utils
- 目标多时总线负载率较高, 60B 60C 60D全部输出时, 大概是1个目标对应1%的负载, 可以通过负载率大致估计输出目标的个数
解析
$ candump can1 | cantools decode --single-line ARS408_id0.dbccan1 201 [8] C0 19 00 00 10 F4 00 00 :: RadarState(RadarState_NVMwriteStatus: 1, RadarState_NVMReadStatus: 'successful', RadarState_MaxDistanceCfg: 200 m, RadarState_Persistent_Error: 'No error', RadarState_Interference: 'No interference', RadarState_Temperature_Error: 'No error', RadarState_Temporary_Error: 'No error', RadarState_Voltage_Error: 'No error', RadarState_RadarPowerCfg: 'Standard', RadarState_SortIndex: 'Sorted by range', RadarState_SensorID: 'ID 0', RadarState_MotionRxState: 'Speed and yaw rate missing', RadarState_SendExtInfoCfg: 'Active', RadarState_SendQualityCfg: 'Active', RadarState_OutputTypeCfg: 'SendObjects', RadarState_CtrlRelayCfg: 'Inactive', RadarState_RCS_Threshold: 'Standard')can1 700 [4] 04 1E 01 00 :: VersionID(Version_MajorRelease: 4, Version_MinorRelease: 30, Version_PatchLevel: 1, Version_ExtendedRange: 'Standard Range 196m-260m', Version_CountryCode: 'International Version')can1 60A [4] 03 E4 8D 10 :: Obj_0_Status(Obj_NofObjects: 3, Obj_MeasCounter: 58509, Obj_InterfaceVersion: 1)can1 60B [8] 06 4E 94 00 80 20 01 93 :: Obj_1_General(Obj_ID: 6, Obj_DistLong: 2.8000000000000114 m, Obj_DistLat: 0.20000000000001705 m, Obj_VrelLong: 0.0 m/s, Obj_VrelLat: 0.0 m/s, Obj_DynProp: 'Stationary', Obj_RCS: 9.5 dBm²)can1 60B [8] 00 4E B4 1B 80 20 01 90 :: Obj_1_General(Obj_ID: 0, Obj_DistLong: 3.6000000000000227 m, Obj_DistLat: 5.600000000000023 m, Obj_VrelLong: 0.0 m/s, Obj_VrelLat: 0.0 m/s, Obj_DynProp: 'Stationary', Obj_RCS: 8.0 dBm²)can1 60B [8] 01 4F 34 03 80 20 01 68 :: Obj_1_General(Obj_ID: 1, Obj_DistLong: 6.800000000000011 m, Obj_DistLat: 0.8000000000000114 m, Obj_VrelLong: 0.0 m/s, Obj_VrelLat: 0.0 m/s, Obj_DynProp: 'Stationary', Obj_RCS: -12.0 dBm²)can1 60C [7] 06 84 A3 3A 02 20 E8 :: Obj_2_Quality(Obj_ID: 6, Obj_DistLong_rms: '<0.288 m', Obj_DistLat_rms: '<0.478 m', Obj_VrelLong_rms: '<0.371 m/s', Obj_VrelLat_rms: '<0.616 m/s', Obj_ArelLong_rms: '<0.794 m/s²', Obj_ArelLat_rms: '<0.005 m/s²', Obj_Orientation_rms: '<1.909 deg', Obj_ProbOfExist: '<=100%', Obj_MeasState: 'Measured')can1 60C [7] 00 8C A7 3A 82 20 E8 :: Obj_2_Quality(Obj_ID: 0, Obj_DistLong_rms: '<0.371 m', Obj_DistLat_rms: '<0.478 m', Obj_VrelLong_rms: '<0.616 m/s', Obj_VrelLat_rms: '<0.616 m/s', Obj_ArelLong_rms: '<1.023 m/s²', Obj_ArelLat_rms: '<0.005 m/s²', Obj_Orientation_rms: '<1.909 deg', Obj_ProbOfExist: '<=100%', Obj_MeasState: 'Measured')can1 60C [7] 01 7C 61 3A 02 20 E8 :: Obj_2_Quality(Obj_ID: 1, Obj_DistLong_rms: '<0.224 m', Obj_DistLat_rms: '<0.371 m', Obj_VrelLong_rms: '<0.288 m/s', Obj_VrelLat_rms: '<0.616 m/s', Obj_ArelLong_rms: '<0.794 m/s²', Obj_ArelLat_rms: '<0.005 m/s²', Obj_Orientation_rms: '<1.909 deg', Obj_ProbOfExist: '<=100%', Obj_MeasState: 'Measured')can1 60D [8] 06 7D 0F A1 70 80 0E 0C :: Obj_3_Extended(Obj_ID: 6, Obj_ArelLong: 0.0 m/s², Obj_ArelLat: 0.0 m/s², Obj_Class: 'Car', Obj_OrientationAngle: 0.0 deg, Obj_Length: 2.8000000000000003 m, Obj_Width: 2.4000000000000004 m)can1 60D [8] 00 7D 0F A0 70 80 05 05 :: Obj_3_Extended(Obj_ID: 0, Obj_ArelLong: 0.0 m/s², Obj_ArelLat: 0.0 m/s², Obj_Class: 'Point', Obj_OrientationAngle: 0.0 deg, Obj_Length: 1.0 m, Obj_Width: 1.0 m)can1 60D [8] 01 7D 0F A6 70 80 16 0B :: Obj_3_Extended(Obj_ID: 1, Obj_ArelLong: 0.0 m/s², Obj_ArelLat: 0.0 m/s², Obj_Class: 'Wide', Obj_OrientationAngle: 0.0 deg, Obj_Length: 4.4 m, Obj_Width: 2.2 m)
其中可以看出:
- 0x201中的RadarState_MotionRxState: ‘Speed and yaw rate missing’, 说明没有输入车速和yawrate
- 0x700看到版本号为4.30.1, 标准距离(非1200m扩展距离版本), 国际版本(不是功率较低的日韩版本)
如果只想看状态信息, 并且不要单行模式, 加个滤波:
$ candump can1,201:7FF,700:7FF | cantools decode -m 0x201 -m 0x700 --no-strict ARS408_id0.dbccan1 201 [8] C0 19 00 00 10 F4 00 00 ::
RadarState(RadarState_NVMwriteStatus: 1,RadarState_NVMReadStatus: 'successful',RadarState_MaxDistanceCfg: 200 m,RadarState_Persistent_Error: 'No error',RadarState_Interference: 'No interference',RadarState_Temperature_Error: 'No error',RadarState_Temporary_Error: 'No error',RadarState_Voltage_Error: 'No error',RadarState_RadarPowerCfg: 'Standard',RadarState_SortIndex: 'Sorted by range',RadarState_SensorID: 'ID 0',RadarState_MotionRxState: 'Speed and yaw rate missing',RadarState_SendExtInfoCfg: 'Active',RadarState_SendQualityCfg: 'Active',RadarState_OutputTypeCfg: 'SendObjects',RadarState_CtrlRelayCfg: 'Inactive',RadarState_RCS_Threshold: 'Standard'
)can1 700 [4] 04 1E 01 00 :: unpack requires at least 40 bits to unpack (got 32)
这里0x700没有被解析出来, 可能那里没有配置好或者软件bug.
写个脚本看最大距离和版本信息:
import can
import cantools
from pprint import pprint
import binasciidb = cantools.database.load_file('ARS408_id0.dbc')# for i in range(len(db.messages)):
# print(db.messages[i])
RadarState_message = db.get_message_by_name('RadarState')
VersionID_message = db.get_message_by_name('VersionID')# pprint(RadarConfiguration_message.signals)
can_bus = can.interface.Bus(bustype='socketcan', channel='can1', bitrate=500000)while True:message = can_bus.recv()# if message.arbitration_id == 0x201:if message.arbitration_id == RadarState_message.frame_id:print(hex(message.arbitration_id),\len(message.data),\binascii.hexlify(message.data),\'MaxDistance: ',\db.decode_message(message.arbitration_id,message.data).get('RadarState_MaxDistanceCfg'))#elif message.arbitration_id == 0x700:elif message.arbitration_id == VersionID_message.frame_id:dic = db.decode_message(message.arbitration_id, message.data)print(hex(message.arbitration_id),\len(message.data),\binascii.hexlify(message.data),\'Version:',\str(dic.get('Version_MajorRelease'))+'.'+\str(dic.get('Version_MinorRelease'))+'.'+\str(dic.get('Version_PatchLevel')))
运行结果如下:
$ python3 2.py
0x201 8 b'4019000010f40000' MaxDistance: 200
0x700 4 b'041e0100' Version: 4.30.1
0x201 8 b'4019000010f40000' MaxDistance: 200
0x700 4 b'041e0100' Version: 4.30.1
YawRate与车速输入
以50ms发送示例:
import can
import cantools
from pprint import pprint
import binascii
import timedb = cantools.database.load_file('ARS408_id0.dbc')SpeedInformation_message = db.get_message_by_name('SpeedInformation')
YawRateInformation_message = db.get_message_by_name('YawRateInformation')def msg_periodic_send(bus):SpeedInformation_canmsg = can.Message(arbitration_id=SpeedInformation_message.frame_id,\data=[],\is_extended_id=False)YawRateInformation_canmsg = can.Message(arbitration_id=YawRateInformation_message.frame_id,\data=[],\is_extended_id=False)SpeedInformation_task = bus.send_periodic(SpeedInformation_canmsg, 0.050)if not isinstance(SpeedInformation_task, can.ModifiableCyclicTaskABC):print("This interface doesn't seem to support modification")SpeedInformation_task.stop()returnYawRateInformation_task = bus.send_periodic(YawRateInformation_canmsg, 0.050)if not isinstance(SpeedInformation_task, can.ModifiableCyclicTaskABC):print("This interface doesn't seem to support modification")YawRateInformation_task.stop()returntemp_speed = 0 # km/h->m/s while True:time.sleep(0.05)# Modify Data Heretemp_speed += 1print(temp_speed,'km/h -> ', '%.1f' % (temp_speed*1000.0/3600), 'm/s')if (temp_speed > 163.8*3600/1000):temp_speed = 0# 0:'standstill', 1:'forward', 2:'reverse', 3:'reserved'SpeedInformation_data = SpeedInformation_message.encode({\'RadarDevice_SpeedDirection': 'forward',\'RadarDevice_Speed': temp_speed*1000.0/3600})YawRateInformation_data = YawRateInformation_message.encode({\'RadarDevice_YawRate': 0})SpeedInformation_canmsg.data[:] = SpeedInformation_data[:]SpeedInformation_canmsg.dlc = len(SpeedInformation_canmsg.data)YawRateInformation_canmsg.data[:] = YawRateInformation_data[:]YawRateInformation_canmsg.dlc = len(SpeedInformation_canmsg.data)SpeedInformation_task.modify_data(SpeedInformation_canmsg)YawRateInformation_task.modify_data(YawRateInformation_canmsg)# task.stop()if __name__ == "__main__":can_bus = can.interface.Bus(bustype='socketcan', channel='can1', bitrate=500000)msg_periodic_send(can_bus)
运行这个帧后就可以看到发出来0x300/0x3012字节, 50ms周期的帧, 在0x201这个帧里面可以看状态, 直接写脚本解析这个状态:
import can
import cantools
import binasciidb = cantools.database.load_file('ARS408_id0.dbc')
RadarState_message = db.get_message_by_name('RadarState')
can_bus = can.interface.Bus(bustype='socketcan', channel='can1', bitrate=500000)while True:message = can_bus.recv()if message.arbitration_id == RadarState_message.frame_id:print(hex(message.arbitration_id),\len(message.data),\binascii.hexlify(message.data),\'RadarState_MotionRxState: ',\db.decode_message(message.arbitration_id,message.data).get('RadarState_MotionRxState'))
运行:
$ python3 3.py
1 km/h -> 0.3 m/s
2 km/h -> 0.6 m/s
3 km/h -> 0.8 m/s$ python3 4.py
0x201 8 b'4019000010f40000' RadarState_MotionRxState: Speed and yaw rate missing
0x201 8 b'4019000010f40000' RadarState_MotionRxState: Speed and yaw rate missing
0x201 8 b'4019000010f40000' RadarState_MotionRxState: Speed and yaw rate missing
0x201 8 b'4019000010340000' RadarState_MotionRxState: Input ok
0x201 8 b'4019000010340000' RadarState_MotionRxState: Input ok
当速度大于115m/s(414 km/h )时, 60A输出目标0, 60B,60C,60D将停止输出.
录包回放
can.logger是 pip 安装 python-can 包自带的.
录包:
# 全录, 存为1.log
$ python3 -m can.logger -f 1.log -c can1 -i socketcan
Connected to SocketcanBus: socketcan channel 'can1'
Can Logger (Started on 2021-06-11 17:18:22.170566)
# log文件大概写满这个样子
# (1623403102.177979) can1 60A#01962B10
# (1623403102.180162) can1 60B#014E93FF80200194
# (1623403102.180669) can1 60C#0184A33A8220E8
# (1623403102.180988) can1 60D#017D0FA070800505# 全录, 存为2.asc
$ python3 -m can.logger -f 2.asc -c can1 -i socketcan
Connected to SocketcanBus: socketcan channel 'can1'
Can Logger (Started on 2021-06-11 17:19:50.655305)
# asc文件的格式如下:
# date Fri Jun 06 05:19:50.656751 PM 2021
# base hex timestamps absolute
# internal events logged
# Begin Triggerblock Fri Jun 06 05:19:50.707 PM 2021
# 0.000000 Start of measurement
# 0.000000 2 60A Rx d 4 01 9F C3 10
# 0.004938 2 60B Rx d 8 01 4E 93 FF 80 20 01 94
# 0.005491 2 60C Rx d 7 01 84 A3 3A 82 20 E8
# 0.005878 2 60D Rx d 8 01 7D 0F A0 70 80 05 05# 只录某几个ID, 如60A,60B
$ python3 -m can.logger -f 3.log -c can1 -i socketcan --filter 60A:7FF 60B:7FF
Adding filter/s ['60A:7FF', '60B:7FF']
Connected to SocketcanBus: socketcan channel 'can1'
Can Logger (Started on 2021-06-11 17:23:09.158519)
can.player是 pip 安装 python-can 包自带的.
回放:
$ python3 -m can.player -c can1 -i socketcan 1.log
Can LogReader (Started on 2021-06-11 17:27:45.413390)# 回放出的时间间隔也大致对得上
$ candump -td -x can1(000.000000) can1 TX - - 60A [4] 01 96 2B 10(000.001688) can1 TX - - 60B [8] 01 4E 93 FF 80 20 01 94(000.000801) can1 TX - - 60C [7] 01 84 A3 3A 82 20 E8(000.000908) can1 TX - - 60D [8] 01 7D 0F A0 70 80 05 05(000.069121) can1 TX - - 60A [4] 01 96 2D 10(000.000691) can1 TX - - 60B [8] 01 4E 93 FF 80 20 01 94(000.000464) can1 TX - - 60C [7] 01 84 A3 3A 82 20 E8(000.002162) can1 TX - - 60D [8] 01 7D 0F A0 70 80 05 05# asc回放$ python3 -m can.player -c can1 -i socketcan 2.asc
Can LogReader (Started on 2021-06-11 17:30:06.607237)# 快速回放, 不按时间戳, 一溜烟发出来
$ python3 -m can.player -c can1 -i socketcan 3.log --ignore-timestamps
Can LogReader (Started on 2021-06-11 17:31:39.144332)# 可以看到基本上是
$ candump -td -x can1(000.000000) can1 TX - - 60A [4] 01 B5 43 10(000.003569) can1 TX - - 60B [8] 01 4E 93 FF 80 20 01 94(000.000982) can1 TX - - 60A [4] 01 B5 45 10(000.000653) can1 TX - - 60B [8] 01 4E 93 FF 80 20 01 94(000.000414) can1 TX - - 60A [4] 01 B5 47 10(000.000411) can1 TX - - 60B [8] 01 4E 93 FF 80 20 01 94(000.000320) can1 TX - - 60A [4] 01 B5 49 10(000.000447) can1 TX - - 60B [8] 01 4E 93 FF 80 20 01 94(000.000384) can1 TX - - 60A [4] 01 B5 4B 10(000.000512) can1 TX - - 60B [8] 01 4E 93 FF 80 20 01 94# 可以看下总线负载率$ canbusload can1@500000
DBC下载
ARS408_id0.dbc
参考
ARS 408 - Continental Engineering Services (conti-engineering.com)
77GHz长距雷达ARS408-21SC3-南京慧尔视防务科技有限公司 (aisar.cn)
ARS408-21毫米波雷达学习笔记_Augustencian的博客
微信公众号
欢迎扫描二维码关注本人微信公众号, 及时获取最新文章:
ARS408-21毫米波雷达笔记相关推荐
- 【TI毫米波雷达笔记】IWR6843AOPEVM-G的UniFlash烧录配置及避坑(官方手册有误)
[TI毫米波雷达笔记]IWR6843AOPEVM-G的UniFlash烧录配置及避坑(官方手册有误) 毫米波雷达有两种烧录方式: 搭配ICBOOST烧录 雷达板自己烧录 搭配ICBOOST烧录时 需要 ...
- 毫米波雷达笔记(3):多普勒频移推导
参考 2008-Mark A. Richards-雷达信号处理基础 也就是多普勒频移与径向速度成正比.在实际案例中,譬如,雷达照射到一个舰船上,雷达照射到舰船的宽边,但径向速度小,多普勒频移覆盖的范围 ...
- 毫米波雷达AWR1642BOOST代码走读学习笔记
相关官网文档: IWR1642BOOST官网文件 IWR1642BOOST User guide IWR1642 Single-Chip 76- to 81-GHz mmWave Sensor dat ...
- 【大陆ARS408毫米波雷达】一种利用串口解析雷达数据的方法
硬件平台:ARS408毫米波雷达.can转485转换器.485转串口转换器 软件平台:Windows10.python3 本篇博客实现的功能: 一.通过两个转换器将毫米波雷达的原始数据传入电脑端的串口 ...
- linux毫米波雷达程序,ARS408-21毫米波雷达学习笔记
ARS408-21毫米波雷达学习笔记 1. 认识毫米波雷达ARS408-21 1.1 硬件参数 1.2 软件功能 预备知识1:CAN 2.0 预备知识2:Linux (Ubuntu等) 预备知识3:简 ...
- ARS408毫米波雷达使用记录
参考:ARS_408毫米波雷达数据解析学习记录 感谢博主的分享(https://blog.csdn.net/weixin_49401384) 雷达can消息解析(通用can解析思路) socketca ...
- TI AWR1642毫米波雷达学习笔记之理论基础(2)
背景:在知道毫米波雷达信号数学模型后,我们开始对TSW1400开发板采集的原始数据进行处理.本文主要讲解信号处理时涉及的1D FFT和2D FFT处理时前期数据处理,主要为将数据格式处理为天线维-快时 ...
- 【论文笔记】—毫米波雷达穿雾式高分辨率成像—Supervised—HawkEye系统—2020-CVPR
题目:Through Fog High-Resolution Imaging Using Millimeter Wave Radar 利用毫米波雷达进行穿雾式高分辨率成像 DOI:10.1109/CV ...
- 自动驾驶目标识别-----毫米波雷达学习笔记(1)
1.毫米波雷达介绍 1.1 什么是毫米波雷达 通常将波长为1-10毫米的电磁波称毫米波,车载毫米波雷达工作的频段为24GHz和77GHz,少数国家(如日本)采用60GHz频段.车载毫米波雷达通过天线向 ...
最新文章
- [AI开发]基于深度学习的视频多目标跟踪实现
- java replaceall删除中括号和内容_「技术文章」《阿里巴巴 Java 开发手册》精华摘要...
- 寻找唯一特等奖java,大工斩获唯一特等奖!这次,请为我工老师疯狂打call!
- 扫描java类文件_java递归与非递归实现扫描文件夹下文件的实例代码
- Win32ASM-进程学习【1】
- 关键字nullable,nonnull,null_resettable,_Null_unspecified详解
- volatile c语言_C语言系列文章之volatile
- QT5.9.9安装教程
- 麦克斯韦电磁场理论基础
- Win10+Ubuntu双系统修复Ubuntu系统引导
- Layim 聊天功能
- TCP/IP——从wireshark看TCP(一)
- 【2020总结】 一直坚持,一路向前!
- 计算机用户注销后不见了,注销当前用户后 Win10找不到Administrator用户登录选项怎么解决?...
- TinyXML-2解析XML数据
- n1 盒子安装armbian 5.6
- POJ 1205 Water Treatment Plants(递推)
- 管理是科学还是艺术呢?-----行动力
- TQ2440(ARM)和SIM300(GPRS模块)串口通信
- 第131篇 ERC20 锁仓合约