当前位置:首页>自动驾驶>scratch自动驾驶02 | 遇到红绿灯,无人车是怎么自己踩刹车的?

scratch自动驾驶02 | 遇到红绿灯,无人车是怎么自己踩刹车的?

  • 2026-07-29 06:03:24
scratch自动驾驶02 | 遇到红绿灯,无人车是怎么自己踩刹车的?

一、 引子:红绿灯手里,可没有无人车的遥控器!

在第一期特训中,我们的无人车已经学会了像人类一样“看手机地图导航”,不论马路怎么随机变化,它都能丝滑地跑完全程。

不过,真实的马路上不仅有目的地,更有交通规则。

每当顺着导航经过十字路口,只要红灯一亮,车子就会缓缓停下;绿灯一亮,又会自动起步。

孩子们,在这里有趣爸要考你一个非常好玩的生活技术问题:

“当红灯亮起时,是红绿灯长了一只无形的大手,强行按住了车轮子?还是红绿灯发出了无线电信号,把车子给逼停了?”

哈哈,当然都不是。红绿灯只是一个默默站在路边、不断变换颜色的“告示牌”。它根本不认识路上的车,手里更没有遥控器。

车子之所以会停,是因为司机叔叔长了眼睛,主动看到了红灯,然后自己踩下了刹车。

在工业级的自动驾驶中,这也是最核心的规则控制逻辑。今天,有趣爸就带大家引入自动驾驶的第二步——看我们如何用巧妙的“中点部署”和“隐形摄像头探针”,让无人车学会自己在规则面前礼让、踩刹车!

二、 角色大点兵:老朋友升级与新朋友加入

为了让无人车学会过马路,我们需要对上一课的代码进行升级,并邀请几位极具智慧的新朋友加入我们的系统。

请大家准备好手里的程序,对照着有趣爸的讲解一起来看:

1. 【地图节点】 ── 默默铺路并拉响“施工警报” (老朋友升级)

我们的老朋友地图节点依然负责在绿旗按下时,随机在舞台上钉下 6 个波浪起伏的图钉。

  • 最新代码变化: 当它的自定义积木 设定地图 彻底执行完、6个克隆体铺设完毕的一瞬间,它要在最下面大喊一声:广播 [布置红绿灯] 并等待。这就等于拉响了施工警报,通知红绿灯测绘员:“马路已经修好了,你们可以入场安路灯了!”

【💡 有趣爸配图指引】

2. 【红绿灯标记 1 & 2】 ── 聪明的“马路中点测绘员” (新朋友加入)

红绿灯应该安在什么地方最合适?当然是两个导航点正中间的十字路口。但我们的路口每次都是随机长出来的,红绿灯怎么找位置?别慌,我们派出了两个隐形的测绘员:

  • 红绿灯标记 2(先遣兵): 负责带头冲锋。每当收到布灯指令,它的红绿灯编号马上加 1,并立刻广播呼叫 下一个 地图节点,瞬间移动到下一个路口的坐标上。

  • 红绿灯标记 1(几何数学测绘): 它是真正的数学学霸。它先飞到上一个路口,面向 红绿灯标记2(下一个路口)。然后,它用尺子量出两个路口之间的总距离,大步流星地只向前走了一半的距离(移动到 [红绿灯标记2] 的距离 / 2 步)!

  • 原地克隆红绿灯: 刚一站稳,它就在这个两点正中心的坐标上,原地 克隆 [红绿灯]!

  • 到站收敛控制: 当它发现 红绿灯编号 < 6 不再成立时(说明路口安完了),就会停止广播,优雅退出。这种“到站收敛”的边界控制,能保证程序永远不会无限死循环报错。

3. 【红绿灯】 ── 随机变换数秒的“路边告示牌” (新朋友加入)

被测绘员克隆出来的红绿灯非常单纯,它刚一出生,就根据公共账本上的 红绿灯x 和 红绿灯y 移到正确的位置。

  • 控制代码逻辑: 它在舞台上默默地执行自己的 重复执行 循环。绿灯亮起,等待 2-5 秒的随机时间,然后换成红灯造型,再等待 2-5 秒,如此循环。它不需要管车在哪,它只做最好的自己。

