100 个真实故障诊断 (Troubleshooting)
怎么用这张表
每条 case 都按 症状 → 根因 → 排查 → 修复 写。先看症状对得上 → 直接跳修复。先看不上 → 用 Ctrl+F 搜关键词(报错文本 / 现象 / 设备 都搜得到)。
故障地图
flowchart TD
Start[你的故障在哪?]
Start --> A[机械臂 / 关节]
Start --> B[移动底盘]
Start --> C[电池 / 电源]
Start --> D[视觉 / 相机]
Start --> E[ROS 2 / 通信]
Start --> F[仿真 / Sim2Real]
Start --> G[VLA 模型]
Start --> H[智能家居]
Start --> I[嵌入式 / 飞控]
Start --> J[网络 / 远程]
A --> A1[10 cases]
B --> B1[10 cases]
C --> C1[8 cases]
D --> D1[10 cases]
E --> E1[12 cases]
F --> F1[15 cases]
G --> G1[10 cases]
H --> H1[10 cases]
I --> I1[8 cases]
J --> J1[7 cases]
1. 机械臂 / 关节 (10)
Case 01:SO-100 机械臂不响应指令
- 症状:
lerobot-calibrate后发move命令,关节纹丝不动 - 根因:舵机总线 ID 冲突 / 供电不足 / 波特率错
- 排查:
lsusb看串口 →stty -F /dev/ttyUSB0看波特率 → 用厂家 SDK 单独 ping - 修复:检查 ID(SO-100 通常 1-6)· 换 12V/3A 电源 · 波特率锁 1,000,000
Case 02:Dynamixel 舵机红灯闪烁
- 症状:上电后红灯常亮 / 闪烁
- 根因:过热 / 电压低 / 位置超限
- 排查:读
present_temperature/present_voltage - 修复:降负载 · 补供电 · 重启
Case 03:关节到位但末端抖
- 症状:机械臂能到目标,但来回小幅度振动 0.5-2 mm
- 根因:PID 参数过激 / 减速比与负载不匹配
- 排查:单独测每个关节的
present_position是否稳 - 修复:降低 P · 增大 D · 改柔顺控制
Case 04:力矩模式下报 overload
- 症状:
status_return_level=1时频报 overload - 根因:扭矩限位设小 / 末端碰撞
- 排查:看
present_current波形 - 修复:放宽
torque_limit(SO-100 默认 800) · 检查机械干涉
Case 05:USB 串口插上没反应
- 症状:
/dev/ttyUSB*不出现 - 根因:USB 权限 / 线材问题 / FTDI 驱动缺
- 排查:
lsusb -t·dmesg | tail·sudo chmod 666 /dev/ttyUSB0 - 修复:装
brltty卸载(常冲突)· 加 udev 规则
Case 06:机械臂校准数据漂移
- 症状:跑 30 分钟后零点偏移 1-2 度
- 根因:齿轮间隙 / 温度漂移 / 编码器分辨率低
- 排查:静止 10 分钟看
present_position是否稳 - 修复:用绝对编码器型号 (XM/XH 系列) · 加温度补偿
Case 07:双臂 SO-100 同步丢拍
- 症状:遥操作时主从臂错位 1-2 帧
- 根因:USB 带宽不够 / 帧间隔不一致
- 排查:
htop看 CPU ·time测单帧耗时 - 修复:两臂分两个 USB 控制器 · 降
fps到 30
Case 08:夹爪夹不紧
- 症状:抓 100g 物体滑落
- 根因:摩擦垫磨损 / 夹持力不够 / 物体表面太滑
- 排查:看
gripper_force实际值 - 修复:换橡胶垫 · 增大
gripper_force· 物体去光面
Case 09:G1/H1 宇树机械臂零位漂移
- 症状:断电后重新上电,关节位置偏移
- 根因:宇树 SDK2 重启后默认回零位,与实际不一致
- 排查:
dds_logger看low_state的q - 修复:每次启动先
ZeroCalibration· 断电前归位
Case 10:Franka 报反射时间超时
- 症状:
libfranka: Realtime deadline missed - 根因:CPU 抢占 / 核隔离没做
- 排查:
journalctl -u franka.service - 修复:用
isolcpus隔离核 · 关 preempt · 升 kernel-rt
2. 移动底盘 (10)
Case 11:差速底盘直走偏
- 症状:发
vx=0.5, w=0实际弧线走 - 根因:两轮直径不一致 / 编码器分辨率不同
- 排查:测 10 m 直线实际距离
- 修复:
wheel_separation_multiplier校准 · 换同批次轮胎
Case 12:阿克曼转向底盘打角误差大
- 症状:
steering_angle=0.2实际转 0.15 rad - 根因:转向电机减速比误差 / 几何参数不对
- 排查:左右各打 30 度看实际转角
- 修复:URDF 中改
wheelbase和steering_link长度
Case 13:四足狗腿打滑
- 症状:Go2 在瓷砖上原地踏步不走
- 根因:足端摩擦不足 / 地面识别失败
- 排查:
UnitreeLegged SDK看footForce - 修复:换橡胶足垫 · 调 gait 参数
Case 14:底盘上电后不动但 ROS 节点正常
- 症状:
/cmd_vel发布正常,电机不响应 - 根因:使能信号没拉 / 急停按下
- 排查:测
enable_pinGPIO · 看急停触点 - 修复:拉高 enable · 释放急停
Case 15:IMU 漂移严重
- 症状:静止时航向角每分钟漂 1-2 度
- 根因:磁力计干扰 / IMU 没标定
- 排查:
imu_tools看mag_heading是否跳 - 修复:远离电机/电池 · 重做
imu_calibration
Case 16:建图反复卡墙角
- 症状:Cartographer / SLAM 在某区域反复失败
- 根因:回环检测距离设小 / 特征点不足
- 排查:RViz 看稀疏地图
- 修复:增大
loop_closure_search_radius· 加反光柱
Case 17:底盘过门槛翻车
- 症状:跨 5 cm 门槛翻倒
- 根因:质心太高 / 越障姿态不对
- 排查:调低 CoM · 加俯仰控制
- 修复:URDF 加配重 · 加主动俯仰
Case 18:导航到目标 0.5 m 处停住
- 症状:A* 规划成功,执行到 0.5 m 不动
- 根因:到达判定阈值太大 / 局部代价图膨胀
- 排查:
ros2 topic echo /local_plan看终点 - 修复:调小
xy_goal_tolerance到 0.1
Case 19:里程计漂移 > 5%/10m
- 症状:走 10 m 实际位置偏 0.5 m+
- 根因:轮径误差 / 编码器精度
- 排查:标定
wheel_radius - 修复:跑
calibrate_linear工具 · 换光电编码器
Case 20:多底盘协同冲突
- 症状:两台 AGV 在交叉口互让死锁
- 根因:交通管制没做
- 排查:看
traffic_manager日志 - 修复:加中央调度 (ROS 2 nav2 + traffic) · 调优先级
3. 电池 / 电源 (8)
Case 21:电池容量腰斩 50%
- 症状:标称 5000 mAh 实际 2500
- 根因:单体电压差 > 100 mV / 老化
- 排查:测每节电压 · 看循环次数
- 修复:手动均衡 · 换电芯
Case 22:低温充电后起火
- 症状:0°C 充电后冒烟
- 根因:BMS 没禁低温充电
- 排查:看 BMS 是否支持低温保护
- 修复:换 Daly / JBD 智能 BMS
Case 23:急加速电压骤降
- 症状:5C 加速时母线电压掉 20%
- 根因:电芯内阻大 / 线径太细
- 排查:用示波器测母线波形
- 修复:换低内阻电芯 · 加粗 8 AWG 线
Case 24:充电 80% 跳绿灯
- 症状:充到 80% 立刻停
- 根因:充电 IC 误判 / 温度保护
- 排查:查 NTC 温度 · 查 CV 阈值
- 修复:校准 NTC · 改 charger profile
Case 25:48V 电池组上电烧保险
- 症状:上电瞬间 40A 保险丝熔断
- 根因:母线短路 / 控制器击穿
- 排查:断负载测电池内阻
- 修复:换 MOS / IGBT · 改保险到 50A
Case 26:CAN 报 BMS 数据不更新
- 症状:
soc一直显示 -1 / 0 - 根因:CAN 终端电阻没接 / ID 错
- 排查:
candump can0看是否有报文 - 修复:CANH/CANL 各加 120Ω · 改 CAN ID
Case 27:充电桩通信失败
- 症状:插枪后不充电
- 根因:CAN 不通 / 协议错
- 排查:
can-utils看报文 - 修复:GB/T 27930 vs OCPP 1.6 协议对齐
Case 28:储能系统 SOC 跳变
- 症状:SOC 从 80% 突然跳 30%
- 根因:库仑计标定错 / 电流传感器漂移
- 排查:满充满放一次校准
- 修复:重置 SOC · 换霍尔传感器
4. 视觉 / 相机 (10)
Case 29:RealSense 启动报 no device
- 症状:
rs-enumerate-devices空 - 根因:USB 供电不足 / 驱动没装
- 排查:
lsusb | grep Intel - 修复:用 USB 3.0 端口 · 装
librealsense2
Case 30:深度图大面积黑洞
- 症状:深度图中央 1/3 全 0
- 根因:IR 投影器被遮挡 / 测距超限
- 排查:拿手挡住测一下
- 修复:清镜头 · 保持 0.3-3 m 距离
Case 31:ZED 2i 启动报 “INIT_ERROR”
- 症状:ZED 报错相机没找到
- 根因:USB 3.0 协商失败 / 固件旧
- 排查:
dmesg看 USB 错误 - 修复:换 USB 线 ·
ZED_Update升固件
Case 32:鱼眼相机标定后畸变更严重
- 症状:标定后画面边缘比原来更弯
- 根因:标定板角度不够 / 模型选错
- 排查:用
kalibr重做 - 修复:用
pinhole-radtan模型 · 标定板 30+ 角度
Case 33:夜间 RGB 全黑
- 症状:晚上拍出来全黑
- 根因:曝光时间设短 / 增益低
- 排查:
v4l2-ctl -d /dev/video0 --get-ctrl exposure - 修复:自动曝光 · 加 IR 补光
Case 34:相机帧率掉到 5 fps
- 症状:标称 30 fps 实际 5 fps
- 根因:USB 带宽 / 编码耗时
- 排查:
v4l2-ctl --stream-mmap - 修复:降分辨率到 720p · 用 MJPG 格式
Case 35:双相机时间不同步
- 症状:两路图差 50-100 ms
- 根因:硬件触发没接
- 排查:看 manufacturer 触发
- 修复:用 GPIO 触发 · PTP 同步
Case 36:3DGS 重建有黑边
- 症状:训练后新视角边缘糊
- 根因:训练视角不全 / 球谐阶数低
- 排查:看训练日志
- 修复:补 360° 视角 · 升 SH=4
Case 37:LiDAR 点云丢包
- 症状:机械式 LiDAR 偶发整圈空
- 根因:电机转速不稳 / 编码器错
- 排查:
ros2 topic hz /scan - 修复:换 12V 稳压电源 · 改 baud rate
Case 38:VSLAM 跟踪丢失
- 症状:ORB-SLAM3 突然 Reset
- 根因:快速运动 / 光照突变
- 排查:看
Tracking: LOST时刻 - 修复:降速 · 用 IMU 融合
5. ROS 2 / 通信 (12)
Case 39:节点之间看不到 topic
- 症状:
ros2 topic list看不到对方 - 根因:
ROS_DOMAIN_ID不一致 / 防火墙 - 排查:
ros2 doctor·iptables -L - 修复:统一
ROS_DOMAIN_ID· 关闭 multicast 阻断
Case 40:发布频率上不去
- 症状:写
rclpy发布 100 Hz 实际 20 Hz - 根因:
QoS不匹配 / 同步锁 - 排查:
ros2 topic hz - 修复:用
BEST_EFFORT· 去掉 print
Case 41:跨主机 DDS 通信失败
- 症状:两台机器
ros2 topic互相看不见 - 根因:默认 multicast 走不通 / FastDDS discovery 失败
- 排查:
tcpdump udp port 7400-7500 - 修复:用 CycloneDDS + initial peer · 改用 Zenoh
Case 42:节点 OOM kill
- 症状:跑 2 小时后被 SIGKILL
- 根因:图像 topic 累积 / 内存泄漏
- 排查:
dmesg | grep -i oom - 修复:用
image_transport压缩 · 检查 subscriber queue
Case 43:launch 文件报找不到包
- 症状:
ResourceNotFound: my_pkg - 根因:
colcon没 build / install - 排查:
ros2 pkg list | grep my_pkg - 修复:
colcon build --symlink-install --packages-select my_pkg
Case 44:URDF 加载报 joint 错
- 症状:
robot_state_publisher报 joint 找不到 - 根因:URDF 拼写错 / 父子 link 关系乱
- 排查:
urdf_to_graphiz my.urdf - 修复:检查
<joint name="...">与<link name="...">一致
Case 45:TF 报 lookup error
- 症状:
Lookup would require extrapolation into the past/future - 根因:
tf2时间不同步 / 时间戳错 - 排查:
ros2 run tf2_tools view_frames - 修复:用
use_sim_time· 修正stamp
Case 46:TF tree 出现环
- 症状:两个 frame 互相指
- 根因:URDF 写错 / 静态发布写错
- 排查:
ros2 run tf2_tools view_frames -o - 修复:移除冲突的 static_transform_publisher
Case 47:ROS 2 bridge (ROS1 ↔ ROS2) 频繁断
- 症状:
ros1_bridge每 1 分钟掉 - 根因:两边时钟漂移 / ROS1 节点 OOM
- 排查:bridge 日志
- 修复:用
dynamic_bridge替代 · 拆 topic
Case 48:micro-ROS 节点跑飞
- 症状:串口发了 1 s 后 ESP32 不响应
- 根因:看门狗没启 / 内存爆
- 排查:
ros2 node info /micro_ros_node - 修复:启
heartbeat· 调小 msg payload
Case 49:ROS_DOMAIN_ID=0 多机冲突
- 症状:实验室 5 台机器互相串扰
- 根因:默认 0 = 公网
- 排查:
ros2 topic list看陌生 topic - 修复:改 ID 到 1-232 不同值
Case 50:service call 超时
- 症状:
rclpycall_async一直不返回 - 根因:service server 没启 / 节点 crash
- 排查:
ros2 service list·ros2 node list - 修复:用 watchdog 监控 · 加 retry
6. 仿真 / Sim2Real (15)
Case 51:MuJoCo 启动报 cuInit err
- 症状:
mujoco.FatalError: could not initialize CUDA - 根因:驱动不匹配
- 排查:
nvidia-smi·nvcc --version - 修复:重装 nvidia-driver 535+ · CUDA 12
Case 52:Isaac Sim 卡在 loading scene
- 症状:开 USD 场景卡 5 分钟
- 根因:GPU 不够 / 资产未加载
- 排查:
nvidia-smi看显存 - 修复:用更小 USD · 关 nucleus
Case 53:DR 训练不收敛
- 症状:随机化范围 ±50% 后 reward = 0
- 根因:DR 范围过大 / 状态空间发散
- 排查:看 reward 曲线
- 修复:缩小到 ±10% 起步 · 加 reward shaping
Case 54:真机 0% 成功率但 sim 100%
- 症状:sim 跑得 6,真机一动就跪
- 根因:URDF 质量 / 惯量错 3-5 倍
- 排查:称重 / 测惯量
- 修复:用
meshlab+pybullet重测
Case 55:相机内参没标定
- 症状:sim 训练的视觉策略真机全错
- 根因:用了 sim 默认内参
- 排查:
Kalibr标定 - 修复:棋盘格 30+ 角 · 标定内参 + 畸变
Case 56:DR 视觉但没随机化背景
- 症状:换场景就崩
- 根因:只 DR 物体没 DR 背景
- 排查:放新背景测
- 修复:加 ImageNet 1k 随机纹理
Case 57:训练 12h 但策略全是抖动
- 症状:动作高频震
- 根因:动作平滑项没加 / 频率过高
- 排查:看 action 序列 FFT
- 修复:加 action smoothing · 降 30 → 10 Hz
Case 58:域随机化范围小但真机仍差
- 症状:±10% DR 仍 30% 成功率
- 根因:动力学 gap 太大(齿轮 / 线缆)
- 排查:实测力矩响应
- 修复:加 System ID · 用真机数据 fine-tune
Case 59:仿真碰撞穿模
- 症状:抓取 sim 中手穿入物体
- 根因:mesh collision 没用 trimesh
- 排查:看 collision geometry
- 修复:用
<collision><geometry><mesh>
Case 60:Isaac Lab GPU 利用率 < 30%
- 症状:4090 跑 1024 env 显存 30%
- 根因:envs 数太少 / batch size 小
- 排查:
nvidia-smi·tensorboard - 修复:升 envs 到 4096+ · 改 vec env wrapper
Case 61:Sim2Real 数据格式不一致
- 症状:真机 obs 格式 vs sim 不匹配
- 根因:图像尺寸 / joint 顺序错
- 排查:保存一帧对比
- 修复:用统一 obs wrapper
Case 62:训练 reward hack
- 症状:reward 涨但真机无意义
- 根因:reward shaping 漏洞
- 排查:分析 reward 各项
- 修复:用 sparse reward · 加 imitation loss
Case 63:act_norm 错位
- 症状:推理时动作维度对不上
- 根因:训练时 mean/std 没保存
- 排查:
torch.load看 state_dict - 修复:保存 norm stats 一起 export
Case 64:仿真帧率与真机不同步
- 症状:sim 100 Hz 真机 30 Hz 部署策略崩
- 根因:dt 假设错
- 排查:看 control 频率
- 修复:在 policy 中加 time wrapper
Case 65:仿真多机干扰
- 症状:多 agent 训练时 GPU OOM
- 根因:物理引擎多份拷贝
- 排查:
nvidia-smi - 修复:用 PhysX GPU · Isaac Lab 的 GPU pipeline
7. VLA 模型 (10)
Case 66:OpenVLA 推理慢 (1 Hz)
- 症状:单帧推理 1 s
- 根因:未量化 / batch=1
- 排查:
torch.profiler - 修复:用
bitsandbytes4-bit · batch=8 · TensorRT
Case 67:VLA 输出动作超出关节限位
- 症状:策略输出 [10, 10, …] 超过 SO-100 范围
- 根因:action head 没 clip
- 排查:看 action 范围
- 修复:加
torch.clamp· action space 归一化
Case 68:VLA 任务指令改了不响应
- 症状:“pick apple” 改 “pick orange” 输出不变
- 根因:prompt 模板没换
- 排查:看 tokenize 输出
- 修复:用 LLaMA-3 模板 · 验证 tokenizer
Case 69:VLA 在新场景完全失效
- 症状:换房间布局就崩
- 根因:训练数据同质
- 排查:分析 train set 场景分布
- 修复:加场景泛化 (Domain Random) · 多位置采集
Case 70:Octo 微调后遗忘
- 症状:在 SO-100 上微调后,Franka 任务全错
- 根因:catastrophic forgetting
- 排查:对比 fine-tune 前后 base task
- 修复:用 LoRA · 保留原权重 · 加 replay buffer
Case 71:RT-2 推理胡说八道
- 症状:输出与任务无关
- 根因:vision tower 没 load
- 排查:
model.state_dict()keys - 修复:检查 CLIP 是否加载 · 验证 image processor
Case 72:VLA 部署到 Jetson 报 OOM
- 症状:
torch.cuda.OutOfMemoryError - 根因:Jetson 8GB 装不下 7B 模型
- 排查:
tegrastats - 修复:4-bit 量化 · 用 OpenVLA-7B-OFT · Jetson Orin 64GB
Case 73:VLA 训练 NaN loss
- 症状:loss 突然变成 NaN
- 根因:lr 过大 / fp16 溢出
- 排查:看 loss 曲线
- 修复:降 lr · 用 bfloat16 · grad clip 1.0
Case 74:VLA 推理动作卡顿 (jitter)
- 症状:动作 5 Hz 输出但帧间跳变
- 根因:未做 temporal ensemble
- 排查:画 action 序列图
- 修复:滑动窗口平均 · 改成 30 Hz 输出
Case 75:Pi-0 API 401/403
- 症状:调 Pi-0 API 报 auth 错
- 根因:API key 失效 / 超 quota
- 排查:看响应头
- 修复:换 key · 切本地 OpenVLA
8. 智能家居 (10)
Case 76:Home Assistant 启动报 invalid config
- 症状:HA 配置检查失败
- 根因:YAML 缩进错 / 字段名错
- 排查:用
yamllint跑一遍 - 修复:用集成 UI 添加设备
Case 77:Zigbee 设备掉线
- 症状:1 周后某传感器离网
- 根因:路由路径差 / 电池低
- 排查:HA 路由表
- 修复:加路由节点 · 换电池
Case 78:Matter 设备添加失败
- 症状:扫码配对一直超时
- 根因:WiFi 2.4G / 5G 分离
- 排查:手机连 2.4G
- 修复:合并 SSID · 改用 thread border router
Case 79:米家设备无响应
- 症状:HA 中 token expired
- 根因:MIoT 协议升级 / token 过期
- 排查:
xiaomi_miot集成日志 - 修复:重新 auth · 用 miio 替代
Case 80:LLM 控制 HA 报 “tool not found”
- 症状:Extended OpenAI Conversation 调不到 entity
- 根因:entity 没 expose
- 排查:HA 暴露列表
- 修复:白名单添加 · 改 entity_id
Case 81:Piper TTS 没声音
- 症状:HA 播报没声音
- 根因:音频输出错 / Piper 模型路径错
- 排查:
pulseaudio --check - 修复:选对 sink · 用 onnx 模型
Case 82:HomeKit 添加报”无法添加配件”
- 症状:扫 HomeKit 二维码失败
- 根因:HA 桥模式配置错
- 排查:HA → 设置 → HomeKit
- 修复:重启桥 · 用 IP 而非 Bonjour
Case 83:Z2M 转换器报 “device not supported”
- 症状:新 Zigbee 设备没 converter
- 根因:固件太新
- 排查:
zigbee2mqtt文档 - 修复:找外部 converter · 降固件
Case 84:本地 LLM 推理慢(2 tok/s)
- 症状:Qwen 14B 在树莓派跑 2 tok/s
- 根因:CPU 推理 / 模型太大
- 排查:
ollama ps - 修复:用 Llama 3.2 3B · 上 N100 mini PC
Case 85:HA 自动化不触发
- 症状:写好 automation 不跑
- 根因:trigger 类型错 / 时间窗不对
- 排查:
dev-tools → events - 修复:用 UI trace 看为什么没 trigger
9. 嵌入式 / 飞控 (8)
Case 86:Pixhawk 启动报 “PREARM: not healthy”
- 症状:解锁前预检失败
- 根因:IMU 校准未做 / GPS 没定位
- 排查:
mavlink inspector - 修复:
accelerometer calibration· 等 GPS lock
Case 87:PX4 起飞后漂
- 症状:解锁后直接横移
- 根因:磁力计未校准 / 机架类型错
- 排查:
mag_calibration - 修复:远离铁磁物 · 选对 frame
Case 88:ArduPilot 失控保护触发
- 症状:信号丢后 3 s 切 RTL
- 根因:RC 失联保护
- 排查:
RSSI值 - 修复:换图传 / 加 RC 备份
Case 89:飞控日志写满 SD 卡
- 症状:飞 1 小时后 SD 满
- 根因:日志频率太高
- 排查:
LOG_BACKEND_TYPE - 修复:改
BITMASK· 旧日志下载后清
Case 90:ESP32 看门狗复位
- 症状:固件跑 10 分钟后重启
- 根因:没喂狗 / 任务卡死
- 排查:
esp_task_wdt_reset() - 修复:加
vTaskDelay· 启 task watchdog
Case 91:STM32 CAN 接收 FIFO 满
- 症状:CAN 报文丢失
- 根因:中断处理太慢
- 排查:
CAN_IER标志 - 修复:用 DMA · 提优先级
Case 92:Jetson 突然关机
- 症状:跑深度学习 1 小时后断电
- 根因:过热 / 供电不足
- 排查:
tegrastats·dmesg | grep thermal - 修复:加风扇 · 65W 电源
Case 93:飞控报 “GYRO CAL FAIL”
- 症状:陀螺仪校准失败
- 根因:震动 / 静止不够
- 排查:云台晃
- 修复:把飞机放稳桌面 · 减震垫
10. 网络 / 远程 (7)
Case 94:Tailscale 节点间延迟 200 ms
- 症状:跨节点 ROS 2 巨慢
- 根因:用了 DERP 中继
- 排查:
tailscale status - 修复:用 P2P 直连 · 关闭 relay
Case 95:WebRTC 视频流卡顿
- 症状:浏览器看机器人画面 5 fps
- 根因:上行带宽不够
- 排查:
iperf3 -c server - 修复:降 1080p → 480p · H.265 编码
Case 96:SSH 频繁掉线
- 症状:30 分钟断 1 次
- 根因:
ClientAliveInterval默认 0 - 排查:
/etc/ssh/sshd_config - 修复:改
ClientAliveInterval 60·autossh
Case 97:MQTT broker 断连
- 症状:客户端频繁 reconnect
- 根因:心跳超时
- 排查:broker 日志
- 修复:调
keepalive到 60s · 改max_inflight_messages
Case 98:公网 ROS 2 通信被中间人攻击
- 症状:数据被截获 / 伪造
- 根因:UDP 明文
- 排查:
tcpdump - 修复:用 Zenoh + TLS · WireGuard 隧道
Case 99:MQTT QoS 2 反复重传
- 症状:消息一直 retry
- 根因:客户端没回 PUBREC
- 排查:broker 日志
- 修复:换 paho-mqtt · 检查 client loop
Case 100:Tailscale Funnel 拒绝连接
- 症状:公网 HTTPS 入站失败
- 根因:没启 Funnel
- 排查:
tailscale funnel status - 修复:先
tailscale serve内网,再开funnel
复现条件
| 类别 | 必备 |
|---|---|
| 工具 | dmesg · ros2 doctor · candump · htop · nvidia-smi · 串口工具 |
| 环境 | Linux (Ubuntu 22.04+) · ROS 2 Jazzy / Humble |
| 时间 | 1 h 通读 + 4 h 实战 = 1 天 |
| 难度 | ⭐⭐ 中 |
怎么贡献新 Case
发现新故障?用本站的项目 droidflight-author-guide skill 写到对应主题 doc 的末尾。症状 + 根因 + 排查 + 修复 四段式。
参考资料
- ROS 2 官方故障排查:https://docs.ros.org/en/jazzy/How-To-Guides/Installation-Troubleshooting.html
- NVIDIA Isaac Sim 已知问题:https://docs.omniverse.nvidia.com/isaacsim/latest/installation/known_issues.html
- Home Assistant 故障论坛:https://community.home-assistant.com/
- PX4 故障排查:https://docs.px4.io/main/en/debug/
- Franka 调试指南:https://frankaemika.github.io/docs/troubleshooting.html