智能机器人导论 课件第6章 智能循迹车_第1页
智能机器人导论 课件第6章 智能循迹车_第2页
智能机器人导论 课件第6章 智能循迹车_第3页
智能机器人导论 课件第6章 智能循迹车_第4页
智能机器人导论 课件第6章 智能循迹车_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

6.1主要应用背景

6.2技术原理

6.3实践操作与步骤全世界已有为数较多的机器人在运行,机器人行业已成为一个很有发展前景的行业,对国民经济和人们生活的各个方面已产生重要影响。在众多智能化机器人中,智能车辆可以称得上是一项最早走出实验室的实用发明,是未来重要的发展方向。智能车辆可以按照预先设定的模式在一个环境里自动运作,不需要人为管理。智能循迹车是目前智能车辆研究的热点,这种车辆的实现需要计算机、嵌入式软件及数字技术等的有机结合,也需要跨学科(通信、电子、计算机等)的设计能力。本章主要从技术原理和实践操作角度对智能循迹车进行描述,通过介绍基于STM32微控制器和基于树莓派的智能循迹小车的技术原理,以及基于树莓派的智能小车的实践操作,使读者对智能循迹车有一个大致的了解。通过构建智能小车系统,可以培养读者设计并实现自动控制系统的能力。在实践过程中,熟悉如何设计小车的外围电路,如何采用智能控制算法实现小车的智能循迹。通过灵活运用相关学科的理论知识,并动手进行实际操作,达到理论和实践的统一,在此过程中,逐步加深对智能循迹车的理解和认识。6.1主要应用背景车辆作为一种简单高效的运载工具,兼顾机动性与灵活性,非常适合用来制作可移动式机器人。在小车上安装控制电路与传感器,再辅以电机驱动,它就从一辆普通小车进化成了一辆智能小车。随着智能化技术的发展,全国电子竞赛与各省电子竞赛几乎每次都有智能小车方面的题目,比如飞思卡尔智能车竞赛。全国各大高校也都重视智能小车项目的研究,可见智能小车具有较大的研究意义。智能小车的主要应用场所有很多,比如,在仓储业、制造业中,智能小车可用作无人搬运车;在石油化工领域,智能小车可用于检测工业管道中存在的损伤、裂纹等问题;在特种行业中,智能小车可用于灾难救援、排爆灭火等;在军事方面,智能小车能较隐蔽地完成监视、安全巡逻等军事任务。智能小车能够实时显示时间、速度、里程,具有自动寻迹、寻光、避障功能,可控行驶速度、准确定位停车,并具有远程传输图像等功能,常见的智能小车如图6.1所示。世界上许多国家都在如火如荼地进行智能车辆的研究和开发。第一台智能小车是由斯坦福研究院(SRI)的NilsNi-ssen和Charlenrosen等人在1972年研制而成的,并取名为Shakey,如图6.2所示。20世纪50年

始,美

究,1954年

国BarrettElectronics公司研究开发了世界上第一台自主引导车系统AGVS,如图6.3所示。20世纪90年代开始,智能车辆进入了深入、系、大规模的研究阶段。我国开展智能车辆方面的技术研究较晚,开始于20世纪80年代。虽然我国在智能车辆技术方面的研究总体上落后于发达国家,并且存在一定程度的技术差距,但是我们也取得了一系列的成果,主要有:(1)2003年,由中国第一汽车集团公司和国防科学技术大学历时一年半合作研制的红旗CA7460自主驾驶轿车在湖南长沙试验成功,这标志着我国第一辆自主驾驶轿车的诞生。(2)南京理工大学、北京理工大学、浙江大学、国防科技大学、清华大学等多所院校联合研制了7B.8军用室外自主车,该车装有彩色摄像机、激光雷达、陀螺惯导定位等传感器。6.2技

