充电日志阅读 FAQ
本文用于排查“机器人到达充电点后趴到充电桩上,但随后停止充电”这类问题。建议从 Basic_server 日志开始看,再根据时间戳去其它日志交叉验证。
1. 总体阅读思路
Basic_server 是主线日志,负责串起外部命令、导航任务、控制模式、充电命令和充电状态。其它日志主要用于验证 Basic_server 下发命令后的实际执行结果。
常见对应关系如下:
Basic_server 模块/打印 |
主要对应日志 | 用途 |
|---|---|---|
CmdHandle |
上层客户端、手柄、任务下发侧,必要时看 handler |
判断外部下发了什么命令 |
NavWorker |
planner、global_planner、charge_manager |
判断导航任务、到点、点位属性 |
VelControl |
rl_deploy |
判断步态、姿态、运动模式是否切换成功 |
DDSWorker Send [Charge] |
charge_manager、rl_deploy |
判断充电命令是否被执行侧收到 |
DDSWorker 当前充电状态 |
charge_manager、ctrlmcu_node、rl_deploy |
判断充电状态反馈 |
OOA/LIO/HeightMap |
lio_perception、height_map_nav、accumulate_cloud |
判断感知、定位、避障启停 |
TcpServer |
外部客户端连接 | 判断客户端连接变化,不直接代表业务成功或失败 |
2. 从 Basic_server 看外部命令
在 Basic_server 中优先搜索:
Recv [Charge]
Recv [MotionState]
recv ControlUsageMode
单点任务下发
含义:
| 打印 | 含义 |
|---|---|
Recv [Charge]: 0x1 |
外部要求开始充电 |
Recv [Charge]: 0x0 |
外部要求退出充电 |
recv ControlUsageMode:2 |
外部切换到辅助模式,通常来自手柄或客户端 |
单点任务下发 |
开始执行一个导航点 |
最近两天问题的关键打印是:
[CmdHandle] recv ControlUsageMode:2
[VelControl] 控制模式变更后处理 自主充电操作重置!
这表示收到辅助模式切换后,Basic_server 执行了自主充电重置逻辑。
3. Send [Charge] 应该看哪个日志
Basic_server 中看到:
[DDSWorker] Send [Charge]: 1 success
对应 charge_manager 中通常会看到:
[ChargeManager] Receive ChargeEnable, command is [1]
[ChargeManager] newCmd:1
[ChargeManager] My status is [idle], begin transiton status to [goToPile]
[ChargeManager] state:0 -> 1
含义:开始自主充电,charge_manager 从 idle 进入 goToPile,开始找桩、进桩、微调、趴桩、检测电流。
如果 Basic_server 中看到:
[DDSWorker] Send [Charge]: 2 success
对应 charge_manager 中通常会看到:
[ChargeManager] Receive ChargeEnable, command is [2]
[ChargeManager] newCmd:2
[ChargeManager] My status is [charging], begin to transtion to [idle]
[ChargeManager] state:2 -> 0
含义:从充电或进桩流程退出。最近 5 月 6 日、5 月 7 日的异常停止都属于这条链路。
4. 导航到点怎么看
在 Basic_server 中看:
[NavWorker] 开始执行导航任务点:0
[DDSWorker] 向Planner导航发送目标点
[NavWorker] plannerStatus 变更 status:2003 -> 999
[NavWorker] 导航完成
[NavWorker] 点位属性:充电点
对应关系:
| 日志 | 作用 |
|---|---|
planner.日期.log |
局部规划、目标点执行、速度和到点状态 |
global_planner.日期.log |
全局路径规划 |
rl_deploy.日期.log |
实际运动、步态执行 |
charge_manager.日期.log |
到充电点后,开始自主充电流程 |
推荐顺序:
- 在
Basic_server确认是否有点位属性:充电点。 - 确认是否下发
Send [Charge]: 1 success。 - 到
charge_manager看是否进入goToPile。
5. 步态、微调、趴桩怎么看
Basic_server 中常见打印:
[VelControl] 切换到导航运动——充电步态
[VelControl] 切换到导航运动——充电微调
[VelControl] recv and send Charge motion: 0x1001
对应 rl_deploy:
[Target_Gait] target_gait: 0x3001
[Target_Gait] target_gait: 0x3004
[Target_State] target_mode: 4097
[StateMachine] rl_control ------------> charge_liedown_state
常见含义:
| 值/状态 | 含义 |
|---|---|
0x3001 |
充电步态,靠近充电桩 |
0x3004 |
充电微调 |
motion:0x1001 / target_mode:4097 |
趴下充电动作 |
charge_liedown_state |
底盘进入趴桩状态 |
如果客户反馈“已经趴到充电桩上”,通常需要在 Basic_server 找 Charge motion: 0x1001,并在 rl_deploy 找 charge_liedown_state 验证。
6. 怎么判断是否真的上桩成功
Basic_server 中看到:
[DDSWorker] 当前充电状态:2,error code:0x1
[NavWorker] 进入自主充电成功
表示 Basic_server 层认为进入自主充电成功。
更强的证据来自 charge_manager:
[ChargeManager] 获取电流成功,上桩成功
[ChargeManager] My status is [goToPile], begin transtion status to [charging]
[ChargeManager] state:1 -> 2
如果出现 获取电流成功,上桩成功,基本可以说明已经对上桩,并检测到了电流。后续如果马上停止,重点应排查是否有外部命令或控制模式切换。
7. 最近案例链路:辅助模式导致停止充电
5 月 7 日 12:43 案例
Basic_server:
12:42:25 点位属性:充电点
12:42:25 Send [Charge]: 1 success
12:43:45 当前充电状态:2
12:43:45 进入自主充电成功
12:43:45 recv ControlUsageMode:2
12:43:45 控制模式变更后处理 自主充电操作重置!
12:43:45 Send [Charge]: 2 success
12:43:46 当前充电状态:0,error code:0x0
charge_manager:
12:43:45 获取电流成功,上桩成功
12:43:45 state:1 -> 2
12:43:45 Receive ChargeEnable, command is [2]
12:43:45 My status is [charging], begin to transtion to [idle]
12:43:45 state:2 -> 0
rl_deploy:
12:43:32 StateMachine rl_control ------------> charge_liedown_state
12:43:37 充电使能
12:43:43 充电使能
12:43:45 充电停止
完整链路:
到达充电点
-> Basic_server 下发 Charge=1
-> charge_manager 进入 goToPile
-> 机器人充电步态、微调、趴桩
-> charge_manager 获取电流成功,上桩成功
-> Basic_server 判定进入自主充电成功
-> 外部下发 ControlUsageMode:2
-> Basic_server 执行自主充电重置
-> Basic_server 下发 Charge=2
-> charge_manager 从 charging 回 idle
-> rl_deploy 打印充电停止
-> Basic_server 充电状态变为 0
结论:该场景不是导航没到,也不是没趴下,更不是单纯没对上桩;而是上桩成功后,外部控制模式切到辅助模式 ControlUsageMode:2,触发自主充电重置。
8. 常用排查命令
在具体日期目录下可以这样快速搜索。
查看 Basic_server 主线:
rg -n "充电|Charge|ControlUsageMode|点位属性|进入自主充电|当前充电状态|Send \\[Charge\\]|Recv \\[Charge\\]|tcp 客户端关闭连接" Basic_server*.log
查看 charge_manager 充电流程:
rg -n "Receive ChargeEnable|newCmd|state:|goToPile|charging|idle|获取电流成功|上桩成功|检测电流|command is" charge_manager*.log
查看 rl_deploy 姿态和底层充电:
rg -n "StateMachine|Target_State|Target_Gait|charge_liedown_state|充电使能|充电停止" rl_deploy*.log
查看导航到点:
rg -n "导航完成|点位属性|plannerStatus|向Planner导航发送目标点|导航任务" Basic_server*.log
9. 标准判断话术
如果日志中出现以下组合:
进入自主充电成功
recv ControlUsageMode:2
自主充电操作重置
Send [Charge]: 2 success
当前充电状态:0
可以判断为:
机器人已到达充电点并进入自主充电流程,且已经完成趴桩/上桩动作。随后外部控制端下发辅助模式 ControlUsageMode:2,系统按控制模式切换逻辑重置自主充电并下发 Charge=2,导致充电状态退出到 0,表现为趴到充电桩后又停止充电。
如果 charge_manager 中还能看到:
获取电流成功,上桩成功
state:1 -> 2
可以进一步说明:
本次不是未对上桩,而是已经上桩成功后被外部辅助模式切换打断。
10. 快速排查清单
- 在
Basic_server搜点位属性:充电点,确认是否到达充电点。 - 搜
Send [Charge]: 1 success,确认是否开始自主充电。 - 搜
当前充电状态:2和进入自主充电成功,确认是否进入成功。 - 搜
recv ControlUsageMode:2,确认是否有辅助模式切换。 - 搜
Send [Charge]: 2 success,确认是否被重置/退出。 - 到
charge_manager搜获取电流成功,上桩成功,确认是否已经上桩。 - 到
charge_manager搜Receive ChargeEnable, command is [2],确认是否从charging回到idle。 - 到
rl_deploy搜充电停止,确认底层充电停止时间是否一致。