AGV循迹不用激光雷达,几毛钱的红外传感器就够
工业AGV一般用磁条或者激光SLAM导航,但做一台自己玩的循迹小车,不用搞得那么复杂。红外避障传感器(也可以叫红外循迹传感器)是最简单的方案之一——红外发射管往前打光,遇到黑线反射弱、遇到白底反射强,接收管根据反射强度输出高低电平。一颗传感器一块钱不到,五颗一组就能做出五路循迹。

五路传感器的布局一般是:中间一路对准黑线,左右各两路对称分布。中间检测到黑线说明车在正轨上;左边检测到说明车头偏右了,需要左转修正;右边检测到则反之。五路的好处是不仅能判断左右偏移方向,还能大致判断偏移幅度——偏得越多,离中心越远的外侧传感器会触发。

接线与供电
每颗红外传感器有三根线:VCC(3.3V或5V)、GND、OUT(数字输出)。OUT接到ESP32的任意GPIO就行,比如GPIO 25-29五个连续引脚方便管理。供电方面,五颗红外传感器功耗不大,ESP32的3.3V引脚就够。但如果你的车还带了电机驱动和舵机,记得电机电源和控制板电源要共地。
传感器的灵敏度可以通过模块上的电位器调节。把小车放在实际赛道上,用螺丝刀慢慢调,直到白底时OUT输出高电平、黑线时输出低电平。五颗传感器每颗都要单独调,因为每颗的红外发射强度会有个体差异。
PID调速让循迹更丝滑
最简单的循迹逻辑是Bang-Bang控制:左边偏了就左转,右边偏了就右转。这样小车走起来会一抖一抖的,像在画Z字。想要丝滑一点,得上PID。思路是把传感器读数转成"偏差值"——比如五路传感器权重设为-2、-1、0、1、2,只有中间传感器触发时偏差为0,左偏为负、右偏为正。
PID的输入就是这个偏差值,输出是左右电机的速度差。P(比例)决定转向力度,I(积分)消除稳态误差,D(微分)抑制震荡。调参时先只加P,让车能循迹但会蛇行;再加D抑制蛇行;I一般可以不加或者给很小的值。具体参数需要根据你的电机转速、车轮大小、传感器间距来调,没有万能值。
实际效果与局限性
红外循迹在室内平整地面上效果很好,速度可以跑到每秒一米以上不脱线。但它有几个明显局限:第一,室外强光下红外接收管会被环境光干扰,需要加遮光罩或者换成调制红外方案。第二,黑色胶带如果褪色或者地面反光,检测会不稳定。第三,急弯(比如90度直角)可能来不及反应。
对于入门级机器人项目和教学场景,红外循迹是性价比最高的方案。成本低、原理简单、代码好写,非常适合拿来做PID控制的入门实验。等玩熟了再升级到摄像头循迹或者激光SLAM也不迟。




室外强光下红外确实容易挂,我之前做的项目加了遮光罩才好一些
建议调灵敏度的时候每颗单独调,确实有个体差异,之前偷懒一起调结果两路线飘
五路传感器的权重设置-2到2这个思路不错,比我自己写的逻辑简单
PID调参那段写得很清楚,之前用Bang-Bang控制车走起来抖得不行,换PID之后丝滑多了