理6.2.1系统硬件组成1.STM32微控制器智能小车智能小车控制系统将采集到的传感器信号送入STM32微控制器中,STM32微控制器根据采集到的信号做出不同的判断,从而控制小车的运动方向和运动速度。1)主控板STM32F103C8T6是ST旗下一款常用的基于Cortex-M3内核的微控制器,具有执行代码效率高、外设资源丰富等众多优点。该系列微控制器的工作频率设定在72MHz,内置高达128KB的内置Flash存储器和20KB的SRAM,具有丰富的通用I/O端口及时钟电路、复位电路和电源管理。存储器根据控制器指定的位置存进和取出信息。STM32微控制器内部结构如图6.4所示。STM32微控制器主系统主要由4个驱动单元和4个被动单元构成。4个驱动单元是:通用DMA1、通用DMA2、内核DCode总线和ICode系统总线。4个被动单元是:AHB到APB的桥,连接所有的APB设备、内部flash闪存、内部SRAM、FSMC,它们通过一个多级的AHB总线相互连接。2)红外传感器循迹模块红外传感器主要由红外发射管、红外接收管和部分电路组成。要做到4路循迹,则需要使用4个独立的红外传感器。红外传感器模块实物如图6.5所示,红外传感器模块电路如图6.6所示。3)其他传感器其他传感器如火焰识别传感器等,其工作原理为:火焰的热辐射具有离散光谱的气体辐射和连续光谱的固体辐射,不同燃烧物的火焰辐射强度、波长分布有所差异,但总体来说,燃烧物对应火焰温度的1~2μm近红外波长域有最大的辐射强度。火焰识别传感器是机器人专门用来搜寻火源的传感器,它利用自身对红外线十分敏感的特点,将火焰的亮点转化成高度变化的电平信号,输入到处理器中。火焰识别传感器如图6.7所示。4)驱动单元通常智能小车的驱动单元会选择小型电机,其中电机可分为无刷电机和有刷电机。相对而言,无刷电机拥有更好的性能,因为无刷电机没有损耗,并且噪声比较小。除此之外,电机的转速对车辆的行进速度至关重要。以正常成年人为例,其走路的速度为4~5km/h,大约为1m/s。如果选择常规的直径为4.2cm左右的轮胎,其

长=0.042×3.14=0.13188m,那

