【伪技术贴】无人驾驶?LEGO机器人就可以做到

来源:互联网 发布:phantomjs java 编辑:程序博客网 时间:2024/05/16 18:50

【伪技术贴】无人驾驶?LEGO机器人就可以做到

随着科技迅猛发展,无人驾驶技术越来越热,百度曾宣称无人驾驶技术“三年商用,五年量产”,然而各大研究机构预测的无人驾驶汽车要在十到二十年之后才能上市。其实,我们用身边的LEGO机器人就可以简易的模拟一次无人驾驶技术。

所以这篇博文就是柿子姐姐的胡说八道系列之用LEGO机器人实现无人驾驶


所需材料:LEGO机器人主机,四个光电传感器,两个马达,零部件若干,电脑一台,数据线若干,还有一颗热爱捣腾的心

开始的开始,我们要给机器人起一个萌萌哒的名字~ 小白
这里写图片描述

准备工作

首先,我用LEGO digital designer简单模拟了一下小白的构造,如下图

这里写图片描述
这里写图片描述

为了方便描述,我把四个光电传感器分别标为a,b,c,d;
而两个马达分别标记为A,B,如上图所示。

模拟城市道路图如下

模拟城市道路图

准备工作做好后,就开始我们的无人驾驶之旅了。

【一】小白的构造与特性

首先,我们从小白各个部件的特性及作用讲起。

1)主机不必多说,相当于人的脑袋,负责指挥各个部件的运行,导入程序后管控光电传感器和马达部件。

2)光电传感器相当于人的眼睛,通过眼睛我们可以分辨地图。而光电是如何行使眼睛的功能的呢?简单讲,光电传感器由三部分构成:发送器,接收器和检测电路。发送器向地面发射光束,地面反射光束,白色区域和黑色区域反射的光束是不同的,接收器接收光束后,光电元件把这些光信号转换为电信号,由主机进行分析,再有主机决定下一步操作。

3)马达相当于人的腿,装上轮子,与主机相连就可以跑了。

【二】无人驾驶道路的铺建

白色道路中心铺上黑色的引导线,引导线的宽度由光电b和光电c之间的间隔距离决定。也就是说,光电b和光电c刚好是在黑色引导线的两侧的。

【三】无人驾驶程序的设计

part1

我把整个驾驶过程分解为四个简易程序:直行,左转外,右转弯,掉头,便于编写多种路况总程序的调用。
(以文字的形式解释各个程序的设计)

程序1:直线行驶
当光电a,b,c,d检测路面环境均为白色时,马达A,B以相同马力顺时针转动,光电c,d只要有一个检测到路面环境为黑色,程序1终止,进入下一个程序。

程序2:左转弯
马达A逆时针转动2.5圈,马达B顺时针转动3圈(注:由实际情况决定转动圈数),当光电a,b,c,d检测路面环境均为白色时,程序2终止,进入下一个程序。

程序3:右转弯
马达A顺时针转动2.5圈,马达B逆时针转动3圈(注:由实际情况决定转动圈数),当光电a,b,c,d检测路面环境均为白色时,程序3终止,进入下一个程序。

程序4:掉头
马达A逆时针转动5圈,马达B顺时针转动6圈(注:由实际情况决定转动圈数),当光电a,b,c,d检测路面环境均为白色时,程序4终止,进入下一个程序。

part2

与实际情况结合的微调

i)实际情况中,可能存在路面凹凸不平或打滑的情况,极有可能导致直行过程中出现偏离航向冲出道路的情况。解决方法并不困难,如下所示。
假设小白在引导线上方向偏右,我们把这个事件命名为红色事件,此时,光电b检测到的路面环境为黑色光电c检测到的路面环境为白色光电a,b检测到的路面环境也为白色。在运行程序1时我们可以加一个红色事件。当上述状况发生后,启用红色事件,使马达A轻微逆时针转动,马达B轻微顺时针转动,当光电a,b,c,d检测路面环境均为白色后,结束“红色事件”,继续执行程序1。

ii)由(i)中的举例,我们也可以优化左转右转和掉头,原理同(i)

iii)根据实际道路情况,我们可以通过测量确定白色道路和黑色道路反射光束的参数范围,进而提高无人驾驶的准确性和稳定性。

模拟无人驾驶

解决完上述问题之后,我们就可以来模拟一次无人驾驶了,我们编好的程序1,2,3,4可以直接被调用,在模拟城市道路图的行驶程序简化如下(为了直观,我用流程图表示)
这里写图片描述

这样,我们就成功完成了一次无人驾驶汽车的构建以及编程。

完结撒花~

这里写图片描述



附原始草稿

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

原创粉丝点击