Pcap文件
1.厂商在存储硬件的数据包的时候, 是通过存储pcap包实现的,
如何读取pcap包并从中解析出真正有用的数据
Linux
libpcap(Packet Capture Library)是Unix/Linux平台下的开源网络数据包捕获函数库
方式三
1.汽车说明书那样,需要用才看,
2.通览一遍后时不时还要拿出来看看细节
3.逐步精深
禾赛激光雷达的数据校准文件
转换命令
correction_file="./params/Pandar128_Correction.csv"
firetimes_file="./params/Pandar128_Firetimes.csv"
./PandarHS-i input_file.pcap -o output_pcd_dir -c correction_filename -f firetimes_filename
点云标定修正csv文件。里面记录了工厂经过标准方法检测后雷达实际的线束分布
Hesai在后续的雷达批次中会这个修正值嵌入雷达的内部软件层面
激光雷达每一帧的数据长度固定为1248字节,前42字节的前数据包标识、12组数据包、4字节时间戳和最后两字节雷达型号参数
参数文件
校准文件 Channel 128线==共计128行数据从1-128 correction - 校正 correlation “相关性”“关联”或“相互关系”
cor rection 方向;反应 cor relation
Channel Elevation Azimuth
例子
角度修正文件(建议使用雷达自身的角度修正文件)
Channel,Elevation,Azimuth
1,14.378976,3.260407
2,13.412330,3.251593
通道发光时序(发光时刻修正文件)
Firetimes
operation mode,0,0,0,0,0,0,0,0,2,2,2,2,3,3,3,3
angle state,0,0,1,1,2,2,3,3,0,0,1,1,0,0,1,1
1,4436,5201,0,0,4436,4436,0,0,4436,5201,4436,4436,4436,5201,4436,4436
如果程序无法正常运行,需要设置export一下依赖库 # export LD_LIBRARY_PATH=./lib:$LD_LIBRARY_PATH
雷达数据处理
雷达获取的点云数据先进行预处理(pre-processing),经过剪裁(clipper),动态畸变矫正(distortion correction),地面滤波(ground removal)后,
对点云特征进行聚类(clustering)和
冗余(redundancy)
点云在高速驾驶过程中,会出现一定程度的偏移
良好的时序对齐
sudo apt update && sudo apt install -y libpcl-dev libpcap-dev libyaml-cpp-dev openssl
##注意cd的位置
cd HesaiLidar_SDK_2.0
mkdir -p build && cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make -j$(nproc)
cd HesaiLidar_SDK_2.0/tool
mkdir build
cd build
cmake ..
make
can格式
CAN协议支持两种报文格式,其唯一的不同是标识符(ID)长度不同,
标准格式为11位,扩展格式为29位
不同的惯导设备,采用的坐标系是不同的,有的用FRD,有的用FLU。例如ROS就缺省使用FLU
euler2 = [pos_roll, -pos_pitch, 90.0 - pos_yaw]
r2 = RRR.from_euler('xyz', euler2, degrees=True)
rotation_matrix2 = r2.as_matrix()
roll 从FRD坐标系转到FLU坐标系的转换公式为:roll_FLU = - roll_FRD
pitch从FRD坐标系转到FLU坐标系的转换公式为:pitch_FLU = - pitch_FRD
yaw从END坐标系转到ENU坐标系的转换公式为: yaw_ENU = PI/2 - yaw_END
自身坐标系之FRD坐标:X轴向前,Y轴向右,Z轴向下。
自身坐标系之FLU坐标:X轴向前,Y轴向左,Z轴向上。
世界坐标系之NED坐标:X轴向北,Y轴向东,Z轴向下 北东地坐标系(NED) 对应的IMU载体坐标系是前右下 欧拉角旋转顺序:z-y-x
世界坐标系之ENU坐标:X轴向东,Y轴向北,Z轴向上 东北天坐标系(ENU) 对应的IMU载体坐标系是右前上 欧拉角旋转顺序:z-x-y
旋转顺序定义是否内旋或外旋
在SLAM、无人机导航等领域,通常采用Tait–Bryan角(如东北天坐标系中的偏航、俯仰、横滚),而航空航天可能使用Proper Euler角。
两者核心差异在于旋转轴的选择和顺序,
若已知某顺序的欧拉角想转换为另一顺序,通常需先将欧拉角转为旋转矩阵或四元数,
导远定义的顺时针规则与国际规则是相反的。
右手法则的正方向
国际规则:右手拇手指向坐标轴正向,四指自然弯曲,四指弯曲的方向即为逆时针方向。
导远规则:右手手臂伸直,手里握钟,手臂指向即坐标轴正向,钟的指针旋转方向即顺时针方向
右手定则是用来规定绕某轴旋转的正方向
01.生活中所谓的逆时针方向为正,是由于人们平时的习惯,约定俗成的。
02.逆时针旋转不一定是正方向,它只是用来描述旋转方向
顺时针逆时针旋转来描述更容易让人明白是怎样旋转的,和顺时针逆时针旋转的正反无关
右手定则是用来规定绕某轴旋转的正方向。
参考
https://github.com/HesaiTechnology/HesaiLidar_SDK_2.0/blob/master/docs/parsing_pcap_file_data_offline.md
https://github.com/HesaiTechnology/HesaiLidar_SDK_2.0/blob/v2.0.10/docs/save_point_cloud_data_as_a_pcd_file.md