充电日志阅读 FAQ

本文用于排查“机器人到达充电点后趴到充电桩上,但随后停止充电”这类问题。建议从 Basic_server 日志开始看,再根据时间戳去其它日志交叉验证。

1. 总体阅读思路

Basic_server 是主线日志,负责串起外部命令、导航任务、控制模式、充电命令和充电状态。其它日志主要用于验证 Basic_server 下发命令后的实际执行结果。

常见对应关系如下:

Basic_server 模块/打印 主要对应日志 用途
CmdHandle 上层客户端、手柄、任务下发侧,必要时看 handler 判断外部下发了什么命令
NavWorker plannerglobal_plannercharge_manager 判断导航任务、到点、点位属性
VelControl rl_deploy 判断步态、姿态、运动模式是否切换成功
DDSWorker Send [Charge] charge_managerrl_deploy 判断充电命令是否被执行侧收到
DDSWorker 当前充电状态 charge_managerctrlmcu_noderl_deploy 判断充电状态反馈
OOA/LIO/HeightMap lio_perceptionheight_map_navaccumulate_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_manageridle 进入 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 到充电点后,开始自主充电流程

推荐顺序:

  1. Basic_server 确认是否有 点位属性:充电点
  2. 确认是否下发 Send [Charge]: 1 success
  3. 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_serverCharge motion: 0x1001,并在 rl_deploycharge_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. 快速排查清单

  1. Basic_server点位属性:充电点,确认是否到达充电点。
  2. Send [Charge]: 1 success,确认是否开始自主充电。
  3. 当前充电状态:2进入自主充电成功,确认是否进入成功。
  4. recv ControlUsageMode:2,确认是否有辅助模式切换。
  5. Send [Charge]: 2 success,确认是否被重置/退出。
  6. charge_manager获取电流成功,上桩成功,确认是否已经上桩。
  7. charge_managerReceive ChargeEnable, command is [2],确认是否从 charging 回到 idle
  8. rl_deploy充电停止,确认底层充电停止时间是否一致。