走1m的距离需要转7.58圈,也就是每秒转7.58圈,其速度为455转/min。目前市场上售卖的电机均能实现每秒万转的速度,因此在设计循迹小车时,必须增加减速箱来达成400~500转的速度目标。常见驱动单元如图6.8所示。5)驱动板驱动板是一种集成了多种功能的电路板,用于控制智能小车的运动和操作。不同的驱动板有着不同的功能,驱动板通常负责电力提供、传感器接口、数据存储、处理器承载、播放器功能等。图6.9所示为市场上某款驱动板的多重功能接口。6)红外避障模块常见的红外避障模块如图6.10所示,红外避障模块与传感器之间的连线如图6.11所示。2.基于树莓派控制智能小车树莓派是RaspberryPi基金会开发的一款微型电脑,是专为学习使用而设计的。它是一款基于ARM的微型电脑主板,以SD/MicroSD卡为内存硬盘,卡片主板周围有1/2/4个USB接口和一个10/100以太网接口(A型没有网口),可连接键盘、鼠标和网线,同时拥有视频模拟信号的电视输出接口和HDMI高清视频输出接口。以上部件全部整合在一张仅比信用卡稍大的主板上,具备所有PC的基本功能,只需接通电视机和键盘,就能执行如处理电子表格、处理文字、玩游戏、播放高清视频等诸多功能。RaspberryPiB款只提供电脑主板,无内存、电源、键盘、机箱或连线,可以把它看作只有信用卡大小的微型电脑,适配的系统为Linux发行版。智能小车的构成如下:(1)小车底板(2个)、电机(4个)、车轮(4个)、杜邦线、铜柱、螺丝若干。(2)超声波传感器(1个),舵机(1个)。(3)循迹传感器(3个)。(4)避障传感器(2个,左右)。(5)USB摄像头(1个),舵机(2个)。(6)树莓派4B主控板(2G版本)(1个)。(7)树莓派扩展板(1个)。(8)电池(1个)。(9)电压显示模块(1个)。(10)四轮驱动模块。四轮驱动模块的作用是驱动四个电机带动小车完成循迹的运动任务,其包含的控制内容有车辆的速度、车辆的状态(正转、反转、停止),并且管理电机的供电部分。图6.12所示为本文使用的树莓派四轮驱动板。其中包含了2个输出口、板载5V供电和12V供电、供电管理、逻辑输入口、2个通道。该驱动板可驱动2路直流电机,使能端ENA、ENB为高电平时有效,不同控制方式及直流电机状态如表6.1所示.若要对直流电机进行PWM调速,需设置IN1和IN2,确定电机的转动方向。然后对使能端输出PWM脉冲,即可实现调速。注意当使能信号为0时,电机处于自由停止状态;当使能信号为1,且IN1和IN2为00或11时,电机处于制动状态,阻止电机转动。6.2.2系统工作原理1.智能小车的循迹智能循迹小车系统最关键的核心在于判定兴建的路线,该功能通常借助外界已经给定的轨迹进行。常见的轨迹标识有循迹指示线、交通标识、交通道路、指示激光等,如图6.13~图6.16所示这些方式在本质上都是通过人工的方式构建准确有效、可以通过的道路,主动式地生成路线,随后让承载接收器的小车被动进行循迹活动。智能小车的循迹方法主要有以下三种:第一种是红外循迹法,主要依靠小车的红外探测器实现。红外探测器主要由红外发射器和红外接收器组成,其原理是红外发射器发射的红外光经地面反射,黑色区域的红外光被吸收,非黑色区域的红外光被反射,使得红外接收器接收到的红外反射不同,改变其输出电平,从而判断黑线所在。第二种是摄像头循迹法,利用摄像头读取车道信息,其获取的图像分为模拟信号和数字信号。第三种是激光循迹法,此种方法也是利用了黑色和其他颜色对红外线的吸收作用不同,但相较于红外循迹法检测的距离更远。2.超声波避障超声波是一种频率比较高的声音,指向性很强。超声波测距的原理是利用超声波在空气中的传播速度已知,测量声波在发射后遇到障碍物反射回来的时间,根据发射和接收的时间差计算出发射点到障碍物的实际距离。测距的公式为L=C×T其中,L是测量距离的长度,C是超声波在空气中的传播速度,T是测量距离传播的时间差,也就是发射到接收时间数值的一半。小车中的超声波避障实物如图6.17所示。本实验所使用的超声波模块的简明工作原理如下:(1)给超声波模块接入电源和地(供电)。(2)给单片机的触发引脚(trig)输入一个时长为20μs的高电平。(3)模块会自动发射8个40kHz的声波,同时回波引脚(echo)端的电平会由0变为1(此时应该启动定时器计时)。(4)当超声波返回被模块接收到时,回波引脚端的电平会由1变为0(此时应该停止定时器计数),定时器记下的这个时间即为超声波由发射到返回的总时长。(5)根据声音在空气中的速度(340m/s)即可计算出所测的距离。3.舵机模块的设计实现舵机简单地说就是集成了直流电机、电机控制器和减速器等,并将其封装在一个便于安装的外壳里的伺服单元。该单元可以有效地利用极简的输入信号实现电机转动。舵机上安装了一个电位器(或其他角度传感器),可检测输出轴转动的角度,控制板根据电位器的信息能比较精确地控制和保持输出轴的角度。舵机的主体结构如图6.18所示,主要组成部分有外壳(包括上壳、中壳和下壳)、齿轮组、电机、控制电路。其工作原理是:控制电路接收信号源发出的控制信号,并驱动电机转动;齿轮组将电机的速度进行倍速缩小,并将电机的输出扭矩进行倍速扩大,然后输出;电位器和齿轮组的末级一起转动,测量舵机轴转动的角度;电路板检测信号并根据电位器判断舵机转动的角度,然后控制舵机转动到目

