Commit
e3bb5779a8c24e895decea1ce064102adf84e03e
by lanxiaosongfeat: BP3/BP4雷达探测首包自动判型,忽略yaml配置
RSBP(BP3)与RSBPV4(BP4)的MSOP包长、魔数、block布局完全相同,无法按尺寸区分。 唯一差异在MSOP header偏移30的lidar_type字节: 0x03=BP3, 0x00=BP4 (洋浦76从机实测稳定)。
- decoder_factory.hpp: 新增 detectBpLidarType(), 在线绑msop_port探测首包(3s超时) 或离线扫pcap, 读偏移30字节判型, 失败回退yaml - lidar_driver_impl.hpp: init()在input绑口前调用探测并覆盖lidar_type, 保证探测socket不与驱动socket抢端口, 且判出的类型同步到Input与decoder
yaml保持RSBP/RSBPV4原格式, 能自动判出即忽略yaml定义。
via [HAPI](https://hapi.run)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Co-Authored-By: HAPI <noreply@hapi.run>
|
 | src/rs_driver/src/rs_driver/driver/lidar_driver_impl.hpp |
 | src/rs_driver/src/rs_driver/driver/decoder/decoder_factory.hpp |
Commit
4792b51816d55e13660f638c6d16cb61c4c1e0bd
by lanxiaosongfix: 离线包源(ROS/proto)也做BP3/BP4自动判型,修复时间戳溢出崩溃
msg_source=2/4 走 initDecoderOnly,不开socket,原先的绑口前探测不生效, yaml 写错型时 BP3 的 YMD 时间戳会被 BP4 解码器按 Unix 解成 ~2.8e13 秒, ros::Time::fromSec 抛 "Time is out of dual 32-bit range" 导致节点 abort (离线回放 truck_3rsbp_offline_bp4 时 right_down 节点必现)。
- decoder_factory: 抽出 DecoderFactory::probeBpTypeInBuf(),复用偏移30 判据(0x03=BP3 / 0x00=BP4),供 socket/pcap 探测与裸包判型共用 - lidar_driver_impl: decodeMsopScan 解码前判首个 MSOP 包,与 yaml 不一致 则重建 decoder 并清 difop_flag_ 等下一个 DIFOP;加 decoder_mutex_ 保护 与 decodeDifopPkt 并发的指针替换
via [HAPI](https://hapi.run)
Co-Authored-By: HAPI <noreply@hapi.run> Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
 | src/rs_driver/src/rs_driver/driver/lidar_driver_impl.hpp |
 | src/rs_driver/src/rs_driver/driver/decoder/decoder_factory.hpp |