Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Scratch案例——无人驾驶汽车

Scratch案例——无人驾驶汽车

作者头像
一石匠人
发布于 2018-12-07 09:47:04
发布于 2018-12-07 09:47:04
2.9K0
举报
文章被收录于专栏:儿童编程儿童编程

(本文为前一篇文章《理解编程语言只需四个词-编程知识体系介绍(带python及scratch案例)》的说明案例之一)

下面我们用Scratch做一个无人驾驶汽车的小程序来具体说明下编程系统。

7.1 程序编写步骤

第一步:确定这个程序的目标

这个案例中我们要做一个能够自己躲避障碍、决定速度的小车。

第二步:将目标分解

我们想要汽车具备如下几个功能:

(1)遇到障碍物自动换向;

(2)遇到屏幕边缘自动改变方向;

(3)前方无障碍物的时候,加速行驶;

(4)前方一定距离内有障碍物,减速行驶;

第三步:设计原型

用最简单的程序语言及图形实现程序核心功能,设计一个能判断到障碍物的距离并根据情况改变行驶方向的小车,即为原型。

第四步:完善程序

对原型进行扩展,包括功能完善及各种美化效果。

第五步:扩展程序

这个案例的进一步扩展,比如添加功能、以这个程序为基础做出其他案例等。

7.2 原型设计

下面我们开始制作原型。先新建一个长方形的角色,当我们的汽车原型,命名为“车”。把原来的猫命名为“障碍”。界面和代码如图4.2-4.3所示。

原型界面

汽车原型.PNG

点击小绿旗按钮,小车在快接近障碍物的时候能够自动改变方向,初步实现了避开障碍物的功能。在这个小程序中,通过侦测“到障碍物的距离”来获得“数据”;判断侦测的距离是否小于150属于“运算”;“重复执行”和“如果......那么”两个代码块为“控制部分”;“移动5步”及“右转15度”为“执行”语句。这个原型虽然只有几行代码,但是已经包含了“编程系统”四个主要组成部分:数据、运算、控制和执行。这个案例还要丰富一下,其本质也是通过“编程系统”四个主要部分的配合完成的。

7.3 不再撞墙

我们继续完成原型。当汽车达到舞台边框的时候居然穿过边框不知去向了,这不是我们想要的效果。我们只需要在“重复执行”语句中加入“遇到边缘就反弹”命令。运行程序,汽车再也不会消失了,看看程序也只是多了一行代码而已,如图4.4所示。

反弹

7.4 加速与减速

下面进行加速、减速的设置。基本原理也是通过判读汽车到障碍物的距离来决定车速的大小:当距离大于300的时候,速度加到8;当距离小于150的时候,速度降到2;当距离在150~300的时候,恢复正常默认速度5。在这里,我们用了一个变量“速度”,变量的相关内容会在后面额章节中详细讲解,这里只需要理解为代表速度,且大小可变就可以了。调整一下数值,代码如图4.5所示。

加速与减速代码

现在我们可以对照一下上文中制定的4个具体目标,基本上全部实现了。

7.5 紧急掉头

下面进入“完善程序的”的阶段,我们发现汽车大部分情况都能实现自动避开障碍物,但也会出现一些极端情况。当车与障碍物考的太近的时候,容易让车做圆周运动,反而反复从障碍物上方经过,这不和常理,究其原因,是因为在特殊的情况下汽车右转20度之后仍然符合旋转的条件,这样就造成了循环碾压障碍物的情况。针对这种情况,我们修改代码,当距离小于60的时候,直接转向相反方向,并前进80步,这样就基本上避免了上述问题。同时为了增加程序多样性,在程序开始的时候加入了旋转随机角度的命令,最终代码如图4.6所示。

汽车完整代码

7.6 添加一匹跑动的马

障碍物小猫移动不动站在那里实在无聊,我们可以换成一匹奔跑的马,这样就有趣多了。与小车一样,我们为这匹马也设定了遇到边缘就折返的命令,最后马的代码如图4.7所示。

马身上的代码.PNG

运行一下程序,有意思多了。可是我们的汽车还用一个方块代替,这时候我们可以做一些美化的工作了,将方块修改成小汽车,最后的界面如图4.8所示。小汽车尾部的线是它的运行轨迹,记录轨迹的方法我们会在“画笔”的相关章节详细讲解。

界面.PNG

7.7 辅助工具的使用

我们在做几何题的时候需要添加辅助线来寻找解题思路。在编写程序的过程中我们也可以用一些辅助的工具来提高我们的编程效率。而这些辅助工具一般都是我们根据需要自己设计编写的。如在本案例中,你一定疑惑程序中条件语句“道障碍物的距离<150”中数值150是如何得到的。你当然可以通过不停地改数值、运行、调整来找到最合适的数字。但这不是最佳的方法,我们可以创造一个辅助的工具,如下图4.9所示。

