摘要:无人驾驶汽车研究从20世纪80年代开始出现。1986年,卡耐基梅隆大学的Navlab制造了第一辆由计算机控制的汽车。如今21世纪,无人驾驶汽车的技术在全球广泛传播并不断优化,涌现大量无人驾驶汽车系统的项目。其中AGV(Automated Guided Vehicle)即“自动引导运输车”便是无人驾驶科技的重要体现之一。
关键词:无人驾驶汽车; 计算机控制; 全球传播; AGV
一、 AGV汽车组装与树莓派安装运行
AGV汽车的组装过程较为繁琐。其中,在解决马达与树莓派连接的走线问题是组装的难点。由于铜线丝外部有塑料绝缘层的包裹,安装时应该先用剪刀将绝缘皮剥掉,再将露出的铜线与马达电动机绕组连接。连接时应注意并联法连接,即上连上,下连下。串联法会损耗电机。其中,在连接树莓派的相连接口中,因为无法使接口精准的锁住铜线,造成整车的断路问题。但是,通过寻找规律发现,在剪开绝缘层的步骤中,可使剪刀一侧用力斜向划过绝缘层,露出较长的铜线穿过马达电动机绕组。并且,这种方法可以避免铜线头的松散,因此针对于树莓派接口的连接与马达中电动机绕组的绕线问题均可高效解决。
当AGV汽车主框架搭建完毕之后,可通过电脑连接汽车自身的树莓派网络。通过“远程连接”程序启动树莓派,搭建Python环境。通过指定命令使小车可以启动。当针对于AGV汽车运动的Python语言得以输入正确时,便可通过谷歌网络进行对应的IP地址输入,实现汽车的开动。在这其中,经常遇到谷歌网络无法打开相应网址的情况,可通过关闭电脑自身防火墙与更换浏览器的方法进行汽车的操控与运行。与此同时,在树莓派中输入指定代码时应放慢速度,务必输入每一条指令是有效的。
二、 AGV汽车赛道巡线与不同操作系统的文件互传
在此次实践中我们所使用赛道带有5个弯道,只有三处直道。因此,对于AGV汽车来说,行驶难度较大。我们通过手机或电脑进行汽车的控制。全程共巡线十圈。大量巡线所带来的的结果是让汽车有足够多的数据进行后续的数据训练。若有人为的汽车驾驶失误,可以增加巡线圈数,通过大量的数据掩盖失误。但在这其中,我的AGV汽车由于后轮马达的电动机绕线组未与铜线紧密相连,导致右侧后轮停止运转。我采取的方式是立刻拆车,重新绕线电动机绕组,但损耗了大量时间。与此同时,由于将树莓派中的tub文件的图片之间删除后新建的原因,导致tub文件夹中部分隐藏文件消失,导致需要重新使用winscp32 软件重新刷机。因此,应从中吸取教训,做任何事不能力求省事例如随意将铜线绕过绕线组,更不能草率例如直接删除了树莓派中重要文件夹tub。
由于AGV汽车在数据收集完毕后要即刻训练,将树莓派中的tub文件夹从其导出至Windows系统,从而再将tub文件导入VM ware Workstation 软件所营造的虚拟机环境进行数据训练是相当重要的,也是必不可少的一步。因此,我们需要文件互传软件解决这个问题。我们用到的是winscp 软件。将主机号与树莓派相连即可完成tub文件的传输。在这其中,尽量将树莓派中的tub传输到windows的桌面,方便后续使用。在tub文件夹中,包含数以万计的照片以及每张照片片后面的油门,刹车,以及转向数据。因此,任何一张照片都不能做删除处理。
期刊文章分类查询,尽在期刊图书馆即使一些冲出赛道的图片也不能删除,因为很难定位该照片所对应的油门及转向数据。
三、 AGV汽车巡线数据训练与树莓派数据的重新导入
当tub文件夹传输到Windows系统之后,应立即安装VMware Workstation软件创建ubuntu 虚拟机。在创建的虚拟机中,安装VM Tools,使得Windows 中的文件可通过压缩包的形式进入虚拟机。因此,将tub文件夹传输到VM Ware 中进行数据训练是很简单的。当文件在VM Ware中解压之后,应在终端中输入相关命令启动虚拟机。其中命令“python ~/mycar/manage.py train --tub ~/mycar/tub --model ~/mycar/models/mypilot”最为重要。其中“~”是浏览的意思,“/”是在某文件夹下的意思,“--”是保存的意思。在命令输入时,应该时刻注意空格的数量,因为一个“空格”键的多打或是漏打都将导致整个程序无法运行。根据电脑CPU的型号,电脑内存以及数据量的不同,每一个人训练数据的时间会不同。
当数据训练完成之后,应该用同样上述提到同样的办法将“mypilot”文件从VM Ware Workstation软件导入到Windows系统。在这之后,应该即刻打开树莓派,用Win SCP 软件将“mypilot”文件传输到树莓派“my car”文件中“models”文件夹下。实现训练数据的互联。导入数据完成之后,启动树莓派的终端,输入相关指令使AGV汽车启用“my pilot”文本文件,是汽车与电脑在相同的浏览器连接到相同的IP地址,实现汽车的自动驾驶。
四、总结与感想
编程在一定层面而言即使命令按照一定逻辑进行下去,最终达到想要的目标。而逻辑不是知识,同样不产生知识,而是一种大脑的思维方式,是一种思维问题。大人类学习编程语言时,代码只是一种最基础的辅助工具,更像是一种语言,将编程者想表达的告诉计算机。而“计算机编程”更重要的是培养一种思维方式,一种逻辑的思考能力。
通过此次AGV汽车的理论学习与实操,我受益匪浅。从对与“计算机编程”的一知半解,到最终AGV汽车的成功运行,这其中的艰辛是难以忘怀的。但幸运的是,通过自身的努力与同学老师的帮助,我克服了一个接一个的挑战,无论是汽车的组装还是数据的训练,我们一步一步学的很踏实。通过对于“计算机编程”的逐渐了解,不难发现“逻辑思考”能力的培养是相当重要的。与此同时,强大的逻辑思考能力同样可以使自身的生活变得更加有条理,因为我们可以清晰辨明不同任务的轻重缓急,有条理的解决每一个问题。让自己变得轻松,另生活变得快乐。感谢此次活动,让我接触到了一个全新的领域,并且明白“培养逻辑能力”的重要性。在今后的生活中,我依然会主动的探寻“编程语言”,了解“计算机编程”这门学科。
参考文献
(1)搜狗百科Python词条
(2)丁怀舟,计算机科学、专业发展史;逻辑的概念
论文作者:宋启源
论文发表刊物:《科学与技术》2019年第11期
论文发表时间:2019/10/24
标签:汽车论文; 数据论文; 铜线论文; 文件论文; 绕组论文; 逻辑论文; 在这论文; 《科学与技术》2019年第11期论文;