度。图6.19所示为输入的信号控制舵机臂变动的过程简图。6.3实践操作与步骤为了更好地展示智能小车的循迹原理和设计,首先介绍常见的“树莓派”套件完成的智能循迹小车。6.3.1实验环境相对于单片机,树莓派的开发群体更加广泛,读者在使用本章节基于树莓派开发的智能小车后尚可使用该开发板进行其他章节功能的实现。实验环境如表6.2所示。6.3.2实验代码1.实验代码下载地址代码下载地址为:/undersail/easybot。2.代码文件目录结构(1)代码文件目录结构如下:(2).xml文件是已经储存好“红绿灯行进信息”的控制文件。其中的数据集文件包括:fullbody.xml,存放全部信息;stop_sign.xml,存放停止标志;traffic_light.xml,存放交通灯信息处理。(3).py文件为本实验所需

件:rc_driver.py,PC端

分;rc_control1.py,车辆控制信息;stream_client.py,相机传媒信息;ultrasonic_client.py,超声波控制信息。6.3.3实验步骤及结果1.导入相关的库RPi.GPIO是第三方对树莓派40个引脚进行控制的库。RPi.GPIO中有两种引脚编号方式。第一种是使用电路板编号系统,这在树莓派电路板上是以P1开头的。使用这种编号系统的优势是:不管电路板是哪种版本的,都不需要重新修改代码。第二种是使用BCM数字编号系统,这是一种低水平的工作方式,也是一种常用的芯片引脚编号方式。此部分关键代码如下:这段代码定义了一个名为″SingleMotor″的类,该类用于控制一个单个的直流电机。speed:电机的转速,默认值为35。freq:PWM信号的频率,默认值为50Hz。run_state:电机的运行状态,默认为″stop″。PWM:控制电机的PWM信号输出引脚。IN1:控制电机正转的GPIO输出引脚。IN2:控制电机反转的GPIO输出引脚。Motor:保存PWM控制器的实例,如果未使用PWM控制电机,则为None。在构造函数中,使用GPIO.setup()函数设置IN1和IN2为输出引脚。如果PWM不为None,则使用GPIO.setup()函数设置PWM为输出引脚,创建一个名为″Motor″的PWM控制器实例,并通过调用start()方法启动PWM控制器。″SingleMotor″类可以通过修改speed属性来控制电机的转速,并通过修改run_state属性来控制电机的运行状态(″stop″″forward″″backward″)。如果PWM不为None,则可以使用PWM控制器来实现对电机转速的控制。″SingleMotor″类中设置电机转速的代码如下:该方法中有一个名为″speed″的参数,表示要设置的电机速度,取值范围为0~100。在方法的第一行,使用″if″语句判断当前是否使用PWM控制电机,如果未使用,则返回当前电机的运行状态″run_state″。″SingleMotor″类中控制电机正转的代码如下:在调用该方法时,将电机的运行状态″run_state″设置为″up″,表示电机正在正转。在方法的第二行和第三行中,使用GPIO.output()函数分别将电机的正转引脚IN1设置为高电平、反转引脚IN2设置为低电平、从而控制电机正转。″SingleMotor″类中控制电机反转的代码如下:在调用该方法时,将电机的运行状态″run_state″设置为″down″,表示电机正在反转。在方法的第二行和第三行中,使用GPIO.output()函数分别将电机的正转引脚IN1设置为低电平、反转引脚IN2设置为高电平,从而控制电机反转。″SingleMotor″类中控制电机停止的代码如下:在调用该方法时,将电机的运行状态″run_state″设置为″stop″,表示电机停止运行。在方法的第二行和第三行中,使用GPIO.output()函数分别将电机的正转引脚IN1和反转引脚IN2都设置为低电平,从而控制电机停止。″CarWheel″类用于控制智能小车的轮子(由左轮和右轮组成),其代码如下:在类的构造函数″init″中,定义了以下属性:L_Wheel:左轮的″SingleMotor″实例。R_Wheel:右轮的″SingleMotor″实例。speed:小车的速度,默认值为35。run_state:小车的运行状态,默认为″stop″。在构造函数中,通过调用″set_speed″设置小车的速度,并将小车的运行状态设置为″stop″。″CarWheel″类中控制小车左转的代码如下:在调用上述方法时,将小车的运行状态″run_state″设置为″left″,表示小车正在左转。在方法的第二行和第三行中,先调用左轮的″stop″停止左轮的运行,然后调用右轮的″up″使右轮正转,从而控制小车左转。″CarWheel″类中控制小车右转的代码如下:在调用上述方法时,将小车的运行状态″run_state″设置为″right″,表示小车正在右转。在方法的第二行和第三行中,先调用左轮的″up″使左轮正转,然后调用右轮的″stop″停止右轮的运行,从而控制小车右转。2.超声波避障部分的代码实现在超声波驱动部分的实现代码中,首先需要导入gpiozero库,该库最关键的功能是提供树莓派GPIO设备的接口。gpiozero库包含了许多常见元器件的接口,同时也支持复杂的元器件,如各种传感器、模数转换器、全彩LED灯、机器人套件以及更多的元器件和套件。通过使用gpiozero库,用户可以方便地控制树莓派的GPIO设备,并实现各种有趣的项目,部分代码如下:根据超声波组件的使用功能对设备进行控制的代码如下:这段代码使用gpiozero库中的DistanceSensor类来创建一个名为″sensor″的距离传感器实例,该实例使用GPIO引脚21和20连接到树莓派上。3.舵机模块部分的代码实现首先在代码中导入所需的库(Adafruit_PCA9685),如图6.20所示,Adafruit_PCA9685是一款用于控制树莓派的16路PWM输出的PCA9685库。通过使用该库,用户可以轻松控制多个PWM设备,如舵机、电机、LED灯等。舵机控制代码如下:这段代码

