自主充电感知相关log、排查、录包说明

在自主充电过程中,感知组模块提供: 1. 反光柱定位(reflective_column_node的log) 2. 障碍物信息(charge_manager的log),主要可能出现的问题有:反光柱无定位、定位不准确、错误停障等。运动不正常需要找运动同事,逻辑异常需要找软件同事。

使用1.4/2.3步骤,请都使用ros2 bag info [包名]指令确认数据真的都有被记录;

所有参数含义都在chage_manager.toml中有明确说明;

118f开始,反光柱定位模块已经更新为自适应版本。

一、进退桩停障

1.1 避障模块在正常等待中,未被启用

打印点云的更新状态,但不进行具体计算。

图示

图片内容(已识别并结合上下文整理): 等待状态日志持续打印点云更新数量及充电管理器状态,但尚未进入具体避障计算;这表示点云输入存在、检测模块处于待命状态。

1.2 障碍检测状态(也可使用INFO等级查看关键信息)

图示

图片内容(已识别并结合上下文整理): 障碍检测被启用后,日志依次给出检测方向(示例为 Back)、机体高度、机身下方检测范围以及该范围内是否存在障碍。

(1)打印障碍的检测方向,例如【进桩-Front】 【退桩-Back】;

[2025-12-19 15:35:39.966.151] [DEBUG ] [ObstacleDetection] 开始障碍检测 - 方向: 进桩-Front, 未处理点云: 82777 

(2)会打印检测多低的障碍。如果桩高度变化、狗高度变化、过低障碍误检测,想调整z方向障碍检测距离,都可以通过调整参数~/config/charge_manager.toml中的charge_pile_h来修改。实际检测范围为 【狗真实高度(运动提供) - 充电桩高度charge_pile_h】。并可以根据打印 【[mOD] 处理机体下方障碍范围:】的打印数值判断;

[2025-12-19 15:35:40.167.291] [DEBUG ] [ObstacleDetection] 狗当前身体高度为:0.451498 
[2025-12-19 15:35:40.167.306] [DEBUG ] [ObstacleDetection]  [mOD] 处理机体下方障碍范围:-0.201498 

(3)【step 2】将打印范围内是否有障碍,此处打印的信息报送给charge的主程序来进行判断:

图示

图片内容(已识别并结合上下文整理): 进桩方向的检测日志显示机体高度约 0.412 m,并计算到最近障碍距离约 0.335 m;该结果会提交给充电主程序作进一步判断。

图示

图片内容(已识别并结合上下文整理): 另一组检测日志显示机体高度约 0.501 m,计算范围内未检测到障碍。排查时应将这条结论与现场实际障碍情况对照。

1.3 障碍检测功能关闭

图示

图片内容(已识别并结合上下文整理): 日志先完成前向障碍检测,随后 ChargeManager 连续检测到充电电流并判定获取电流成功,最后关闭障碍检测,表示本次进桩与充电确认流程完成。

1.4 什么时候障碍问题需要感知组查看

实际有障碍,但是日志中没有打印障碍信息;

实际没障碍,但是日志中报送有障碍信息;

障碍距离计算错误(需要注意目前Airy盲区几乎20cm左右,直接挡在雷达前面很近是无法正常停障的);

障碍检测方向错误;

TBC......

总之 此模块中,感知只负责确认是否有障碍,如果日志打印是否有障碍和环境中的障碍能对应上,则感知环节无误,请找软件和运动排查。

如果判断确实有问题,请看一下原始点云是否有问题(例如是否有损坏、是否脏污使得原始数据不佳)。如果也无问题,则可以打开charge_manger.toml中的参数pub_seg_cloud_改为true,并按照以下方式录制bag,并把bag、日志、和发生问题的时间给到我:

su
source /opt/ros/foxy/setup.bash
ros2 bag record /LIDAR/POINTS /SEG_CLOUD

二、反光柱定位

2.1 反光柱定位正常等待中,未被调用

图示

图片内容(已识别并结合上下文整理): reflective_column_node 周期性打印运行时长/心跳,但没有进入定位步骤,表示反光柱定位节点已启动并在正常等待调用。

2.2 正常运行过程状态(附图为debug版本,info等级也可)

图示

图片内容(已识别并结合上下文整理): 反光柱定位调试日志展示完整计算链:提取高反射点、拟合并匹配左右反光柱、检查夹角,最后计算激光雷达相对充电桩的 x、y、yaw 位姿。

最终输出信息:报送给charge manager的定位信息,对应:

图示

图片内容(已识别并结合上下文整理): step 3-2 输出一次最终定位结果,示例为 x≈-1.742 m、y≈-0.056 m、yaw≈1.07°。出现该行说明一次反光柱定位计算已经结束。

如果有输出【step 3-2】的坐标信息,则说明已经计算完毕一次定位。可观察报送的定位信息与物理环境中机体位置是否一致,如果此处定位无问题,则感知组负责的模块处理完毕。

(其中,x应一直为负值,y正为两反光柱中线靠左,y负为两反光柱中线靠右。 yaw正为更朝向左反光柱的方向)

排查1:是否正常输入点云

如果打开DEBUG模式,可以通过【step 1-0】的打印检查,如果为0,则输入有问题,请查看驱动情况

查看雷达硬件,或联系软件组同事。

图示

图片内容(已识别并结合上下文整理): DEBUG 日志的 step 1-0 显示输入原始点数约 76521,step 1-1 显示按反射强度阈值 230 提取到约 2355 个高反点;若原始点数为 0,应优先检查雷达和驱动输入。

排查2: 是否有角度、姿态影响

【step 1】聚类数量 [1] 少于2个 

如果循环中打印的 聚类数量[x] x 为1, 请确认是否角度过于倾斜,没有让雷达同时看到两个反光柱。

2.3 什么时候定位问题需要感知组查看(录包脚本已更新为自适应版本)

日志中 有原始点云正常输入(不能为0,数据连续,没有掉帧),但打印 聚类数量少、簇 z/y 比例有多行、最终没有打印出【激光雷达位置】等情况。

如出现此类问题,请提供bag(录制方法和内容如下)、对应的log、和问题出现的时间给我:

录制bag前,请将charge_manger.toml中的参数pub_debug_cloud改为true;

su
source /opt/robot/scripts/setup_ros2.sh
ros2 bag record /charge/left_rc /charge/right_rc /pose_in_apriltag_corrected /cloud_reflective /cloud_pile_cluster /charge/left_rc_pose /charge/right_rc_pose /LIDAR/POINTS

录制完毕后,可以通过指令:

ros2 bag info [bag_name]

来确认是否录制上了对应的话题,对应的话题是否有信息(查看对应topic行的count)