26浏览
查看: 26|回复: 0

二哈2——“如影随形”PI视觉跟随履带车

[复制链接]
本帖最后由 云天 于 2025-10-8 17:22 编辑

【项目简介】
       本项目基于 Arduino UNO + L298N 双路电机驱动板,搭配 DFRobot HuskyLens 2 AI 视觉传感器,实现“看得见”的履带小车。通过 HuskyLens2 内置的“人体姿态识别”算法,实时获取人物在画面中的中心坐标 (X, Y) 以及人体框高/宽。整套控制系统采用 PI 算法:  
       1. 水平方向以画面中心 X=320 为基准,计算误差后输出差速 PWM,使车头始终“盯人”;  
       2. 深度方向以人体框高、宽作为“距离”参考,当目标小于安全阈值时,主动前进;大于阈值时,原地待命。  
       整个开发过程在 Mind+ 图形化环境中完成,分三阶段递进调试,既适合新手理解 PID 思想,又能直接落地为“如影随形”的跟随小车。
二哈2——“如影随形”PI视觉跟随履带车图6
【硬件清单】  
1. Arduino UNO R3 ×1 +IO扩展板
2. L298N 双路电机驱动板 ×1  
3. 履带小车底盘(带 2×TT 电机) ×1  
4. HuskyLens 2 人工智能摄像头 ×1  
5. 7.4 V 2200 mAh 锂电池组 ×2  (分别给L289N和Arduino供电)
7. 杜邦线、螺丝、魔术扎带若干  

【硬件连线】  
- 电机接口:左电机 → L298N OUT1/OUT2;右电机 → OUT3/OUT4。  
- 电源接口:电池+ → L298N +12 V;电池– → L298N GND;并与Arduino共地。
- 信号接口:  
  – HuskyLens SDA → A4,SCL → A5(I²C 通信)  
  – L298N 输入端:IN1~IN4 分别接 D7、D8、D9、D10(Mind+ 图形块默认引脚)。  
  – PWM 调速:ENA→D5,ENB→D3(支持 0~255 级调速)。  
二哈2——“如影随形”PI视觉跟随履带车图7

【软件环境】
Mind+ v2.0版本,主控选择“Arduino UNO”,扩展库加载“HuskyLens2”。图形块可转 Arduino C,方便后续迁移到 VSCode/PlatformIO。  
二哈2——“如影随形”PI视觉跟随履带车图1

二哈2——“如影随形”PI视觉跟随履带车图8
【算法拆解】  
1. 误差定义  
   error = X_center – 320  
   取值范围:[0, 640]  

2. 比例项 P  
   Kp = 250 / 320 ≈ 0.78  
   Vp_turn = Kp × error  
   直接决定小车的“瞬时”转向力度。  

3. 积分项 I  
   integral = integral + error × dt (dt 在 Mind+ 主循环里近似为 20 ms)  
   Ki 取 0.0002  (根据个人小车实际情况进行调整)
   Vi_turn = Ki × integral  
   作用:消除“差一点就正”的稳定误差,防止小车在目标前方左右摇摆。  

4. 抗积分饱和  
   当 |integral| > 5000 时强制归零,避免电池低压或人为抱起小车时积分暴走。  

5. 深度方向策略  
   当人体框高度 > 400 像素 或 宽度 > 300 像素,判定“过近”,原地待命;  仅执行转向,不前进。
   否则,判定“过远”,直线前进;  


【三阶段调试日志】  
阶段一:三段区间  控制  
- 代码:if(X<280) 左转; if(X>360) 右转; 否则刹车。  
- 现象:小车像“磕头机”,左右猛拐,无法静止。  
二哈2——“如影随形”PI视觉跟随履带车图2

阶段二:纯比例 P  
- 现象:振荡幅度明显减小,但车头有可能始终偏离目标 10~15°,存在稳态误差。  
二哈2——“如影随形”PI视觉跟随履带车图3

阶段三:PI 合击
- 加入积分项后,稳态误差在 3 s 内收敛到 ±2°,即使地面摩擦力不均也能保持“盯人”。
二哈2——“如影随形”PI视觉跟随履带车图4

- 深度方向策略叠加后,小车在 1.5~3 m 范围内自动保持“社交距离”,人物后退它跟随,人物靠近它停止。  
二哈2——“如影随形”PI视觉跟随履带车图5


【关键参数整定表】  
Kp = 0.78,Ki = 0.0002,采样周期 T ≈ 20 ms,积分限幅 ±5000,PWM 基速 30/255。  

【常见问题 FAQ】  
Q1. 电池电压掉到 6 V 以下,小车无力?  
A:L298N 的 5 V 逻辑端会随电池下降而降低,导致 HuskyLens 重启。务必给 Arduino UNO(HuskyLens2耗电)单独供电。  

【成果展示】  
  
【结语】  
       通过“三段区间→P→PI”的递进调试,我们不仅得到了一辆会“咬人”的小履带车,更在 Mind+ 的可视化环境里把抽象的 PID 公式变成了肉眼可见的曲线。希望这篇文章能为正在做视觉跟随的同学提供一条“不踩坑”的捷径,也欢迎你把改进后的代码回传到社区,一起让小车“跟”得更稳、“跟”得更远!

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4 备案 沪公网安备31011502402448

© 2013-2025 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail