1. 项目概述与核心挑战
列车走行部作为轨道车辆的核心承重部件,其故障诊断一直是铁路运维领域的重点难点。传统人工巡检存在效率低、风险高、主观性强等问题。我们尝试用四足机器人搭载视觉和超声波传感器,结合深度学习技术构建自动化诊断系统。这个课程设计项目涉及机械、电子、算法多个学科交叉,对本科生确实具有挑战性。
主要技术路线分为四个阶段:首先需要理解走行部典型故障特征(如齿轮箱裂纹、轴承磨损、轮对擦伤等);其次建立多传感器数据采集方案;然后开发基于深度学习的故障识别模型;最后将模型部署到机器人嵌入式平台。每个环节都需要解决特定问题:
- 传感器选型:需要平衡检测精度与机器人负载能力
- 数据采集:铁路现场环境复杂(光照变化、金属反光、振动噪声)
- 模型设计:要兼顾轻量化与准确性
- 边缘计算:嵌入式平台算力有限
2. 走行部故障特征分析
2.1 典型故障类型与表现
列车走行部主要包含轮对、轴箱、齿轮箱、悬挂装置等部件,常见故障有:
-
表面缺陷类(视觉检测):
- 轮对踏面擦伤(鱼鳞状纹理)
- 齿轮齿面剥落(局部凹坑)
- 轴承外圈裂纹(线性纹路)
-
内部损伤类(超声波检测):
- 轴承滚子疲劳(超声回波衰减变化)
- 齿轮内部气孔(声阻抗异常)
- 车轴内部裂纹(超声波衍射)
2.2 多模态特征关联
通过实验发现不同故障在视觉和超声波数据中存在关联特征:
| 故障类型 | 视觉特征 | 超声特征(中心频率200kHz) |
|---|---|---|
| 轮对擦伤 | 轴向条纹,宽度>2mm | 表面波传播速度下降8-12% |
| 轴承外圈裂纹 | 45°斜向线性缺陷 | 回波幅值突增15dB以上 |
| 齿轮断齿 | 齿顶缺失 | 啮合频率谐波分量异常 |
实操提示:建议先用实验室模拟故障件采集基准数据,建立特征对照表
3. 硬件系统搭建
3.1 四足机器人改装方案
选用Unitree Go1作为移动平台,需进行以下改装:
-
传感器加装:
- 工业相机(200万像素,全局快门,帧率≥30fps)
- 超声探头(200kHz,防水型,探测深度≥50mm)
- IMU(补偿机器人运动抖动)
-
计算单元:
- 主控:NVIDIA Jetson Xavier NX
- 扩展接口:USB3.0×4(接传感器)
- 电源:加装20000mAh电池组
-
机械适配:
- 云台支架(俯仰±90°调节)
- 防震结构(硅胶减震垫)
- 磁吸式底盘(钢轨吸附力≥50N)
3.2 数据采集规范
现场采集需注意:
-
光照条件:
- 补光灯亮度1500-2000lux
- 避免直射金属表面
-
检测距离:
- 相机距被测面30-50cm
- 超声探头距表面5-10mm(需保持耦合)
-
运动控制:
- 机器人步速≤0.3m/s
- 云台扫描间隔≤15°
4. 深度学习模型开发
4.1 多模态数据融合架构
采用双分支特征提取+注意力融合的方案:
python复制class MultiModalNet(nn.Module):
def __init__(self):
super().__init__()
# 视觉分支
self.vis_conv = ResNet18(pretrained=True)
# 超声分支
self.us_conv = nn.Sequential(
nn.Conv1d(1, 16, 5),
nn.MaxPool1d(4),
nn.Conv1d(16, 32, 3))
# 特征融合
self.fusion = CrossModalAttention(embed_dim=256)
def forward(self, img, us):
vis_feat = self.vis_conv(img) # [B,512,7,7]
us_feat = self.us_conv(us) # [B,32,125]
fused = self.fusion(vis_feat, us_feat)
return fused
4.2 模型优化关键点
-
数据增强策略:
- 视觉:随机遮挡、金属反光模拟
- 超声:添加高斯噪声(SNR=10-20dB)
- 同步增强:模拟机器人振动模糊
-
损失函数设计:
python复制
loss = α*FocalLoss + β*MMD_loss + γ*TripletLoss- α=0.6(处理类别不平衡)
- β=0.3(模态对齐)
- γ=0.1(特征判别性)
-
轻量化技巧:
- 知识蒸馏(教师模型ResNet50)
- 通道剪枝(移除<5%重要度的通道)
- 量化部署(FP16精度)
5. 嵌入式部署实战
5.1 模型转换流程
-
PyTorch → ONNX:
bash复制torch.onnx.export(model, (dummy_img, dummy_us), "model.onnx", opset_version=11) -
ONNX → TensorRT:
bash复制
trtexec --onnx=model.onnx \ --saveEngine=model.plan \ --fp16 \ --workspace=2048
5.2 实时推理优化
-
内存管理:
- 使用CUDA pinned memory
- 预分配推理缓冲区
-
流水线设计:
c复制while(1){ // 并行执行 cudaMemcpyAsync(..); inference_async(..); postprocess(..); cudaStreamSynchronize(..); } -
性能实测(Jetson NX):
模型版本 推理时延 内存占用 FP32原始 210ms 1.8GB FP16优化 89ms 1.2GB INT8量化 53ms 0.9GB
6. 现场调试经验
6.1 典型问题排查
-
超声信号不稳定:
- 现象:回波幅值波动>20%
- 解决:添加耦合剂自动涂抹装置
- 参数:甘油含水量≤5%
-
误识别问题:
- 场景:金属反光导致假阳性
- 改进:增加偏振滤光片
- 效果:误报率下降37%
-
通信延迟:
- 表现:控制指令响应>500ms
- 优化:改用RT-Preempt内核
- 结果:延迟降至120ms
6.2 可靠性提升技巧
-
冗余检测:
- 同一部位三次扫描取众数
- 设置置信度阈值(>0.85)
-
异常处理:
python复制def safe_inference(img, us): try: if img.mean() < 10: # 检测图像是否过暗 raise IlluminationError return model(img, us) except Exception as e: robot.reposition() log_error(e) -
自检机制:
- 开机时运行诊断测试
- 每30分钟校验传感器精度
这个项目最关键的突破点在于多模态数据的时空对齐——需要精确匹配视觉帧和超声信号的采集时刻。我们最终采用硬件触发同步方案,通过FPGA产生精确到10μs的同步脉冲。在实际测试中,该方案将特征匹配准确率提升了28%。