红绿灯在2个节点中间红绿闪烁效果

4. 【探针】 ── 无人车头顶的“高清摄像头” (新朋友加入)

车子在开的时候,车身本身是无法提前感知颜色的。如果等车头贴到红绿灯再刹车,早就追尾了!现在的无人驾驶车(比如特斯拉或者国内的无人车),车顶和车头都装有高清摄像头,专门用来“视觉识别”前方的红绿灯。 在程序里,我们手搓的这个 探针 角色,就是无人车的摄像头,注意在造型设计我们要特意把探针的长度比汽车要上一部分,用于侦测:

  • 视觉跟随: 它在后台 重复执行:移到 [自动汽车] 并 面向 [自动汽车] 的方向。它像一双长焦眼睛,永远伸在汽车前方探路。

  • 状态改写: 只要它碰到颜色 [红](红灯造型),就在公共记事本(全局变量) 当前红绿灯颜色 上写下“红”;一旦碰到颜色 [绿](绿灯造型),就写下“绿”。

5. 【自动汽车】 ── 优雅等灯、以静制动的“老司机” (老朋友升级)

最后,我们来看看主角自动汽车。在上一课“跟着导航走”的运动循环里,我们为它加入了一套极其绝妙的“条件挂起”机制:

  • 控制代码逻辑: 小车面向地图标记每向前移动 1 步,就会顺便瞅一眼公共记事本。

  • 以静制动: 如果判定 当前红绿灯颜色 = 绿 不成立(也就是红灯亮了),它不会手忙脚乱地退出程序,而是调用了一个高妙的 等待直到 <当前红绿灯颜色 = 绿> 积木。车辆会在原地默默“定身”(挂起当前运动线程)。直到头顶的摄像头探针报告绿灯亮了,它才会解开定身咒,继续朝着目标点前开进。当一站到达后,再向前多开 5 步优雅进站。

5. 【自动汽车】 老司机面对红绿灯的表现如何?

沉着冷静的探针侦测零失误零扣分!

三、 思维升华:算法无处不在,这就是“生活传感器”

今天这节课,有趣爸最开心的不是带大家写出了能过马路的小车,而是和孩子们一起拆解了藏在科技背后的生活算法。

很多爸爸妈妈总觉得“自动驾驶、图像识别”离孩子们太遥远。其实,今天我们给小车做的这套“探针颜色侦测法”,就是孩子们每天都在经历的生活传感器过滤本能。

  • 你在写作业的时候,耳朵其实在同时接收客厅的电视声、窗外的汽车声、厨房的炒菜声。但为什么你不会跟着电视声去跳舞?因为你的大脑开启了“传感器过滤”,你的大脑主线程死死盯在作业本上,自动过滤了杂音。

  • 今天小车的探针也是一样。舞台上有蓝色的节点、绿色的标记、红色的灯。小车的运动主线程只盯着地图标记看(导航跟随),而它的摄像头探针则自动过滤掉无用的背景杂色,只在碰到红色和绿色时才写入公共账本,控制大脑的刹车或油门。

最厉害的算法,从来不是冷冰冰的英文字母,而是我们人类把“观察世界、寻找规律、做出反应”的生活习惯,用积木翻译给了计算机听。

四、 结尾与下期预告

第二期特训,我们的无人车不仅能在随机地图里丝滑认路,还拥有了属于自己的摄像头,学会了在红绿灯面前克制地礼让。

但是,马路上的危险可不止有固定的红绿灯。如果走着走着,突然有一个乱穿马路的动态行人,或者一辆违停的故障车辆横在大马路中间,我们这个只会死板等灯的无人车,又该如何实现紧急避险和动态绕行?

下一期,有趣爸带大家进入自动驾驶特训营的终极篇——防追尾神器:手搓激光雷达与动态障碍物避险控制!

欢迎爸爸妈妈带孩子在评论区聊聊:你在马路上,还看到了哪些有趣的自动驾驶“生活算法”?

    趣爸编程网dadcoming.com

    使命:孩子有趣爸

    专注领域:兴趣与编程

    工作联络:roomhj(微信)

    点击“阅读原文”进入趣爸编程网!

    最新文章

    随机文章