sheen.bot 标志

深度见解

循线机器人:物理原理与代码

2025年9月17日·Sheen Robotics
循线机器人:物理原理与代码

循线机器人读取反射回来的光,把它判定成压线还是偏离,再用一个控制回路来转向。本文讲清其中的物理原理、代码,以及为什么调参才是真正的功课。

循线机器人的工作方式,是读取脚下地面反射回来的光有多少,判断每个传感器压的是深色线还是浅色地面,再不断转向、把线保持在正中。物理原理是反射率。代码是一个每秒运行几百次的小控制回路。两头都做对,机器人能贴着急弯跑;调参调歪了,它就会左右摇摆着撞上桌子腿。本文讲清它是怎么工作的、两种常见的转向方法,以及为什么调参才是真正教会工程的那部分。

传感器怎么读到那条线

核心部件是红外反射传感器。它把一枚很小的红外 LED 和一只光敏三极管配成一对,由后者测量有多少光被反射回来。深色线吸收掉大部分红外光,返回的就很少;浅色地面把大部分反射回去,返回的就很多。传感器装在离地几毫米的位置,输出一个模拟量,通常由模数转换器(ADC)读成一个数值。

多数入门机器人会并排装两个或更多这样的传感器,跨在线的两侧。线偏到左侧传感器下面时,左边的读数会下降;偏到右边时,右边的读数下降。转向的全部依据就是这个差值。这里有两条实打实的经验:传感器离地高度会改变读数,而且环境光会漏进来。在教室灯光下调好的机器人,挪到有阳光的窗边可能就是另一副脾气——所以接下来要讲标定。

把读数变成判断

原始的 ADC 数值本身没什么用,因为它会随地面、光照,甚至随电池电量下降而漂移。办法是设阈值。让传感器慢慢扫过线和地面这两种表面,记下最低和最高读数,把阈值定在中点。低于阈值算压在线上,高于阈值算在地面上——具体哪头对哪头,取决于你的接线。

这一步标定不是可选项。每换一个地方,都要在真正要跑的赛道上、在真正的房间里重做一遍。浅色地面上贴哑光黑电工胶带,对比度很干净;亮面胶带或深色瓷砖地面,对比度就很弱。花十分钟标定,能省下后面一小时莫名其妙的排错。

两种转向方式:bang-bang 与比例控制

最简单的控制是 bang-bang,也叫开关控制。逻辑是这样:左边传感器看到线就往左转,右边传感器看到线就往右转,否则直行。写起来容易,理解起来也容易,但它的转向是一下一下地猛拽。机器人在直线上会走出锯齿形,遇到弯道只能爬着走,因为它只知道“在”或“不在”,永远不知道偏了多少。

比例控制解决了这个问题:它用模拟读数,而不是一个是非判断。你算出一个误差,比如 error = left - right,再让转向力度随它成比例变化:turn = Kp * error。误差小,修正就轻;误差大,修正就重。Kp 这一个数字,也就是比例增益,决定了机器人反应有多激进。这是学生第一次真正尝到控制理论的味道,而且光靠它就足以让机器人顺滑地绕完一圈 bang-bang 只会磕磕绊绊跑过的赛道。等比例控制用踏实了,再加上 I 项和 D 项凑成完整的 PID 回路,是水到渠成的下一步。

调参才是真正的功课

上面的代码很短。几乎全部的学习都发生在调参里,而这是优点,不是苦差。调参是学生遇上工程方法的地方:改一个变量,测试,观察,重复。按这个顺序走:

  • 动手改任何东西之前,先在真实赛道、真实灯光下标定。
  • 把基础速度设得足够慢,让你能看清机器人,也能一把抓住它。
  • Kp 先取小值,再往上加,直到机器人能跟住线而不是跑偏。
  • 如果它开始来回振荡、左右摆动,就把 Kp 稍微调小一点,或者降低基础速度。
  • 在赛道上最急的那个弯上测,别在好走的直道上测。直道会骗你。

做记录,一次只改一件事。一个把“增益调高会让机器人蛇行”写下来的学生,比一个瞎调数字直到碰巧跑通的学生学到的多得多。

常见故障与排查办法

循线机器人的问题大多逃不出几种套路。动手重写代码之前,先把症状和可能的原因对上号:

  • 机器人完全无视那条线:阈值设错了,传感器装得太高,或者电池电量低到让 LED 发光变弱。
  • 剧烈地来回蛇行:Kp 或基础速度太高。一次只降一个。
  • 过急弯时飞出去:速度太快,或者两个传感器挨得太近,来不及提前察觉转弯。
  • 直道上往一边偏:两个电机没有完全匹配。给其中一边加一个固定的小修正量。
  • 上午好好的,午饭后就不行了:阳光改变了读数。按新的光照条件重新标定。
  • 每个传感器读数都差不多:检查接线和引脚编号,并确认胶带是哑光的、不是亮面的。

在教室里试一试

循线是最好的机器人入门项目之一,因为感知、判断、执行这一整个回路,在地板上跑一趟就全看见了。基于sheenbot∞ 主控板的小车方案,把学生需要的反射传感器和电机控制都放在一块板上,整套器材可以在商店买到。如果你更希望有人来教,开普敦的学院开设每周常规课和假期工作坊,循线是常做的项目之一。

要点

反射式感知告诉机器人线在哪里,阈值判定把它变成一个明确的决定,比例控制再把这个决定变成平顺的转向。代码短是刻意为之。真正的本事,是那种耐着性子、一次只改一处的调参,它能把一台晃晃悠悠的机器人调到咬住弯道;而这份本事几乎能带到其他任何项目上。想看更多制作记录,请看sheen的新闻中心

常见问题

循线机器人需要几个传感器?

两个就够转向了,因为转向只需要知道线是偏左了还是偏右了。加更多传感器——五个很常见——能让机器人更精确地判断偏了多远,也能应付更急的弯,比例控制会因此更平顺。

为什么我的机器人在这个房间能循线,换个房间就不行?

环境光和地面颜色会改变红外光反射回来的多少,所以在一个房间标定出来的阈值,到另一个房间就是错的。每次挪动机器人,都要在新的表面上、新的光照下重新标定。

比例控制和 PID 是一回事吗?

比例是 PID 里的 P,是第一项也是最重要的一项。PID 还加了积分项来消除稳态漂移,加了微分项来抑制过冲。多数青少年项目光靠比例控制就跑得不错,之后再把另外两项作为升级加上去。

#机器人技术#循线#传感器#编程#项目实践

更多深度见解