一、 引子:红绿灯手里,可没有无人车的遥控器!
在第一期特训中,我们的无人车已经学会了像人类一样“看手机地图导航”,不论马路怎么随机变化,它都能丝滑地跑完全程。
不过,真实的马路上不仅有目的地,更有交通规则。
每当顺着导航经过十字路口,只要红灯一亮,车子就会缓缓停下;绿灯一亮,又会自动起步。
孩子们,在这里有趣爸要考你一个非常好玩的生活技术问题:
“当红灯亮起时,是红绿灯长了一只无形的大手,强行按住了车轮子?还是红绿灯发出了无线电信号,把车子给逼停了?”
哈哈,当然都不是。红绿灯只是一个默默站在路边、不断变换颜色的“告示牌”。它根本不认识路上的车,手里更没有遥控器。
车子之所以会停,是因为司机叔叔长了眼睛,主动看到了红灯,然后自己踩下了刹车。
在工业级的自动驾驶中,这也是最核心的规则控制逻辑。今天,有趣爸就带大家引入自动驾驶的第二步——看我们如何用巧妙的“中点部署”和“隐形摄像头探针”,让无人车学会自己在规则面前礼让、踩刹车!
二、 角色大点兵:老朋友升级与新朋友加入
为了让无人车学会过马路,我们需要对上一课的代码进行升级,并邀请几位极具智慧的新朋友加入我们的系统。
请大家准备好手里的程序,对照着有趣爸的讲解一起来看:
1. 【地图节点】 ── 默默铺路并拉响“施工警报” (老朋友升级)
我们的老朋友地图节点依然负责在绿旗按下时,随机在舞台上钉下 6 个波浪起伏的图钉。
【💡 有趣爸配图指引】
2. 【红绿灯标记 1 & 2】 ── 聪明的“马路中点测绘员” (新朋友加入)
红绿灯应该安在什么地方最合适?当然是两个导航点正中间的十字路口。但我们的路口每次都是随机长出来的,红绿灯怎么找位置?别慌,我们派出了两个隐形的测绘员:
红绿灯标记 2(先遣兵): 负责带头冲锋。每当收到布灯指令,它的红绿灯编号马上加 1,并立刻广播呼叫 下一个 地图节点,瞬间移动到下一个路口的坐标上。
红绿灯标记 1(几何数学测绘): 它是真正的数学学霸。它先飞到上一个路口,面向 红绿灯标记2(下一个路口)。然后,它用尺子量出两个路口之间的总距离,大步流星地只向前走了一半的距离(移动到 [红绿灯标记2] 的距离 / 2 步)!
原地克隆红绿灯: 刚一站稳,它就在这个两点正中心的坐标上,原地 克隆 [红绿灯]!
到站收敛控制: 当它发现 红绿灯编号 < 6 不再成立时(说明路口安完了),就会停止广播,优雅退出。这种“到站收敛”的边界控制,能保证程序永远不会无限死循环报错。
3. 【红绿灯】 ── 随机变换数秒的“路边告示牌” (新朋友加入)
被测绘员克隆出来的红绿灯非常单纯,它刚一出生,就根据公共账本上的 红绿灯x 和 红绿灯y 移到正确的位置。
4. 【探针】 ── 无人车头顶的“高清摄像头” (新朋友加入)
车子在开的时候,车身本身是无法提前感知颜色的。如果等车头贴到红绿灯再刹车,早就追尾了!现在的无人驾驶车(比如特斯拉或者国内的无人车),车顶和车头都装有高清摄像头,专门用来“视觉识别”前方的红绿灯。 在程序里,我们手搓的这个 探针 角色,就是无人车的摄像头,注意在造型设计我们要特意把探针的长度比汽车要上一部分,用于侦测:
5. 【自动汽车】 ── 优雅等灯、以静制动的“老司机” (老朋友升级)
最后,我们来看看主角自动汽车。在上一课“跟着导航走”的运动循环里,我们为它加入了一套极其绝妙的“条件挂起”机制:
控制代码逻辑: 小车面向地图标记每向前移动 1 步,就会顺便瞅一眼公共记事本。
以静制动: 如果判定 当前红绿灯颜色 = 绿 不成立(也就是红灯亮了),它不会手忙脚乱地退出程序,而是调用了一个高妙的 等待直到 <当前红绿灯颜色 = 绿> 积木。车辆会在原地默默“定身”(挂起当前运动线程)。直到头顶的摄像头探针报告绿灯亮了,它才会解开定身咒,继续朝着目标点前开进。当一站到达后,再向前多开 5 步优雅进站。
沉着冷静的探针侦测零失误零扣分!
三、 思维升华:算法无处不在,这就是“生活传感器”
今天这节课,有趣爸最开心的不是带大家写出了能过马路的小车,而是和孩子们一起拆解了藏在科技背后的生活算法。
很多爸爸妈妈总觉得“自动驾驶、图像识别”离孩子们太遥远。其实,今天我们给小车做的这套“探针颜色侦测法”,就是孩子们每天都在经历的生活传感器过滤本能。
你在写作业的时候,耳朵其实在同时接收客厅的电视声、窗外的汽车声、厨房的炒菜声。但为什么你不会跟着电视声去跳舞?因为你的大脑开启了“传感器过滤”,你的大脑主线程死死盯在作业本上,自动过滤了杂音。
今天小车的探针也是一样。舞台上有蓝色的节点、绿色的标记、红色的灯。小车的运动主线程只盯着地图标记看(导航跟随),而它的摄像头探针则自动过滤掉无用的背景杂色,只在碰到红色和绿色时才写入公共账本,控制大脑的刹车或油门。
最厉害的算法,从来不是冷冰冰的英文字母,而是我们人类把“观察世界、寻找规律、做出反应”的生活习惯,用积木翻译给了计算机听。
四、 结尾与下期预告
第二期特训,我们的无人车不仅能在随机地图里丝滑认路,还拥有了属于自己的摄像头,学会了在红绿灯面前克制地礼让。
但是,马路上的危险可不止有固定的红绿灯。如果走着走着,突然有一个乱穿马路的动态行人,或者一辆违停的故障车辆横在大马路中间,我们这个只会死板等灯的无人车,又该如何实现紧急避险和动态绕行?
下一期,有趣爸带大家进入自动驾驶特训营的终极篇——防追尾神器:手搓激光雷达与动态障碍物避险控制!
欢迎爸爸妈妈带孩子在评论区聊聊:你在马路上,还看到了哪些有趣的自动驾驶“生活算法”?
趣爸编程网dadcoming.com使命:孩子有趣爸
专注领域:兴趣与编程
工作联络:roomhj(微信)
点击“阅读原文”进入趣爸编程网!