用scratch来做自动驾驶

大家都在谈论人工智能,我们就用scratch来实现人工智能中较热门的自动驾驶吧!

一、简单的在公路内移动。

file

如上图,小车在白色的公路上自动行驶,碰到绿地会旋转方向。

file

这是全部的程序,是不是比预期中简单太多。

小车每次移动10步,当碰到绿颜色,先后退10步,再左转然后前进;如果依然碰到绿颜色,仍然先后退,接着右转然后前进。如此循环,保障小车始终在白色区域前进。

二、用传感器避障。

file

如上图,小车在类似的地图上行驶,它是怎么自动驾驶的呢?

file

小车的程序很简单,它在移到的过程中不断发送广播,同时不停的接收广播来调整方向。

广播是角色之间用来传递信息用的。还有两个隐藏的角色,分别位于小车的左前方和右前方,它们同时接收小车发送的广播调整左右眼,分别发送广播给小车。

file

上图是左侧传感器的程序,右侧传感器程序和它类似。

三、左手规则自动驾驶。

上面两种自动驾驶的方法对地图的要求比较高,稍微复杂或有难度的地图就无法实现了。怎么办呢?当然是换方法了!

file

如上图是一个蜂巢迷宫,如何让小车从入口自动驾驶到出口呢?

效果如上视频,我们使用左手法则,小车从入口进入后,一直沿着迷宫的左侧行驶,直至走到出口。

那么怎么实现这个功能呢?首先我们判断左边是否有墙。

file

具体程序如上图,如果左边有墙,我们就沿着墙走,否则就走到墙边。

file

走到墙边的程序如上图。走到墙边后,沿着墙走就可以了。如果前方有墙怎么办呢?

file

上图是前方有墙的程序。如果前方有墙,我们就往右旋转。

file

最后一段是沿着墙走的程序。大家可以尝试自己做个类似的游戏。

自动驾驶的时候,会出现多种路线,比如上文的蜂巢迷宫,如何选择最短路线,让自动驾驶的功能更进一步呢?

黔西南 触摸未来
我们正身处一个只要愿意思考,就能改变世界的时代