智能小车中的迷宫算法

合集下载

基于赛道记忆的迷宫智能小车的设计

基于赛道记忆的迷宫智能小车的设计

基于赛道记忆控制算法的智能小车的设计摘要:本系统采用A T89S52芯片为核心进行设计,实现了小车智能寻迹,自主学习和信息无线传输等功能,从而在监测端对获取的信息进行实时显示及语音提示。

本系统真对现实中对未知区域实时探测的需求,适当进行了简化,利用迷宫寻迹进行模拟。

小车在迷宫中行进的过程中,会自动寻迹,通过一次迷宫遍历,就能自主学习,计算出最优路径,全过程可在监测端实时显示。

关键词:语音提示;自主学习;控制算法;无线通信引言当今社会,科学技术日新月异,应用自动化设备,计算机处理,现代化通讯,数字化信息,现代化显示设备等高新技术而建立的现代化智能监控等系统已经得到充分的发展与应用,智能机器人也就应运而生。

同时,在建设以人为本的和谐社会的过程中,智能服务机器人能够完成考古发掘,海底揭密,宇宙探索等危险作业,以保证人身安全。

本系统便是一个简化的智能机器人,能够实现智能寻迹和迷宫路径优化等功能,可进一步完善,应用到实际生活,为人们的生活提供便利。

1.系统框架1.1 功能概述本系统主要是让小车自主的从迷宫的入口走到出口,并把行走的轨迹传输给监测端,显示出小车的实时信息,并以语音形式播报,另外,无线传输模块还具有自动组网的功能,在多台小车之间也可以通信,这样,多台小车同时探测这一迷宫能大大的提高效率。

1.2 框图如图1所示,首先传感器检测路面信息,将检测到信息传给单片机,单片机对信息进行分析、处理以后,一方面通过电机驱动控制电机转动,另一方面将数据通过无线电路发送给监测端,当监测端收到信息后,将数据转换为字符通过液晶显示,同时用语音模块提示相关信息。

图1 硬件框图2.硬件系统设计2.1 单片机最小系统本系统采用AT89S52单片机作为核心控制器。

最小系统如图2所示。

图2 最小系统2.2 电机驱动采用专用芯片L297N作为电机驱动芯片。

L297N是一个具有高电压大电流的全桥驱动芯片,它相应频率高,一片L297N可以分别控制两个直流电机,而且还带有控制使能端。

智能小车中的迷宫算法

智能小车中的迷宫算法

智能小车中的迷宫算法2008-10-27 15:20智能小车中的迷宫算法看了周立功上面的电脑鼠走迷宫的视频感觉非常有趣,一直都做个小车玩,可没材料,只能看着视频上的小车路行轨迹整出来了这个算法,我不知道真正的算法是怎么实现的,这只是我自己想的一个算法,而且没有完整的小车程序,有空买了小车的再整理总程序。

/pro_ydkz/MicroMouse615.asp这是视频地址。

先看看那大体的迷宫图,随便画的,不是很准确,红色的是小车的运行轨迹,蓝色小圈表示要保存的节点,右下角是起始点:首先是数据结构,对于整个程序来说,首先要做的是把整个图存下来,有过数据结构基础的这个应该不难,图一般是以结点的方式存储,也就是图中的蓝色小圈,结点的存储格式也是很重要的,我前后尝试了好几种才确定下来。

节点有两中逻辑相连方式,一个是图形连接,对应* lt_north,*lt_west,*lt_south,*lt_east,一个是线性连接,对应*frontpoint和*nextpoint,线性连接是为了容易判断当前小车所到结点是否已经记录,也为了后面迷宫算法的树形实现。