辅助工具1

这样,我们只需拖动小车到合适的位置,点击角色,就会直接显示相应的距离,简单快捷。

本案例还用了另一个辅助工具,当你按下键盘上A键时,小车就会回到坐标(0,0)的位置。这个小工具在程序调试阶段发挥了重要作用,如图4.10所示。

辅助工具2

这个案例完成了么?其实一个程序永远没有真正完成的时候,可以一直变得更好。我们想一想怎样把这个程序改的更好?下面是一些提示:

1.增加障碍物数量,并让其位置随机分布;

2.将汽车和马换成猫和老鼠试试;

3.加入一些故事情节。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018.11.09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
无人驾驶汽车毫米波雷达_无人驾驶雷达
在上一次分享中,我介绍了毫米波雷达的原理、数据特性及优缺点。毫米波雷达的低环境敏感和低成本的特性使得其在ADAS和自动驾驶领域得到了广泛的应用。
全栈程序员站长
2022/10/01
6140
无人驾驶汽车毫米波雷达_无人驾驶雷达
基于51单片机智能小车的设计与实现转弯避障_基于单片机的智能小车设计
学习智能小车系统,有助于提高搭建系统的能力和对自动控制技术的理解。智能小车是一个较为完整的智能化系统,而智能化的研究已成为我国追赶世界科技水平的重要任务。智能小车有它特有的特点:成本低,涉及的知识面广,易于拓展[1]。整个智能小车系统作为一个完整的系统,从它的原理图的实现到实物的完成的过程,不仅需要深厚的电子方面的知识,还有对电路实现的良好掌握,对于培养学生的实践能力都有重要的意义。智能小车的竞赛在我国各大高校中都受到了重视,吸引了大批的高校学生的兴趣,而且取得了很多优异的成果,为我国推进智能化的进程做出了巨大的贡献,也为智能汽车的发展提供了理论依据[2-3]。只有当把理论和模型应用到实践中,这样的创新才用意义,我们国家这几年在智能化方面的进步越来越快,也推动了我国在国际社会上在智能化方面的话语权。智能小车是智能化的一部分,它的系统里的避障、循迹、红外遥控的技术用到了智能化,将智能化应用到传统技术上是21世纪发展的趋势。我国虽然从改革开放以来大力发展科技创新,但是在智能化的创新水平与国外较发达的国家相比还有巨大的差距,智能竞赛在高校越来越流行,也证明了我国教育在这方面很快会赶上世界上的发展水平。本次设计是以单片机为CPU,通过编程和一些外围电路的设计来实现红外遥控,避障,循迹等功能。最重要的是把模型上的研究应用到实际生活中,智能车辆便做到了这一点[4-6]。在实际应用中比如在倒车的过程中实现的红外警报系统是以智能小车为模型而研发出来的。对于电子知识的热爱与钻研有利于研发更多智能车辆,使我们的生活更加便利、智能化。
全栈程序员站长
2022/11/02
2.4K0
【无人驾驶技术系列】光学雷达(LiDAR)在无人驾驶技术中的应用
本文为《程序员》无人驾驶技术系列文章的第一篇,深入解析光学雷达(LiDAR)在无人车研发中的应用,包括光学雷达的工作原理,在地图绘制、定位以及障碍物检测等环节的应用,以及面临的挑战。 作者:刘博聪,刘少山,James Peng 责编:周建丁(投稿请联系zhoujd@csdn.net) 《程序员》原创文章未经允许不得转载,更多精彩文章请订阅2016年程序员:http://dingyue.programmer.com.cn/ 无人驾驶汽车的成功涉及高精地图、实时定位以及障碍物检测等多项技术,而这些技术都离不开
用户1737318
2018/06/06
1.5K0
无人驾驶 | MIT无人驾驶运动路线控制
对于无人驾驶汽车来说,除了感知周边的环境、定位这两大方面之外,很重要的一点就是运动的控制。 对于无人驾驶汽车循着特定的轨迹稳定的运动并非易事,下面就根据MIT研究的无人驾驶汽车运动控制的视频来看看这
新智元
2018/03/14
1.4K0
无人驾驶 | MIT无人驾驶运动路线控制
当汽车开始“聊天”,这才是无人驾驶的杀手锏!
自动驾驶技术自诞生以来,一直被寄予厚望。每当人们期待的时刻即将来临,却总是不断听到"还需要再等个十年"的声音。这一领域的进展似乎一直在“跳票”,令人不禁思考:问题究竟出在哪里?
数据猿
2023/10/24
2360
当汽车开始“聊天”,这才是无人驾驶的杀手锏!
无人驾驶技术课——定位(1)
本节将介绍自动驾驶汽车的定位技术,包括:GNSS(全球导航卫星系统),RTK(实时运动定位)和惯性导航。
刘盼
2018/12/28
2.7K0
无人驾驶技术课——定位(1)
基于STM32设计的避障寻迹小车
根据美国玩具协会在一项研究中,过去几年全球玩具销售增长与GDP的世界平均水平大致相同。但全球玩具市场的内部结构已经占据了巨大的位置变化:传统玩具的市场份额正在下降,高科技电子玩具正在蓬勃发展。全球玩具市场的高科技电子游戏2010年的年销售额增长了67%,但传统玩具的年销售额仅增长了1%。
DS小龙哥
2023/03/06
2K0
基于STM32设计的避障寻迹小车
理解编程语言只需四个词-编程知识体系介绍(带python及scratch案例)
学习编程有时候会给人一种高深莫测的错觉,容易让人“敬而远之”。事实并非如此,学习编程其实就是学习一种语言——一种与机器对话的语言。编程语言与人类语言有着很多相似的东西,只要你懂了机器的语言构成,学习编程的过程就像结交一个好朋友。 而你编写程序的过程就像与老朋友聊天一样有趣。这章我们就先从整体上认识一下编程语言的体系,很多编程语言都符合这个标准。
一石匠人
2018/12/07
1K0
理解编程语言只需四个词-编程知识体系介绍(带python及scratch案例)
LabVIEW Arduino无线蓝牙遥控智能车(项目篇—2)
智能小车是以轮子作为移动机构,并且能够实现自主行驶的机器人,又被称为轮式机器人。由于具有智能化的特点,可以应用于不适合人类工作的环境中,例如灾难救援、户外探险等。智能小车有别于遥控小车,因为后者需要操作人员来控制其转向、启停和前进后退,以及控制其速度,常见的模型小车,都属于这类遥控车。智能小车,则可以通过计算机编程来实现其对行驶方向、启停以及速度的控制,无须人工干预,也可以通过修改智能小车的程序来改变它的行驶方式。
不脱发的程序猿
2022/06/14
1.3K0
LabVIEW Arduino无线蓝牙遥控智能车(项目篇—2)
增强学习与无人驾驶
增强学习是最近几年机器学习领域的最新进展。增强学习的目的是通过和环境交互学习到如何在相应的观测中采取最优行为。行为的好坏可以通过环境给的奖励确定。不同的环境有不同的观测和奖励。例如,驾驶中环境的观测是摄像头和激光雷达采集到的周围环境的图像和点云,以及其他传感器的输出(如行驶速度、GPS定位和行驶方向)。驾驶中的环境的奖励根据任务的不同,可以通过到达终点的速度、舒适度和安全性等指标确定。
博文视点Broadview
2020/06/11
6450
增强学习与无人驾驶
《智能机器如何思考》:自动驾驶与DNN的前世今生(赠书)
在过去十年中,深度神经网络取得了突破性进展,从微软亚洲研究院在ImageNet图像识别挑战赛中使用的残差网络,到DeepMind的alphaGo围棋算法,它们都依赖深度神经网络的发展与完善。
新智元
2019/08/09
4520
《智能机器如何思考》:自动驾驶与DNN的前世今生(赠书)
无人驾驶汽车首例在公共道路上的致死案,安全性质疑再起
据外媒报道,美国当地时间3月19日,一辆Uber无人驾驶汽车在美国亚利桑那州坦佩发生交通事故,撞死一名正在过马路的49岁女性Elaine Herzberg。据了解,警方确认当时Uber的汽车正处在自动驾驶模式,这是无人驾驶汽车首例发生在公共道路上的致死案,无人驾驶汽车的安全性再度遭受质疑。 据报道称,事故车辆为一辆沃尔沃XC90,警方确认当时汽车证处于自动驾驶模式,时速为65公里,驾驶位上有驾驶员。坦佩警方声明称,该车当时正朝北行驶,Herzberg正推着自行车在人行道上自西往东走,这位不幸的女性在送往
机器人网
2018/04/12
6310
无人驾驶汽车首例在公共道路上的致死案,安全性质疑再起
基于嵌入式Linux的移动机器人控制系统
随着科学技术的发展和社会的需要,移动机器人技术得到了迅速发展,正在渗透到各行各业中,使人们的生活更加便利。现今以单片机为核心的移动机器人存在处理数据量有限、控制系统速度低、人机交互机制单一等缺点,不能满足机器人多任务的要求。系统中增加协处理器的系统结构也得到了广泛应用,虽然可以管理多种传感器,但这种结构却增加了硬件的冗余度和复杂度,见参考文献。为此,提出了以嵌入式处理器S3C2440为核心的多任务机器人控制系统。 1 控制系统硬件设计 控制系统选用两轮独立驱动小车为移动式机器人平台,后轮为一个尼龙万向轮
机器人网
2018/04/25
2.4K0
基于嵌入式Linux的移动机器人控制系统
你听过无人驾驶,但你了解无人驾驶的算法吗?
算法系统由几部分组成:第一,传感,并从传感器原始数据中提取有意义信息;第二,感知,以定位无人车所在位置及感知现在所处的环境;第三,决策,以便可靠、安全地抵达目的地。
博文视点Broadview
2020/06/11
1K0
你听过无人驾驶,但你了解无人驾驶的算法吗?
项目复刻 - STM32智能小车 笔记1
原理是4红外对管可以通过红外反射识别出小车和路径(黑色胶带的)的相对位置,来调节转向,实现循迹功能。
笃信好学
2023/03/06
1.1K0
CDIO工程实践 无线充电智能循迹小车制作
一、CDIO理念 CDIO工程教育模式是近年来国际工程教育改革的最新成果。从 2000 年起,麻省理工学院和瑞典皇家工学院等四所大学组成的跨国研究获得 Knut and Alice Wallenberg 基金会近 2000 万美元巨额资助,经过四年的探索研究,创立了 CDIO 工程教育理念,并成立了以 CDIO 命名的国际合作组织。 CDIO代表构思(Conceive)、设计(Design)、实现(Implement)和运作(Operate) ,它以产品研发到产品运行的生命周期为载体,让学生以主动的、 实践
叶庭云
2021/07/01
1.8K0
无人驾驶汽车系统入门——基于Frenet优化轨迹的无人车动作规划方法
基于 Frenet 坐标系的动作规划方法由于是由 BMW 的 Moritz Werling 提出的,为了简便,我们在后文中也会使用 Werling 方法简称。在讨论基于Frenet 坐标系的动作规划方法之前,我们首先得定义什么是最优的动作序列:对于横向控制而言,假定由于车辆因为之前躲避障碍物或者变道或者其他制动原因而偏离了期望的车道线,那么此时最优的动作序列(或者说轨迹)是在车辆制动能力的限制下,相对最安全,舒适,简单和高效的轨迹。
AI科技大本营
2018/07/24
6.7K0
无人驾驶汽车系统入门——基于Frenet优化轨迹的无人车动作规划方法
无人驾驶汽车:软件模拟其实比路测更重要?
一辆Uber的无人驾驶测试车在美国亚利桑那州夜间撞人致死事件,让产业界开始思考非常重要的问题:无人驾驶汽车开发社群是否应该更着重软件仿真,而不是积极累积数百万英哩的实际道路行驶测试? 能提供仿真软件工具的西门子(Siemens)一定也很希望产业界能继续提高对模拟技术的关注,而就在Uber无人驾驶汽车意外发生的十天之后,该公司很巧合地在一场于美国芝加哥举行的技术研讨会上发表了为自动驾驶系统所设计的最新仿真软件工具。该公司声称,其仿真软件能将实体原型的需求量最小化,并大幅降低无人驾驶汽车安全性必须的实际道路
机器人网
2018/04/12
1K0
无人驾驶汽车:软件模拟其实比路测更重要?
《程序员》:增强学习在无人驾驶中的应用
本文为《程序员》原创文章,未经允许不得转载,更多精彩请订阅2016年《程序员》 本文是无人驾驶技术系列的第六篇,着重介绍增强学习在无人驾驶中的应用。增强学习的目的是通过和环境交互,学习如何在相应观测中采取最优行为。相比传统的机器学习,它有以下优势:首先,由于不需要标注的过程,可以更有效地解决环境中存在的特殊情况。其次,可以把整个系统作为一个整体,从而对其中的一些模块更加鲁棒。最后,增强学习可以比较容易地学习到一系列行为。这些特性十分适用于自动驾驶决策过程,我们在本文深入探讨增强学习如何在无人驾驶决策过程中发
用户1737318
2018/06/06
9510
Python案例——喝墨水的小乌龟
(本文为前一篇文章《理解编程语言只需四个词-编程知识体系介绍(带python及scratch案例)》的说明案例之一)
一石匠人
2018/12/07
1.7K0
Python案例——喝墨水的小乌龟
推荐阅读
相关推荐
无人驾驶汽车毫米波雷达_无人驾驶雷达
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档