了Adafruit_PCA9685库、RPi.GPIO库

和time库,其

中Adafruit_PCA9685库用于控制树莓派的PCA9685PWM设备,RPi.GPIO库

的GPIO引脚,time库用于进行与时间相关的操作。″CarServo″为表示小车舵机控制器的类,其代码如下:在类的构造函数″init″中,定义了以下属性:pwm_pca9685:用于控制舵机的PCA9685PWM设备实例。servo:字典类型的变量,用于存储各个舵机的信息。在构造函数中,通过调用″set_pwm_freq″设置舵机PWM设备的频率为50Hz;然后通过调用″set_servo_angle″依次设置3个舵机的初始角度,分别是摄像头舵机1、摄像头舵机2和超声波舵机。″set_servo_angle″用于设置指定舵机的角度,该方法接收两个参数,分别是channel和angle,其中channel表示舵机的通道号,angle表示设置的角度值,其代码如下:在调用上述方法时,首先进行参数检查,确保通道号在0~2的范围内;然后将angle限制在0~180的范围内;接着,根据新的角度值计算得到PCA9685PWM设备的实际数值date,并使用″set_pwm″方法将该值发送给舵机,控制其转动到指定的角度;最后将舵机的角度信息保存在″servo″字典中。如果传入的通道号不在0~2的范围内,则会输出错误信息。4.车辆的循迹部分首先执行导入库的操作,其代码如下:创建″getLaneCurve″函数,用于从输入的图像中提取车道曲率信息。该函数接收一幅图像作为输入参数,并通过调用″thresholding″将其转换为二值图像。转换后的图像将用于后续的车道线检测和曲率计算,其代码如下:这段代码定义了一个名为″thresholding″的函数,用于将输入的彩色图像转换为二值图像。该函数首先通过调用OpenCV库中的″cvtColor″将输入图像从BGR颜色空间转换为HSV颜色空间。然后通过设置白色阈值的上下限,使用″inRange″将输入图像中符合要求的像素值提取出来,生成一个二值图像。最后将生成的二值图像作为函数的返回值。通过这段代码可以使用颜色或边缘检测来获取路径。由于本文使用的是普通的A4纸来铺设道路,因此找到A4纸就意味着循迹成功,可以简单地使用颜色检测来找到路径。根据代码生成的Warped图像(经过透视变换后的图像)如图6.21所示。在生成透视变幻的Warped图像后,还需找到路径中的曲线,这时可以通过使用像素的总和来实现。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论