如下:Struct mappoint{Float point_x,point_y; //我是以坐标形式存储,这事相对坐标Bool ltb_north,ltb_west,ltb_south,ltb_east; //这是记录每个结前后左右是否有相通结Mappoint * lt_north,*lt_west,*lt_south,*lt_east; //这是前后左右相通节点的地址Mappoint *frontpoint,*nextpoint; //这是前一结点和后一结点的地址}看着很简单,但他确实很简单,但你也得尝试几次才会知道怎样组织最合适。

下面是算法了,首先是程序的流程,可怜的我到现在还没用过超声波传感器和伺服电机,所以只能假设了,伺服电机貌似得用时钟中断控制,超声波假设也是轮询寄存器。

智能迷宫寻迹小车报告

智能迷宫寻迹小车报告
由于要对电机实行加速减速刹车的控制,故采用由L298N和74LS08构成的驱动电路,由1.0和1.1口负责控制1号电机的前进与后退,而与他们一起走与门74LS08的1.4口负责输出PWM波,由PWM波负责控制小车的减速与加速以及制动的控制。同时与门也起到了扩大单片机输出电流的作用,由于L298N需要的输入电流AT89C52无法驱动,与门在此起到一定的上拉作用。
1.4传感器个数的比较与选择
方案一总共5个传感器,两个传感器用来检测小车是否偏离轨迹,另外三个传感器用来检测小车是否遇到路口(前方.左方及右方各一个),由前方传感器来检测终点。(如图1.1)
方案二总共6个传感器,其中两个传感器用来检测小车是否偏离轨迹,另外三个传感器用来检测小车是否遇到路口(前方.左方及右方各一个),还有一个传感器配合前方的传感器来检测终点。(如图1.2)
1方案论证与比较
1.1传感器的选择与比较
方案一采用摄像头,然后用CCD处理技术,对采集的信号进行分析。
方案二使用光敏传感器,能够采集回来黑与白两种信号,然后进行处理与分析。
由于采用摄像头进行CCD处理所用的硬件搭接较为繁琐,并且处理起来还比较麻烦,而光敏传感器TCRT5000可以虽然智能识别黑与白两种颜色由于现场条件,并不能对其造成干扰,而且其反应速度快,响应时间短,故此,我们选用光敏传感器TCRT5000。
2.为了让小车刚刚检测偏离轨迹就做出调整,同时又给小车在走直线时留有余量,经过不断实践测试,认为检测偏离轨迹的两个传感器间距以2.1cm为最佳。如图1.9所示。
图1.8检测转弯路口传感器位置的计算
图1.9检测偏离轨迹的传感器示意图
3.为了两检测终点的传感器能够准确快速的检测并识别出终点,设定两传感器间距离为2.1cm。

走迷宫的智能小车

走迷宫的智能小车
◆ 右手法则 : 以右边为优先的前进方向 ,然后是直线方向 、 左边方向 。 ◆ 左手法则 : 以左边为优先的前进方向 ,然后是直线方向 、 右边方向 。 ◆ 中左法则 : 以直线为优先的前进方向 ,然后是左边方向 、 右边方向 。 与此类 似的还有中右法则。 ◆ 乱数法则 : 取随机值作为前进方向 。
6
关于走迷宫的智能小车
浅析设计:在此我们假设使用左手法则在假设路径下
为了记忆迷宫的详细信息,需要对迷宫进行标记,或许你可以采用结构体数 组来记录这些信息。
struct Dat { int x,y; //所处位置 char dir;//路况 }dat[?];
7
关于走迷宫的智能小车
其它: 怎样走直线? 如何精确转弯? 速度如何控制? 传感器如何选择? 。。。
8
传感器如何选择?
9
精确转弯
◆ 采用三轮小车,四轮小车······ ◆原因:······
10
速度如何控制?
@车模控制@传感器
11
12
13
14
15
16
17
祝每一位参பைடு நூலகம்者,取得好成绩!
走迷宫的智能小车
2
3
关于智能小车
◆ 基本构成: 车体、传感器、控制中心、电机驱动、电源等 ◆ 何谓智能:。。。 ◆ 赋予智能:
5
关于走迷宫的智能小车
原理:采用部分迷宫探索的策略,试探性的寻找出口。 小车在巷道内行走 , 如果最后无路可走 ,则该巷为 “ 死巷” ; 小车在巷道内行走的方向最多只有 3个( 前 、 左 、 右) , 如果 存在 2 个或 2 个以上的方向可以行走 ,称为 “ 交叉” 。 遇有 交叉时 , 在行走方向的选择上可有如下几种选择法则 :

自动小车走迷宫的设计与实践

自动小车走迷宫的设计与实践

自动小车走迷宫的设计与实践摘要:在自动控制领域,通过对直流电动机的控制可以实现机器人、小车等的智能化。

本文利用红外避障传感器检测障碍物,所测得信息反馈给小车控制电路,从而控制DIY竞赛小车两直流电机的正反转,实现了小车自动从事先所设定的迷宫中走出。

整个控制电路以单片机AT89C51为核心,电路结构简单、可靠性较高,实验测试结果基本达到预期目标。

关键词:AT80C51单片机;红外避障传感器;调速;电动小车引言当今社会,科学技术日新月异,时代前进的步伐越迈越宽,随着汽车工业的迅速发展,关于汽车的研究也就越来越受人关注。

全国大学生电子设计竞赛控制类题目也多次使用过小车的智能化控制,全国各高校也都很重视该题目的研究,可见其研究意义很大。

本文所设计的电动小车控制电路让小车具有了避障功能,在事先所设定的迷宫入口处打开电源后,小车可以独立从迷宫中走出。

根据题目的要求,确定如下方案:在现有玩具电动车的基础上,加红外线避障感器实现对电动小车前方道路的实时测量,并将测量数据传送至单片机进行处理,然后由单片机根据所检测的各种数据实现对电动车的智能控制。

这种方案能实现对电动车的运动状态进行实时控制,控制灵活、可靠、精度高,可满足系统的各项要求。

本设计采用MCS-51系列中的AT89C51单片机为控制核心,利用红外避障传感器检测道路上的障碍,控制电动小汽车的自动避障功能,实现小车自动从迷宫中走出。

1 功能概述及总体方案设计1.1功能概述本设计的“自动小车走迷宫”这一套系统主要是让小车自主的从迷宫的入口走到出口。

在这一过程中,小车通过前、左、右三个红外避障传感器现对周围障碍物的实时测距来实现避障功能;在小车的行走过程中,也会实时地把小车前方的道路状况反应给单片机。

如图1.1所示为迷宫示意图:图1.1迷宫示意图1.2 总体方案设计本设计将系统分为小车控制模块、红外检测模块、速度调节三个大模块。

其中小车控制模块包括控制小车轮子的转动;红外检测包括对小车前方道路状况的探测从而做出相应的动作。

用Q-learning算法实现自动走迷宫机器人

用Q-learning算法实现自动走迷宫机器人

⽤Q-learning算法实现⾃动⾛迷宫机器⼈项⽬描述:在该项⽬中,你将使⽤强化学习算法,实现⼀个⾃动⾛迷宫机器⼈。

如上图所⽰,智能机器⼈显⽰在右上⾓。

在我们的迷宫中,有陷阱(红⾊炸弹)及终点(蓝⾊的⽬标点)两种情景。

机器⼈要尽量避开陷阱、尽快到达⽬的地。

⼩车可执⾏的动作包括:向上⾛u、向右⾛r、向下⾛d、向左⾛l。

执⾏不同的动作后,根据不同的情况会获得不同的奖励,具体⽽⾔,有以下⼏种情况。

撞到墙壁:-10⾛到终点:50⾛到陷阱:-30其余情况:-0.1我们需要通过修改robot.py中的代码,来实现⼀个 Q Learning 机器⼈,实现上述的⽬标。

Section 1 算法理解1.1 强化学习总览强化学习作为机器学习算法的⼀种,其模式也是让智能体在“训练”中学到“经验”,以实现给定的任务。

但不同于监督学习与⾮监督学习,在强化学习的框架中,我们更侧重通过智能体与环境的交互来学习。

通常在监督学习和⾮监督学习任务中,智能体往往需要通过给定的训练集,辅之以既定的训练⽬标(如最⼩化损失函数),通过给定的学习算法来实现这⼀⽬标。

然⽽在强化学习中,智能体则是通过其与环境交互得到的奖励进⾏学习。

这个环境可以是虚拟的(如虚拟的迷宫),也可以是真实的(⾃动驾驶汽车在真实道路上收集数据)。

在强化学习中有五个核⼼组成部分,它们分别是:环境(Environment)、智能体(Agent)、状态(State)、动作(Action)和奖励(Reward)。

在某⼀时间节点t:智能体在从环境中感知其所处的状态智能体根据某些准则选择动作环境根据智能体选择的动作,向智能体反馈奖励通过合理的学习算法,智能体将在这样的问题设置下,成功学到⼀个在状态选择动作的策略。

1.2 计算Q值在我们的项⽬中,我们要实现基于 Q-Learning 的强化学习算法。

Q-Learning 是⼀个值迭代(Value Iteration)算法。

与策略迭代(Policy Iteration)算法不同,值迭代算法会计算每个”状态“或是”状态-动作“的值(Value)或是效⽤(Utility),然后在执⾏动作的时候,会设法最⼤化这个值。

小车走迷宫ppP

小车走迷宫ppP

微机原理与接口技术实训实验报告(小车走迷宫)所属系部:电气信息工程系班级:通信技术姓名:指导老师:摘要本次所做的课题是小车走迷宫。

即通过编程使小车在事先准备的迷宫中行走,通过小车上安装的红外模块对迷宫障碍的判断来改变小车的前进方向,使小车在不碰撞迷宫挡板的情况下,用最短时间走出迷宫。

小车使用Philips公司生产的P89V51增强型芯片,用汇编语言进行程序编写,传感器使用红外发射接收模块。

对每个红外模块的发射距离要在迷宫当中进行适当的调整,使红外模块的探测距离刚好,从而更好地判断小车的当前状态,红外模块分别安装在小车的左、右、前方,用一个端口发射,然后分别接收。

将每个端口接收的数据,存放后再比较,根据自己编写的程序,使小车接收的数据有对应的动作。

在这次课题所使用的迷宫地图中,有四个“丁”字路口,因此在单片机编程中,我们通过一个寄存器如 R7对“丁”字路口的个数进行计数。

然后将所计的数据值与自己所设置数据进行判断,满足自己所设定的数据,就给小车对应的动作,使小车顺利走过每个“丁”字路口。

关键字:迷宫;红外发射接收模块;“丁”字口计数目录第一章整体阐述.......................................................... - 4 -1.项目要求............................................................. - 4 -2.解决方法............................................................. - 5 -3.流程图............................................................... - 5 - 第二章硬件描述.......................................................... - 8 -1.硬件电路............................................................. - 8 -1.1复位监控电路、时钟振荡电路、二极管显示.......................... - 8 -1.2声控电路........................................................ - 8 -1.3通信电路........................................................ - 9 -1.4按键及显示...................................................... - 9 -1.5模块与电机接口................................................. - 10 -1.6传感器部分..................................................... - 10 -1.7电机驱动与电源................................................. - 11 -2.主要功能描述........................................................ - 11 -2.1单片机......................................................... - 11 -2.2传感器......................................................... - 12 -2.3驱动部分....................................................... - 13 -2.4驱动子程序..................................................... - 15 -2.5总体功能....................................................... - 16 - 第三章程序清单......................................................... - 17 - 第四章总结............................................................. - 20 -1、总结1 ............................................................. - 20 -2、总结2 ............................................................. - 21 - 第五章参考文献......................................................... - 22 -第一章整体阐述1.项目要求使用计算机编程软件keil uvision编写小车单片机程序,单片机使用Philips公司生产的P89V51RD2XX增强型芯片,在小车上加装3—5个红外发射接收模块,通过红外模块发射接收红外线来判断迷宫的障碍位置,然后将判断的结果与实际迷宫状况相结合,根据迷宫的状态在程序中给予正确的小车行进动作,小车驱动使用PWM调速,使小车成功的避开迷宫障碍,走出迷宫。

机器人路径规划算法

机器人路径规划算法

机器人路径规划算法机器人路径规划算法是指通过特定的计算方法,使机器人能够在给定的环境中找到最佳的路径,并实现有效的移动。

这是机器人技术中非常关键的一部分,对于保证机器人的安全和高效执行任务具有重要意义。

本文将介绍几种常见的机器人路径规划算法,并对其原理和应用进行探讨。

一、迷宫走迷宫算法迷宫走迷宫算法是一种基本的路径规划算法,它常被用于处理简单的二维迷宫问题。

该算法通过在迷宫中搜索,寻找到从起点到终点的最短路径。

其基本思想是采用图的遍历算法,如深度优先搜索(DFS)或广度优先搜索(BFS)等。

通过递归或队列等数据结构的应用,寻找到路径的同时保证了搜索的效率。

二、A*算法A*算法是一种启发式搜索算法,广泛应用于机器人路径规划中。

该算法通过评估每个节点的代价函数来寻找最佳路径,其中包括从起点到当前节点的实际代价(表示为g(n))和从当前节点到目标节点的估计代价(表示为h(n))。

在搜索过程中,A*算法综合考虑了这两个代价,选择总代价最小的节点进行扩展搜索,直到找到终点。

三、Dijkstra算法Dijkstra算法是一种最短路径算法,常用于有向或无向加权图的路径规划。

在机器人路径规划中,该算法可以用来解决从起点到目标点的最短路径问题。

Dijkstra算法的基本思想是,通过计算起点到每个节点的实际代价,并逐步扩展搜索,直到找到目标节点,同时记录下到达每个节点的最佳路径。

四、RRT算法RRT(Rapidly-exploring Random Tree)是一种适用于高维空间下的快速探索算法,常用于机器人路径规划中的避障问题。

RRT算法通过随机生成节点,并根据一定的规则连接节点,逐步生成一棵树结构,直到完成路径搜索。

该算法具有较强的鲁棒性和快速性,适用于复杂环境下的路径规划。

以上介绍了几种常见的机器人路径规划算法,它们在不同的场景和问题中具有广泛的应用。

在实际应用中,需要根据具体的环境和需求选择合适的算法,并对其进行适当的改进和优化,以实现更好的路径规划效果。

自学习式走迷宫智能小车

自学习式走迷宫智能小车

自学习式走迷宫智能小车一、作品介绍设计目标:自学习式走迷宫小车,可以工作于两种模式。

一种是小车自己先试探找出一条走出迷宫的路线,在小车试探时通过一定的算法记下可以通过的路径参数(转过的角度和前进的距离等),下次走迷宫时直接按照记忆的路径参数走,避免再一次的试探或走进死胡同,提高通过的效率。

另一种模式是由人引导小车走一条效率最高的路径,在小车走迷宫时同时记忆路径参数(转过的角度和前进的距离等),然后让小车按照记忆的路径参数走迷宫,同样提高走迷宫的效率。

经过我们小组一个暑假的共同努力,现在小车已经能走出迷宫,下一步我们准备完成记忆路径参数的算法。

(1)小车:由学校提供的宝贝小车,小车两个轮子是360度可连续旋转舵机,直接由控制器MSP430149普通I/O口驱动。

(2)控制器:用TI公司的MSP430149做主控制器。

用P1,P2口的中断功能接受传感器的检测信号,控制器根据接受的检测信号控制舵机,实现小车的前进、后退、转弯、微调。

(3)传感器:选用六个红外数字传感器,左右负责检测左右岔口,前后检测前后障碍物,还有两个用于小车偏离迷宫中心时调整小车,使小车基本上一直处于迷宫中心位置。

(4)供电:用六节可充电电池组,先用LM117-5稳至5V给小车舵机和传感器供电,再用LM117-3.3稳至3.3V给单片机供电。

(5)电平转换:传感器输出的是5V的电压,不能直接传输给MSP430单片机,先用一个分压电阻分得少许电压,然后用1N5819肖特基二极管把电压限制在3.3V左右,直接用电阻分压也可以。

二、心得体会我们最大的感触就是理论和实际相差蛮大的,很多理论上成立的东西,实际实现时往往会遇到这样那样的问题。

我们开始用1N5819上拉3.3V,考虑到1N5819最大压降为0.3V,所以传输给单片机的电压不会高于3.6V,实际测时有可能达到3.8V甚至更高。

最后我们在1N5819之前加了一个分压电阻,传感器传输给单片机的电压不会超过3.6V。

智能小车寻迹记忆算法设计

智能小车寻迹记忆算法设计

智能小车寻迹记忆算法设计作者:吴天强来源:《计算机光盘软件与应用》2013年第23期摘要:文章介绍一种智能小车迷宫地图路径寻迹算法,通过分析常用迷宫地图轨迹特点,将导航信息分成引导线、十字路口、丁字路口及终点与起点等4种类型,结合十字路口、丁字路口的导航决策信息,给出一种左转优先的导航寻迹记忆算法,实现智能小车在迷宫地图中的自主导航与返航功能;最后,根据十字路口是典型旋转对称三分岔路口的特点,提出关于旋转对称多分岔路口左转优先的探索算法。

关键词:寻迹小车;迷宫地图;寻迹算法中途分类号:TP242随着科学技术的发展,机器人在社会各领域的作用越来越大,对机器人的研究已成为热门课题。

智能寻迹电动小车是一个运用传感器、单片机、信号处理、电机驱动及自动控制等技术来实现环境感知和自动行驶为一体的高新技术综合体,它在军事、民用和科学研究等方面已获得了广泛应用,国内外也有许多比赛,如沿着给定轨迹完成目标点访问、迷宫探索等。

常用迷宫地图由十字路口、丁字路口、左直角转弯、右直角转弯、死路、起始点、终点以及引导线等8种基本要素组成[1,2],文献[3,4]给出智能小车的迹线跟踪算法,本算法是关于十字路口、丁字路口左转优先导航路径寻迹记忆的控制方法。

1 转弯决策说明2 十字路口左转优先算法3 丁字路口左转优先算法4 结束语按照本文给出的算法流程,执行结果是得到一条连接迷宫起点与终点的路径,路口数目等于最终Node与初始Node的差值,每个路口的转弯信息,存储在对应的Node为地址的存储空间。

该左转优先探索算法可应用至由n分岔旋转对称路口所构成的迷宫地图。

参考文献:[1]蒲东兵,孙英娟等.一种嵌入式智能寻迹机器人设计[J].微计算机信息,2008,24(8):241-242,282.[2]吴天强.智能小车寻线控制与迹线分支识别方案设计[J].台州学院学报,2012,3(3):38-42.[3]袁宜峰,高冲等.基于红外传感器的智能车控制系统设计[J].苏州大学学报(工科版),2009,29(6):49-54.[4]吕国芳,黄林智等.一种机器人的寻迹算法[J].微计算机信息,2007,23(2):269-270.[5]朱益斌,胡学龙等.自主式寻迹机器人小车的设计[J].国外电子测量技术,2006,25(7):40-42.作者简介:吴天强(1977-),男,浙江天台县人,讲师,硕士,主要从事电子电路研究工作。

小车走迷宫技术

小车走迷宫技术

小车走迷宫技术在当今科技迅猛发展的时代,小车走迷宫技术已经成为了研究者们关注的焦点。

小车走迷宫技术的发展不仅仅对人类生活产生了巨大的影响,同时也在智能机器人、自动驾驶等领域有着广泛的应用前景。

本文将探讨小车走迷宫技术的原理、算法和应用。

一、小车走迷宫技术的原理在理解小车走迷宫技术之前,我们需要了解迷宫的定义。

迷宫是一种具有复杂通道和岔道的、用来考验解决者智力的游戏或者谜题。

小车走迷宫技术旨在设计一种算法和控制系统,使得小车能够在迷宫中找到通往终点的路径。

小车走迷宫技术主要依靠传感器、控制器和导航算法来实现。

传感器用于感知迷宫中的环境信息,例如距离、方向、障碍物等。

控制器根据传感器的反馈信息,控制小车的移动、转向等动作。

导航算法则是小车寻找路径的关键,常见的有盲目搜索算法、启发式搜索算法等。

二、小车走迷宫技术的算法1. 盲目搜索算法盲目搜索算法是最简单的迷宫求解算法之一。

它通过遍历迷宫的所有可能路径,逐一检查是否通往终点。

常见的盲目搜索算法有深度优先搜索(DFS)和广度优先搜索(BFS)。

DFS按照深度优先的原则进行搜索,先沿着一条路径一直搜索到底;BFS则按照广度优先的原则进行搜索,先搜索所有可能的下一步选择。

2. 启发式搜索算法启发式搜索算法是一种更加智能化的算法,它不仅考虑当前的状态,还会考虑目标状态。

常见的启发式搜索算法有A*算法和Dijkstra算法。

A*算法通过预测到达目标状态的代价来进行搜索,只选择代价最低的路径进行扩展;Dijkstra算法则根据节点之间的距离来进行搜索,每次选择距离最短的节点进行扩展。

三、小车走迷宫技术的应用1. 智能机器人领域小车走迷宫技术在智能机器人领域有着广泛的应用。

通过搭载小车走迷宫技术,智能机器人可以在复杂的环境中自主探索、寻找目标物体或者执行任务。

例如,可将智能机器人应用于家庭服务机器人,让其能够快速找到指定物品,提高生活效率。

2. 自动驾驶领域小车走迷宫技术对自动驾驶也有着重要意义。

迷宫智能小车A题

迷宫智能小车A题

迷宫智能小车【A题】【本科组】一、任务设计并制作电动小车,实现小车在迷宫走循迹功能,迷宫中跑道铺设成白色,挡板也为白色,档板高度约为10cm,跑道两个挡板之间的等间距,为25厘米,在出口处的黑胶带宽为1.5厘米。

迷宫如下图所示。

黑胶袋二、要求1.基本要求(1)为表示竞赛的公平性,竞赛前评委可任意摆放挡板,改变迷宫。

(2)小车需三次进入跑道,第一次和第二次为路径试跑,第三次为路径择优。

路径试跑:迷宫分左右两个赛道,小车从入口进入(车体不能进入跑道,上电后垂直进入跑道),经过挡板迷宫区,能够找到出口,在出口处有一条黑线,小车识别到黑线后停止在出口处。

小车如上试跑两次(左右赛道各一次)。

路径择优:经过前面的两次试跑,小车应适当记忆所走路径,并且做出分析,得出最优路径(即两次试跑的最短路程),并按此路径进行第三次行驶。

最后停止在出口处。

(3)小车进入迷宫后尽量不要走入死胡同,如果走入要能顺利退回。

2.发挥部分(1)小车在5分钟内完成2次试跑,将小车取出和放回时间除去。

(2)记录小车第三次进入跑道并行完全程的时间,时间越短越佳。

(3)记录小车第三次进入跑道所走的路线,路经越短越佳。

(4)其他。

三、说明(1)小车统一提供,可以进行改装。

(2)小车电池自备,要求不超过8节1.2伏电池。

(3)小车在运行中出现故障,允许重新试跑一次。

(5)比赛工程中,每次小车进入跑道都将进行计时。

(4)设计报告正文中应包括系统总体框图、核心电路原理图、主要流程图、主要的测试结果。

完整的电路原理图、重要的源程序和完整的测试结果用附件给出。

四、评分标准简易数字存储示波器的设计【B题】【本科组】一、任务设计并制作一台具有实时采样方式的数字示波器,示意图如图1所示。

图1 数字示波器示意图二、要求(1)被测周期信号的频率范围为1Hz~10MHz,仪器输入阻抗为1M ,显示屏的刻度为8 div×10div,垂直分辨率为8bits,水平显示分辨率≥20点/ div。

小车走迷宫技术

小车走迷宫技术

浅谈机器人在线迷宫中的控制策略问题(2) 来源:/brave_xixi时间:2010-05-07 评论条(访问论坛)RobotSky恭候您的投稿>>4、机器人对岔路口的处理方法4.1 机器人走迷宫过程分析机器人在走线迷宫时,常用的控制方法无非是以下几个步骤:(1)、机器人沿着当前赛道前进(following the line);前进同时检测前方是否有岔路口。

(2)、一旦检测到岔路口,机器人要判断岔路口的类型;(3)、确定岔路口类型后,在一定的控制法则下完成转弯。

整个流程在机器人走迷宫时将会循环作用,直到机器人到达迷宫重点。

简单用流程图示意一下就是下图:p4.1 机器人走迷宫示意图PS.当然上面的流程图中并没有涉及到后面我们所要讲到的“机器人自主学习功能”。

这块功能将单拉出来讲解。

4.2 机器人寻线方法(following the line)机器人寻线相对而言还是比较简单的,我们只需根据传感器数调整机器人左右转速就可以了。

这里提供一个简单的控制代码范例:Select Case Pattern //选择可能的模式;请参考3.3寻线传感器的使用;Case Pattern = %00100 //这种模式表示机器人处于赛道正上方,则全速前进;leftMotor=fast; rightMotor=fast //即左侧电机和右侧电机都快速前进;Case Pattern = %01000 //这种模式表示机器人轻微向右偏离赛道;leftMotor=medium; rightMotor=fast //针对这种状况,左侧电机中速转动,右侧电机快递转动,//通过两侧轮子转速差减少机器人向右偏移;Case Pattern= %10000 //这种模式表示机器人已经严重向右偏离赛道;leftMotor=slow; rightMotor=fast //针对这种状况,左侧电机慢速转动,右侧电机快速转动,//以快速纠正机器人。

智能迷宫小车设计方案

智能迷宫小车设计方案

sbit P2_1=P2^1; //中右传感器
sbit P2_2=P2^2; //中间传感器
sbit P2_3=P2^3 //中间传感器
sbit P2_4=P2^4; //左侧传感器
turn1=P2|0xE0; //P2 用于检测路线 0xE0 屏蔽高位
switch(turn1)
{//寻线模块//
case 0xE4: advance(1)
黑 龙 江 科 技 大 学 center311 Lab 2 制 作 实 验 室 学生组 设 计
我们采用了五个传感器
前端三个为寻线,左右两个为路口检测
用三个传感器中间的在线上两侧分别骑线这样便于快速校正小车位置,而且中间传感器还用
于 90 度转弯时小车头部位置的确定。
寻线程序:
sbit P2_0=P2^0; //右侧传感器
***************电机选择及问题分析:*************** 电机为网上购买 220r/min 存在问题: 1 速度过快 2 采用蓄电池 惯性较大 3 两轮速度不均 右侧轮速度较慢 解决: 综上原因我们采用 pwm 调速,降低速度减小惯性影响,双 pwm 调速平衡两轮速度 pwm 采用 T0 定时器 工作模式 2 自动重载模式 (详细程序见 .c) 晶振 11.0592 TH0=0x9B
黑 龙 江 科 技 大 学 center311 Lab 2 制 作 实 验 室 学生组 设 计
总体设计
作品简介: 作品硬件主要分为 5 个模块:传感器模块、电机驱动模块、电源及稳压模块、主控模 块、车体框架。 软件部分:采用 C 语言编写
软件主要部分包括: (1)寻线函数 (2)pwm 调速函数 (3)1602 显示函数 (4)路口判断与记录函数 (5)最优路劲计算函数 (6)直角平角转弯函数 (7)时间记录函数 ****************传感器选择**************

智能迷宫小车报告

智能迷宫小车报告

长通杯电子竞赛报告目录目录............................................................................................................................................. - 0 - 摘要.............................................................................................................................................. - 1 - 一、系统方案 .................................................................................................................................. - 2 -1.方案论证与实现方法 ............................................................................................... - 2 -1.1.1控制器选择 ............................................................................................................ - 2 -1.1.2电动车车体的选择 ................................................................................................ - 2 -1.1.3电动车的动力方案选择 ........................................................................................ - 2 -1.1.4电机驱动电路方案选择 ........................................................................................ - 2 -1.1.5终点黑线及边界的检测方案选择 ........................................................................ - 2 -1.1.6显示器的选择方案 ................................................................................................ - 2 -2.系统设计与结构框图 ............................................................................................... - 3 -二、理论分析与计算 ...................................................................................................................... - 3 -三、功能概述及方案设计 .............................................................................................................. - 4 -1.功能概述 ................................................................................................................... - 4 - 2.具体方案设计 ........................................................................................................... - 4 -2.2.1.STC12C5404AD增强型单片机系统................................................................. - 4 -2.2.2.电机驱动及电源电路 ......................................................................................... - 4 -2.2.3.边界路口及黑线检测电路 ................................................................................. - 5 -2.2.4.液晶显示电路 ..................................................................................................... - 6 -四、程序流程与程序设计 .............................................................................................................. - 7 -1. 程序流程图 ................................................................................................................ - 7 -五、测试结果分析 .......................................................................................................................... - 8 -六、综合总结 .................................................................................................................................. - 8 -1. 系统资源使用情况 .................................................................................................... - 8 -2. 小车优缺点分析 ........................................................................................................ - 9 -4.2.1.优点 ..................................................................................................................... - 9 -4.2.2.缺点 ..................................................................................................................... - 9 -3.结束语 ....................................................................................................................... - 9 -电子信息工程摘要本系统采用STC公司12C5404AD芯片为核心进行设计,并配合L293D驱动芯片,合理利用了该芯片上丰富的资源,采用红外对管及光电反射开关作为传感器,在LCM128645ZK上对获取的信息进行实时显示。

智能迷宫小车

智能迷宫小车
超声波指向性强,能量消耗缓慢,在介质中传播的距离较远,因而超声波经常用于距离的测量,如测距仪和物位测量仪等都可以通过超声波来实现。利用超声波检测往往比较迅速、方便、计算简单、易于做到实时控制,并且在测量精度方面能达到工业实用的要求,因此在移动机器人的研制上也得到了广泛的应用。但是超声波程序控制较为麻烦,不易编写程序,价格也比较贵。
{CCAP0L = CCAP0H = 0X1b;
Delay(170);
CCAP0L = CCAP0H = PWM0LEFT;
}
}
else//当墙壁很少的地方时,利用远距红外,是小车贴墙走
{if(L_LED&(!R_LED))
Keyword:STC12C5A60S2 PWMReducing_MotorAutomatic_in _Avoiding _Obstracles Infrared_Distance_Measurement Labyrinth_Algorithm
一.系统方案
1.1蔽障检测和测距模块
方案一:超声波检测避障和测距
综合考虑我们选择方案二。
1.2单片机控制模块
方案一:采用CPLD可编程逻辑器件
利用CPLD可编程逻辑器件作为主控制器。CPLD可实现各种复杂的逻辑功能,规模大、密度高、稳定性高、IO资源丰富、易于进行功能扩展,并可应用EDA软件仿真、调试,适合作为大规模控制系统的控制核心,但迷宫小车系统并没有复杂的逻辑运算,且数据处理速度的要求也不高,不能完全发挥CPLD的优势,同时,由于其集成度较高,硬件成本偏高,同时由于芯片引脚较多,实物硬件电路布线复杂,加重了电路设计和焊接的工作。
方案二:采用STC12C5A60S2
采用STC12C5A60S2单片机作为控制器。该单片机扩展功能强,具有2路PWM,软件编程灵活,自由度大,可通过软件编程实现各种算法和逻辑控制,并具有功耗低、体积小、技术成熟等优点,使其广泛应用于各个电子控制系统,完全能满足本系统的功能需求。

智能小车走迷宫原理

智能小车走迷宫原理

智能小车走迷宫原理小车在做第一次走迷宫时采用左手法则即当遇到路口时如果可以左转则立即左转否则就按常规处理光电传感器返回值变化最初 小车前进一段距离后再进行处理路口类型与识别处理 00100→1110011100→00000 左转路口 左转 11100→00100 直行或左转路口00100→00111 00111→00000右转路口 右转 00111→00100 直行或右转路口直行 00100→11111 11111→00000 丁字路口 左转 11111→00100 十字路口口 00100→11111 11111→11111 终点 停止 00100→0000000100→00000死胡同掉头(表1—1)路口识别与处理1左转路口与直行或左转路口:当遇到左转路口时(11100→00000)与直行或左转路口(11100→00100)光电传感器的变化值都是从00100变为11100无法根据当前值判断路口类型,因此先让小车向前运行一段距离如果是从11100变为00000此时为左转路口根据左手法则此时左转,如果从11100变为00100此时为直行或右转路口根据左手法则左转。

2右转路口与直行或右转路口:当遇到右转路口时(00111→00000)与直行或右转路口(00111→00100)光电传感器都从00100变为00111此时无法判断因此让小车前行一段距离,如果从00111变为00000时为右转路口此时右转,如果从00111变为00100时此时为直行或右转路口根据左手法则此时直行。

3丁字路口、十字路口、与终点当遇到丁字路口(11111→00000)、十字路口(11111→00100)、与终点(11111→11111)时光电传感器都是从00100变为11111此时仍然无法判断路口状态,因此先让小车前行一段距离如果11111变为00000为丁字路口,如果11111变为00100则为十字路口,如果11111仍然变为11111状态为改变的话则可以判断为终点小车停止前进。

智能迷宫小车方案

智能迷宫小车方案

首届ST-EMBED电子设计大赛参赛作品:走迷宫的小车A Robot System Based On WirelessCommunication参赛学校:华中科技大学参赛学生:肖骁、刘焱、孙静超、姚聪、吴正华指导老师:钟国辉参赛队号:2006年1月27日华中科技大学电子与工程系Dian团队走迷宫的小车摘要:本系统采用ST公司ARM7芯片STR710FZT6为核心进行设计,合理利用了该芯片上丰富的资源,实现小车智能蔽障、寻迹,信息无线传输等功能,从而在远端PC上对获取的信息进行实时显示。

本系统针对现实中出现的对于未知区域实时探测的需求,适当进行了简化,利用迷宫进行模拟。

其中,有一台智能小车,和一个PC端。

小车在迷宫行进的过程中,会自动蔽障、选择路线,并通过无线模块将行进的信息实时传送给远端PC机,从而在PC端显示出小车在迷宫中行进的路线。

为了达到在迷宫中行走的目的,我们要设计蔽障和迷宫算法,为了使小车的信息能够实时传输到远端PC机,就需要设计一套较为实用和可靠的无线通信协议。

关键词:蔽障,迷宫算法,无线通信协议A Robot System Based On WirelessCommunicationAbstract:This system uses STR710FZT6 ARM7 chip as a core and its rich resources to achieve a smart car with functions of intelligent languishing impaired, motion, wireless transmission of information and others, PC on the remote will obtain the information for real-time display. In view of the reality of the system for real-time detection of unknown regional demand, we make a proper conduct of a simplified, using simulation maze. Among them, they have a smart car, and a PC terminal. In the process, the smart car will automatically languishing barriers, choose route and the road line will be through wireless module and real-time transmission of information to distant PC which shows it. In order to achieve the purpose, we have to design languishing impaired and maze algorithm, and also with the purpose of making Dolly have the ability of real-time transmission of information to distant PC, we should design a more practical and reliable wireless communication protocol.Keywords: languishing impaired, maze algorithm, wireless communication protocol.目录1 引言 (4)2 功能概述及方案设计 (6)2.1功能概述 (6)2.2 具体方案设计 (7)2.2.1 系统总体方案设计 (7)2.2.2小车控制模块设计 (7)2.2.2.1 小车车体的设计 (7)2.2.2.2 小车控制器模块 (8)2.2.2.3 电源模块 (8)2.2.2.4 稳压模块 (8)2.2.2.5 电机驱动模块 (8)2.2.2.6 小车控制模块设计 (8)2.2.2.7 车速检测模块设计 (8)2.2.3 超声波模块设计 (9)2.2.4 无线通信模块设计 (10)2.2.4.1 硬件选型 (11)2.2.4.2 通信协议介绍 (15)2.2.4.3 利用ARM芯片上的资源 (18)3 系统硬件设计 (19)3.1硬件设计概述 (19)3.2 电机驱动模块设计 (19)3.3 测速模块设计 (19)3.4 超声波模块设计 (20)3.5 无线通信模块 (21)3.6 电源模块硬件设计 (22)4 系统软件设计 (24)4.1 下位机控制模块 (24)4.1.1 模块描述 (24)4.1.2 系统资源使用情况 (25)4.1.3 主控模块设计 (25)4.1.4小车控制模块 (26)4.1.5 超声波模块 (26)4.1.6 无线通信模块 (26)4.2 PC机处理模块 (26)5 现在所完成的工作 (27)6 结束语 (27)1 引言当今社会,科学技术日新月异,时代前进的步伐越迈越宽,应用自动化设备,计算机处理,现代化通讯,数字化信息,现代化显示设备等高新技术而建立的现代化智能,监控等系统已经得到充分的发展与应用,智能机器人也就应运而生。

线迷宫小车算法(1)

线迷宫小车算法(1)

Advance();为前进函数 Balance();为左右轮速度控制函数,1 为前进, 70,90 为 pwm 小车速度值 (详见:源程序) 岔路口检测程序: 我们默认小车检测到岔路口时转弯优先级为: “左”—“中”—“右” if(P2_4==1) { 路口 { if(logo){ //logo==1 读取最优路径 turn(*p++,medium); }else { turn('L',medium); //左转 crossing('L'); //记录数据 } } } Else 后运行了两个函数 分别 turn('L',medium); //左转,medium 为中速,左侧轮停止右侧轮 中速 crossing('L');//向字符串记录数据‘L’ 其他请况留给读者。 传感器布局二: 一字型设计 //遇到左侧路口 // 前端有一个检测到路线 视为 前方有路 此处为 岔
strcpy(yy,j2); //截取后面字符串并保留 *j='\0'; //截取前面字符串 strcat(road,&a[i][0]); //在前面字符串后连接对应项 strcat(road,yy); //将后面字符串重新连接 } else{ f=0;//没有匹配项 标记清零 } }while(f==1);//判断本次匹配替换是否结束,如果否 继续匹配并替换
/***********可调脉宽调制双侧轮 pwm 调速软件设计*****************/
/********pwm 中断调速定义*************/ void pwm() { TMOD=0x02; /* 设定 T0 的工作模式为 2,重加载模式 */ TH0=0x9B; /* 装入定时器的初值 晶振 20MHZ 每 100us 中断一次 10 次(即 1MS)为 1 个 PWM 周期*/ TL0=0x9B; EA=1; /* 开总中断 */ ET0=1; /* 定时器 0 允许中断 */ TR0=1; /* 启动定时器 0 */ } /*****定时中断函数 2*****/ void timer0() interrupt 1 /* T0 中断服务程序 */ { if(t==0) /* 1 个 PWM 周期完成后才会接受新数值 */ { tmp1=m1; tmp2=m2; } if(t<tmp1) en1=1; else en1=0; /* 产生电机 1 的 PWM 信号 */ if(t<tmp2) en2=1; else en2=0; /* 产生电机 2 的 PWM 信号 */ t++; if(t>=100) t=0; /* 1 个 PWM 信号由 10 次中断产生 */ } /************寻线与校正处理函数********/ void balance(uchar indexL, char speedL,uchar indexR,char speedR) //balance { //左侧电机处理 if(indexL==1) /* 电机 1 的处理 */ { if(speedL>=-100 && speedL<=100)
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

智能小车中的迷宫算法
2008-10-27 15:20
智能小车中的迷宫算法
看了周立功上面的电脑鼠走迷宫的视频感觉非常有趣,一直都做个小车玩,可没材料,只能看着视频上的小车路行轨迹整出来了这个算法,我不知道真正的算法是怎么实现的,这只是我自己想的一个算法,而且没有完整的小车程序,有空买了小车的再整理总程序。

/pro_ydkz/MicroMouse615.asp这是视频地址。

先看看那大体的迷宫图,随便画的,不是很准确,红色的是小车的运行轨迹,蓝色小圈表示要保存的节点,右下角是起始点:
首先是数据结构,对于整个程序来说,首先要做的是把整个图存下来,有过数据结构基础的这个应该不难,图一般是以结点的方式存储,也就是图中的蓝色小圈,结点的存储格式也是很重要的,我前后尝试了好几种才确定下来。

节点有两中逻辑相连方式,一个是图形连接,对应* lt_north,*lt_west,*lt_south,*lt_east,一个是线性连接,对应*frontpoint和*nextpoint,线性连接是为了容易判断当前小车所到结点是否已经记录,也为了后面迷宫算法的树形实现。

如下:Struct mappoint
{
Float point_x,point_y; //我是以坐标形式存储,这事相对坐标
Bool ltb_north,ltb_west,ltb_south,ltb_east; //这是记录每个结前后左右
是否有相通结
Mappoint * lt_north,*lt_west,*lt_south,*lt_east; //这是前后左右相通节点的地址
Mappoint *frontpoint,*nextpoint; //这是前一结点和后一结点的
地址
}
看着很简单,但他确实很简单,但你也得尝试几次才会知道怎样组织最合适。

下面是算法了,首先是程序的流程,可怜的我到现在还没用过超声波传感器和伺服电机,所以只能假设了,伺服电机貌似得用时钟中断控制,超声波假设也是轮询寄存器。

那大体流程图是这样的:
先说一下的是小车的行驶流程,小车是以右手法则判断的,即先为右,次为前,再次为左,每当传感器变化时先计算出此结点的相对坐标,并判断这个结点是否存在,不存在就建立新结点,并根据当前值设置其方向量和其他相邻结点的指针并设置线性表的当前顺序结点。

因为小车是以右为先,当前面有两个方向时他会转向优先方向,这时可以把没走的bool型设置成true,相应的指针设置成空,这样表示此方向可以走但没有行驶过。

如果结点存在,先将当前结点与此结点连接,并以此结点为起始结点向上查询最近的有方向为通但未行驶过的结点,并找出这两个结点最短路径并回走,继续探索未探索的路径。

这个寻找两结点的算法是这个程序中的中心算法。

首先是时钟控制伺服电机的转动并记录脉冲以计算小车的坐标,设定一个方向量,可以首先在主程序中设置一个枚举类型,这样好理解,也可以直接一个整型量,只要小心点用就好,可以设个int lt_dir;用1、2、3、4表示东、西、南、北,当小车转弯时判断当前值并改变。

接下来是图的建立,先建立一个图的跟结点,mappoint lt_map;并根据传感器信息设置四个方向的值,其坐标值设置为0,0。

主程序中要有个当前结点实例,以保存小车最近走过的结点lt_this。

当判断到有个新的结点时就创建一个新的结点,不用实例一个实例名,直接用当前结点相对方向的指针指向就行了,并将当前的线性结构的下一指针指向当前结点,例如假设现在小车向北行驶(以上北下南左西右东为准),行驶到一个北向导通,右向也导通的结点,由于右向比前向的优先级大,所以就要往右拐,并保存当前结点,如下:
*Lt_this.north=new mappoint(); //这是上一结点北方向结点的指针,即指向此结点
*Lt_this.nextpoint=lt_this.north; //这是上结点的线性存储指针,保存当前结点指针
*Lt_this.north.frontpoint=lt_this; //将当前结点的线性表的前一结点指向前一结点
*lt_this=lt_this.north; //将当前结点切换成此结点
*lt_this.south=lt_this.front; //相对于此结点上一结点位于他的南向*lt_this.ltb_north=true; //北向和西向和南向都导通,
*lt_this.ltb_west=true;
*lt_this.ltb_south=true;
当行驶到以记录过的点时就要靠线性结构从当前结点往上查询看哪一个点
有导通方向但小车没行驶过的路径,就以此两点计算出最短路径,计算出以此路径回走继续探索迷宫,记录完整个迷宫就回起点准备第二次进军最短迷宫路径了。

最短路径算法:
这是这个的中心算法,其实有很多种算法都可以实现,我是结合树形结构实现的。

就是另外建一张图,当前结点为树根,依照右手法则将每个结点线性的存储到表中,新加结点都要查询一次是否和当前树中的两个结点有连接,若是,就以此点延两棵树枝逆向计算出两个路径的长度,将此结点保存到长度短的树枝中,如果一样长就以右手先保存。

当探索到目标结点时就加入此树枝并结束此树枝的探索,如果此树枝连接不到目标结点就结束了可以删除也可以不做处理直接终结。

最后结束所有结点的探索时就延此树根逆向超找目标结点,超找到就以此树枝逆向求长度,找到最短路径的结点,以此结点前进。

算法就不写了,等器件买来整个程序写完再发上来。

最后发一下牢骚,TMD真是无奈,到了这个破烂三本学校啥子东西都没有,实验室是刚建的什么器件都没有,想做个什么东西都得自己买,要是等学校买还不知道等到哪辈子。

以前还觉得大学都差不多,随便上个都一样,现在才知道差距,有实力学校的什么实验室都有,什么器件都有,想做哪个方面就给你器材。

哎!无奈了,刚给凌阳小车下了订单,等着到货就把这个做好,还是自己掏的腰包,可怜啊!!!。

相关文档
最新文档