Skip to content
 
📑标签
🏷小项目 🏷stm32 🏷light 🏷electronic

🗒初墨

🍊Hello,各位好,我是面包!

今天带大家围观我们的2024光电设计大赛创意组作品——一款能代替人类深入核电站高危区域的智能巡检机器人!从零到一的开发过程中,我们踩过坑、学到头秃,终于让这个铁疙瘩学会了自主避障、仪表识别、管道检测三大绝技!

一、整体方案:机器人界的“三头六臂”

我们的机器人就像个赛博格格巫,集成了多种黑科技:

  • 大脑:Jetson Nano(ROS1主控)
  • 眼睛:YOLOv8(管道检测) + 高清摄像头(仪表识别)
  • 触角:RPLIDAR A1激光雷达(360°障碍感知)
  • 双腿:STM32驱动的履带底盘(翻越15°斜坡无压力)

核心技能树:

  1. 多点巡航:基于ROS的全局路径规划(A*算法) + 动态避障(DWA算法)
  2. 管道检测:YOLOv8训练模型识别裂纹/腐蚀(自制核电站管道数据集)
  3. 仪表读数:OpenCV模板匹配 + 霍夫变换识别指针角度

二、Jetson Nano:ROS1的“扛把子”

jetson nano作为主控核心,承载ROS1系统的运行支持,负责综合处理STM32,激光雷达,高清摄像头的数据识别与事件策划。

1. 为什么选Jetson Nano?

  • 算力够顶:128核GPU跑YOLOv8s模型,FPS稳定在15~20(核电站场景够用)
  • 接口丰富:双USB3.0接摄像头,40Pin GPIO控制STM32
  • 功耗友好:10W功率,挂个充电宝都能跑2小时

2. ROS1实战踩坑记

  • 坑1:Ubuntu 18.04与Melodic的兼容性问题
    解法:手动编译安装缺失的依赖包(比如slam_gmapping)
  • 坑2:多节点通信延迟
    解法:用roslaunch优化节点启动顺序 + 提升STM32通信波特率(115200→921600)

3. 性能优化秘籍

  • SSD加速:把系统镜像烧录到SSD(读写速度提升5倍!)
  • Docker化部署:打包ROS环境,避免依赖冲突

三、STM32下位机:电机驱动的“灵魂舞者”

STM32驱动两个电机执行履带轮的转动任务,激光雷达通过不断高速旋转识别周围固定高度的障碍物,高清摄像头传回帧图像用于目标检测。

1. 电机控制三要素

  • PID调速:
    c
    // 速度环PID计算(目标转速 vs 编码器反馈)  
    int Velocity_PID(int target, int current) {  
        static float integral = 0;  
        float error = target - current;  
        integral += error * dt;  
        return Kp*error + Ki*integral + Kd*(error - last_error)/dt;  
    }
  • PWM波:TIM3通道1/2输出20kHz PWM,驱动TB6612电机芯片
  • 编码器反馈:STM32的TIM2/TIM5捕获AB相脉冲(4倍频模式)

2. 通信协议设计

  • 串口协议:自定义帧结构 [0xAA][数据长度][CMD][数据][CRC][0x55]
  • 心跳检测:Jetson每500ms发送心跳包,超时3次则STM32自动停车

四、激光雷达:360°无死角的“透视眼”

1. 硬件选型

  • RPLIDAR A1:性价比之王(¥599),扫描频率10Hz,探测半径12m
  • 安装玄学:水平安装高度30cm(刚好避开地面小障碍)

2. SLAM建图实战

  • 算法:Gmapping(栅格地图)+ AMCL定位
  • 建图效果:核电站模拟场地(20m×20m),误差<5cm

3. 避障策略

  • 动态窗口法(DWA):实时评估速度空间,选择最优路径
  • 安全距离:0.5m内紧急刹车,1m内减速绕行

五、高清摄像头:仪表盘识别的“火眼金睛”

1. YOLOv8管道检测

  • 数据集:自制1000张标注图(裂纹、腐蚀、渗漏三类)
  • 训练参数:
    yaml
    model: yolov8s.yaml  
    epochs: 100  
    imgsz: 640  
    augmentation: mosaic9 + mixup
  • 效果:[email protected]达92.3%,单帧推理耗时45ms

2. 仪表读数黑科技

  • 步骤拆解:
    1. ROI提取:用HSV颜色空间锁定仪表盘红色指针
    2. 模板匹配:预先存储0°~360°模板图,用cv2.matchTemplate找最佳匹配
    3. 角度计算:
\theta = \frac{\text{匹配位置偏移量}}{\text{模板总长}} \times 360°
  • 精度:±2°,够核电站老师傅点赞了!

七、项目成果:从实验室到领奖台

  • 巡检效率:20分钟完成1000㎡区域扫描(人类需2小时)
  • 识别准确率:管道异常98.5%,仪表读数99.2%
  • 大赛成绩:校赛二等奖、省赛一等奖、国赛二等奖
Playlist
Total 4
  • 星茶会
    灰澈
  • song1
    author1
  • soewrewfg1
    author1
  • PIKASONIC - Blossom
    author1