循迹机器人设计.docx
《循迹机器人设计.docx》由会员分享,可在线阅读,更多相关《循迹机器人设计.docx(23页珍藏版)》请在冰豆网上搜索。
循迹机器人设计
目录
课程设计(论文)任务书..........................................................Ⅰ
课程设计(论文)成绩评定表......................................................Ⅲ
中文摘要.......................................................................VI
1设计任务描述1
1.1设计题目1
1.2设计要求1
1.2.1设计目的1
1.3基本要求1
2设计思路2
3软件流程图3
4各部分模块设计和选取4
4.1机械结构方案设计4
4.1.1车模结构特点4
4.1.2车模转向舵机机械结构的设计5
4.1.3电路板6
4.2视频信号采集方案6
4.2.1采集分析6
4.2.2采集时序7
4.2.3中断分析8
5硬件电路系统设计与实现10
5.1硬件电路设计方案10
5.2硬件电路的实现10
5.2.1以S12为核心的单片机最小系统10
5.2.2主板11
5.2.3电机驱动电路13
5.2.4摄像头13
5.2.5速度传感器13
6循迹小车软件设计15
6.1路径识别与自适应阈值计算15
6.2抗干扰处理15
6.3算法实现16
6.3.1偏航距离的计算16
6.3.2偏航角度的计算16
6.3.3曲率的计算16
6.4速度PID算法16
7模型车的主要技术参数18
8元器件清单19
小结20
致谢21
参考文献22
附录A软件流程图23
1设计任务描述
1.1设计题目
循迹机器人设计
1.2设计要求
1.2.1设计目的
1)了解机器人技术的基本知识以及有关电工电子学、单片机、机械设计、传感器等相关技术。
2)初步掌握机器人的运动学原理、基于智能机器人的控制理论,并应用于机器人的设计中。
3)通过学习,具体掌握循迹机器人的控制技术,并使机器人能独立执行一定的循迹任务。
1.3基本要求
1)要求设计一个能循迹(白底黑线或黑底白线,线宽25mm)的机器人;
2)要求设计机器人的行走机构,控制系统、传感器类型的选择及排列布局。
3)要有循迹的策略(软件流程图)。
2设计思路
根据此次课程设计的要求,我们选择以16位微控制器MC9S12DG128B单片机作为核心控制单元用于智能车系统的控制,介绍了机器人的行走机构、控制系统、传感器类型的选择及排列布局,并根据软件系统的特点简要的用流程图叙述了小车的软件设计。
最终使小车达到智能循迹的功能。
根据以上系统方案设计,循迹小车共包括七大模块:
MC9S12DG128B主控模块、传感器模块、电源模块、电机驱动模块、速度检测模块辅助调试模块。
各模块的作用如下:
MC9S12DG128B主控模块,作为整个智能车的“大脑”,将采集光电传感器、光电编码器等传感器的信号,根据控制算法做出控制决策,驱动直流电机和伺服电机完成对智能车的控制。
传感器模块,是智能车的“眼睛”,可以通过一定的前瞻性,提前感知前方的通道信息,为智能车的“大脑”做出决策提供必要的依据和充足的反应时间。
电源模块,为整个系统提供合适而又稳定的电源。
电机驱动模块,驱动直流电机和伺服电机完成智能车的加减速控制和转向控制。
速度检测模块,检测反馈智能车后轮的转速,用于速度的闭环控制。
辅助调试模块,主要用于智能车系统的功能调试、赛车状态监控等方面。
通过对这些模块功能介绍,结合我们在课上对机器人各项知识的了解,我们便可以将小车的大概思路整理出来,具体内容我们在后面的部分都会有相应说明。
3软件流程图
、
图3-11软件程序流程图
4各部分模块设计和选取
智能车系统主要包括以下模块:
S12单片机模块、驱动电机、舵机、转速反馈和CCD视频采集模块。
整体结构框图如图4.1所示。
图4.1智能车系统功能模块图
以MC9S12DG128为核心,设计寻线方案并尽可能的提高车速,是我这次课程设计课题的关键。
传统的寻线方案是使用“线型检测阵列”的红外传感器,这种方案实现简单,稳定性高,但只能获取有限的点信息,限制了更高级算法的应用,也限制了小车速度的进一步提高。
而摄像头获取的信息是面信息,不仅能获得当前小车的偏移量,而且能判断前方通道路面信息,为应用高级的控制算法提供了基础。
摄像头所能探测的路线信息远多于“线型检测阵列”探测到的,而且摄像头也有足够远的探测距离以方便对前方路况进行预判。
另外一方面16位单片机MC9S12的运算速度和自身A/D端口的采样速度,能够适应对黑白低线数摄像头的有效视频采样和对大量图像数据的处理。
4.1机械结构方案设计
4.1.1车模结构特点
本项目采用后轮驱动,前轮转向。
使用单个CCD摄像头进行导航,摄像头位于舵机正上方370mm处。
前方用2个传感器探测坡度,其位置位于小车前部100mm处,15度倾角向上偏起。
电路板置于小车腹部。
整个小车重心在中部偏后,有较好的稳定性。
底盘无改动。
经过改装后的车模参数如表4.2。
长
400mm
宽
200mm
高
350mm
重
1.16Kg
传感器个数
3个(1个CCD,2个红外)
其它伺服电机个数
0
检测精度、频率
25Hz
车模平均电流(匀速行驶)
800毫安
表4.1车模参数表
我们在实际调整时的改进办法:
1)、加长舵机柄,从而增大车行进中的车轮转向速度。
这样虽然在舵机转速不变的情况下夹块了车轮的转角速度,但是给舵机转向增大了负荷。
在实际调试中,出现过舵机里面齿轮被损坏的情况。
2)、由于前轮轴和车轮之间的间隙较大,对车高速转向时的中心影响较大,会引起高速转向下车的转向不足。
而且这里是规则中严禁改动的部分,所以我们只能调整前轮内倾角来弥补车轮在高速转弯中遇到的转向不足的问题。
在实际调试中,我们发现适当增大内倾角可以增大转弯时车轮和地面的接触面积,从而增大车了地面的摩擦程度,使车转向更灵活,减小因摩擦不够而引起的转向不足的情况。
3)、底盘适当降低,在可以过坡道的情况下,尽量降低底盘,从整体上降低车的中心,使车在转弯时可以更快速。
4.1.2车模转向舵机机械结构的设计
转向系统在车辆运行过程中有着非常重要的作用,合适的前桥调整参数可以保证在车辆直线行驶过程中不会跑偏,即保证车辆行驶的方向稳定性;而在车辆转向后,合适的前桥可以使得车辆自行回到直线行驶状态,即具有好的回正性。
基于这个原因,前桥参数调整及转向系统优化设计必然会成为智能车设计中机械结构部分的重点,在实际操作中,我们通过理论预测进行方案的可行性分析,然后做出实际结构以验证理论数据。
图2.2改进后的舵机转向机构及安装图
在最终设计的这套机构中,我们综合考虑了速度与扭矩间的关系,尽量减小舵机的负荷,并根据模型车底盘的具体结构,简化了安装方式,实现了预期目标,不过该机构仍存在自身重量太大的问题,我们将在以后的调试过程中逐渐改进。
4.1.3电路板
长
160mm
宽
77mm
所有电容总容量
小于1500uF
除MC9S12DG128外的主要芯片
LM2940,MMA7260,MC33886,LM1117,LM1881
共用到一块PCB电路板,即车身主板(包括MCU,调试电路,电源电路,红外传感器,加速度传感器电路,测速传感器等),其外形尺寸见表4.3。
表4.3电路板参数表
4.2视频信号采集方案
4.2.1采集分析
本系统所使用的CCD摄像头输出的是PAL制式的视频信号,其一幅图像包含575个图像行,每行最多有767个点(按荧光屏的长宽比为4:
3计算),因此其图像解析度能达到575×767≈440000个象素。
而对于智能车系统而言,由于受MC9S12DG128单片机内存和运算速度的限制,这么大解析度的图像是无法处理的。
因此必须降低图像的分辨率。
我们最终确定采集图像的分辨率为48×40,即每行采集48个点,每幅图像采集40行。
4.2.2采集时序
具体说来,采集一场的流程是这样的:
第一步,LM1881分离出的奇场同步信号在DG128的H口产生中断。
根据PAL规范,此时意味着还有22行(约1408μs,视LM1881的信号延时而定)将开始第一个数据行。
为确保正确的采集到数据,使定时器定时23.5行(23.5×64μs=1504μs),定时结束后,开启行中断,准备采集数据。
第二步,定时器定时1504μs时间到,此时开启行通道,允许中断,并使控制ATD转换的行计数器归零,以标志一幅图像的开始。
第三步,大约32μs(0.5行)后,行中断到。
由于一场中有280多个行,但ATD只采集其中的40行,为此设置了一个行计数器,每次行中断都将该计数器加一,当该计数器的值与预存数组里的某个数相等时,表示该行应该采集。
根据PAL的规范,在数据行中,行同步信号后6μs(上升沿,如果选下降沿有效,应该是10.3μs)才会有真正的图像数据出现,并持续52μs到该行结束。
为此在该行的行中断中使定时器定时6μs,定时时结束后才能开始采集。
第四步,定时器定时6μs时间到。
此时应立即开始ATD采集。
由于ATD是按序列采集的,一个序列可以连续采集1~8个点,并可设置是单序列还是扫描方式。
每个序列采集完成后将产生一次ATD中断。
为减少ATD中断次数,在ATD初始化中已设置转换序列长度为8。
此时以扫描方式开启ATD,采集48个点需要6次ATD中断。
第五步,每隔约8μs,ATD中断发生一次。
该步中最重要的就是把ATD的数据转移到存储图像的数组中。
由于一行中ATD要采集6个序列,因此要记录已经采集的序列数,每次进入ATD中断,都使之加一,当序列数为6时,标志着一个行已经采集完了。
一行采集完后将采集行计数器(注意:
不是第三步中提到的行计数器)加一,并应停止ATD,但是S12中并没有使ATD停止直接方法,唯一的办法是使ATD以单序列采集方式再采集一次。
但是这次完成后仍然会发生中断,中断处理程序可根据采集的序列数来判断是否是这种额外的情况,如果是,中断处理程序除了读一下ATD数据寄存器以清中断标志位之外,并不需要做任何事。
第六步,ATD中断不断的向图像数组中写入数据,直到行计数器计到40。
此时意味着一幅图像数据已经采集完成。
此时应关掉行中断,以免其产生额外动作。
第七步,偶场中断到。
其实就是奇场同步信号的下降沿,如果没有进行相应设置和接线,将没有这个中断。
PAL制式的信号中,奇场同步信号和偶场同步信号以20ms的间隔交替出现,因此可以将此两种信号作为小车调整的基准时间。
此后直到下一个奇场中断到来,开始另一场的采集。
可见,程序的运行完全是由各个中断的来推动的。
程序的流程图如图4.2。
4.2.3中断分析
视频采集共涉及到6个中断:
奇场中断、偶场中断、行中断、定时器中断1、定时器中断2、ATD中断。
但是只有3个硬件中断源,即H口中断、定时器中断和ATD中断,对应只有3个中断服务程序。
为此需要在中断程序中区分中断的类型。
1)H口中断
H口中断服务程序要区分是奇场中断、偶场中断还是行中断,这是通过寄存器的中断标志为来实现的。
2)定时器中断
定时器中断要区分是定时了多少时间。
为此我们设置了一个“服务标志”,不同的定时时间设置不同的服务标志,以使定时器中断程序做不同的处理。
3)ATD中断
ATD中断的首要任务是及时把结果寄存器中的值转移出来,因为ATD是以扫描方式不停的在采集转移不及时,新的结果会把原来的结果覆盖掉。
然后ATD中断程序需要根据一系列计数器的值计算本次采集结果对应的图像位置,然后保存到数组中。
最后ATD中断还要判断何时一行结束、何时一场结束。
图4.2视频采集流程图
5硬件电路系统设计与实现
5.1硬件电路设计方案
从最初进行硬件电路设计时我们就既定了系统的设计目标:
可靠、高效、简洁,在整个系统设计过程中严格按照规范进行。
可靠性是系统设计的第一要求,我们对电路设计的所有环节都进行了电磁兼容性设计,做好各部分的接地、屏蔽、滤波等工作,将高速数字电路与模拟电路分开,使本系统工作的可靠性达到了设计要求。
高效是指本系统的性能要足够强劲。
我们主要是从以下两个方面实现的:
1、采用外部A/D转换器实现高速A/D转换,大大提高了图像采集的分辨率;
2、使用了由分立元件制作的直流电动机可逆双极型桥式驱动器,该驱动器的额定工作电流可以轻易达到100A以上,大大提高了电动机的工作转矩和转速。
简洁是指在满足了可靠、高效的要求后,为了尽量减轻整车重量,降低车体重心位置,应使电路设计尽量简洁,尽量减少元器件使用数量,缩小电路板面积,使电路部分重量轻,易于安装。
我们在对电路进行详细、彻底的分析后,对电路进行了大量简化,并合理设计元件排列和电路走线,使本系统硬件电路部分的重量、面积都达到了设计要求。
5.2硬件电路的实现
整个智能车控制系统是由三部分组成的:
S12为核心的最小系统板、主板、电机驱动电路板。
最小系统板可以插在主板上组成信号采集、处理和电机控制单元。
为了减小电机驱动电路带来的电磁干扰,我们把控制单元部分和电机驱动部分分开来,做成了两块电路板。
5.2.1以S12为核心的单片机最小系统
单片机最小系统板使用MC9S12DG128单片机,112引脚封装,为减少电路板空间,板上仅将本系统所用到的引脚引出,包括一路AD转换接口,两路PWM接口,一路计数器接口,一路外部中断接口,17路普通IO接口。
其他部分还包括电源滤波电路、时钟电路、复位电路、串行通讯接口、BDM接口。
为提高系统工作稳定性,我们使用有源晶体振荡器为单片机提供时钟。
为简化电路,我们取消了复位按键和串行通讯接口电路中的TTL电平与RS-232电平转换电路。
单片机引脚规划如下:
PA口:
外部AD转换器并行数据读入。
PAD1:
奇偶场信号输入
PB0-PB3:
调试LED。
PB4-PB5:
模式选择用拨码开关。
PB6:
启动开关。
PB7:
调试开关。
IRQ:
行同步脉冲输入信号。
PT0:
光电编码器脉冲输入信号。
PWM7:
舵机角度控制信号输出。
PWM5:
电机速度控制信号输出。
5.2.2主板
主板上装有组成本系统的主要电路,它包括如下部件:
电源稳压电路、视频同步分离电路、外部A/D转换器电路、摄像头接口、舵机接口、电机驱动器接口、编码器接口、键盘接口、监控模块接口、电源接口、单片机最小系统板插座、跳线、指示灯、按键、开关等。
1)电源稳压电路
本系统中电源稳压电路仅为一路+5V稳压电路,为整个智能模型车自动控制系统中除后轮驱动电机和转向舵机外的所有设备供电。
由于整个系统中+5V电路功耗较小,为了降低电源纹波,我们决定使用串联型稳压电路,另外,后轮驱动电机工作时,电池电压压降较大,为提高系统工作稳定性,必须使用低压降电源稳压芯片,常用的低压降串联稳压芯片主要有LM2940和LM1117,LM2940压降虽然比LM1117更低,但是电源纹波较大,所以我们最终选择LM1117设计电源稳压电路。
电源稳压电路原理图如图3.2.
图5.1电源稳压电路
2)视频同步分离电路
我们的智能模型车自动控制系统中使用黑白全电视信号格式CMOS摄像头采集通道信息。
摄像头视频信号中除了包含图像信号之外,还包括了行同步信号、行消隐信号、场同步信号、场消隐信号以及槽脉冲信号、前均衡脉冲、后均衡脉冲等。
因此,若要对视频信号进行采集,就必须通过视频同步分离电路准确地把握各种信号间的逻辑关系。
我们使用了LM1881芯片对黑白全电视信号进行视频同步分离,得到行同步、场同步信号,具体原理不再赘述。
视频同步分离电路原理图5.2所示。
图5.2视频同步分离电路
3)外部A/D转换器电路
由于摄像头输出的黑白全电视信号为模拟信号,所以必须经过A/D转换之后才能由单片机进行处理。
虽然S12单片机具有A/D转换器的功能,但是速度较慢。
实际使用发现,在将单片机超频并且降低A/D转换质量之后,每行图像仍只能采集78个点,使得图像分辨率不高,赛道检测信息量不足。
为此,我们使用TLC5510芯片制作了外部A/D转换器。
除以上三部分外,主板上还具有摄像头、舵机、电机驱动器、编码器、键
图5.3外部A/D转换器电路
盘、监控模块、电源、单片机最小系统板等设备的接口,并准备了若干指示灯、按键、跳线、开关等用于系统调试。
5.2.3电机驱动电路
电机驱动板为一个由分立元件制作的直流电动机可逆双极型桥式驱动器,其功率元件由四支N沟道功率MOSFET管组成,额定工作电流可以轻易达到10A以上,大大提高了电动机的工作转矩和转速。
该驱动器主要由以下部分组成:
PWM信号输入接口、逻辑换向电路、死区控制电路、电源电路、上桥壁功率MOSFET管栅极驱动电压泵升电路、功率MOSFET管栅极驱动电路、桥式功率驱动电路、缓冲保护电路等。
5.2.4摄像头
本智能车寻线采用CMOS图像传感器方式,普通单板摄像头。
普通CMOS图像传感器通过行扫描方式,将图像信息转换为一维的视频模拟信号输出。
具体参数如下:
摄像头参数:
320线;
照度:
0.5LUX0.01LUX;
输出制式:
PAL制式标准视频信号;
镜头及视角:
3.6mm92°;
供电电压/消耗功率:
9V100mA;
5.2.5速度传感器
智能车在实际速度控制中对反应车速的控制信号波形要求不是太高,因此我们在满足比赛要求的基础上尽量简化电路,使用自制的光电编码器来测速。
我们使用线切割在直径为30mm的圆盘周围加工出32个细缝,自制了一个32线的光电编码器。
我们使用红外光电对射管作为采集码盘脉冲的传感器。
电路如图3.7所示。
图3.7光电编码器电路
6循迹小车软件设计
在控制算法中,主要用到了以下三方面的内容:
摄像头循线控制算法,记忆解决道路S型控制算法和PID速度控制算法。
其中循线控制算法用来控制舵机的转向,记忆控制算法主要用来解决S型,PID控制算法主要用来控制智能车的快速加速、减速和速度的平稳。
6.1路径识别与自适应阈值计算
所谓路径识别,简单的理解就是把图像中反映路径的部分提取出来。
这是一个
图像分割的过程。
图像分割是计算机进行图像处理与分析中的一个重要环节,是一种基本的计算机视觉技术。
在图像分割中,把要提取的部分称为“物体(Object)”,把其余的部分称为“背景(Background)”。
分割图像的基本依据和条件有以下4个方面:
1)分割的图像区域应具有同质性,如灰度级别相近、纹理相似等;
2)区域内部平整,不存在很小的小空洞;
3)相近区域之间对选定的某种同质判据而言,应存在显著的差异性;
4)每个分割区域边界应具有齐整性和空间位置的平整性。
图像分割的基本方法可以分为两大类:
基于边缘检测的图像分割和基于区域的图像分割。
这种算法的特点是运算量小,但是能跟踪环境光线的逐渐变化。
由于环境光线不管在时间上还是空间上都是逐渐变化的,所以这种分割算法产生严重错误的概率极小,小于1/10000。
6.2抗干扰处理
抗干扰处理包括以下方面的内容:
1)消除信号产生和传输的过程中造成的噪声;
2)消除赛道不理想或光线不均匀形成的干扰;
3)消除赛道中的交叉线、断续线;
4)识别起跑线。
信号产生和传输的过程中造成的噪声具有普遍性,但是只有当其非常严重时才对路径的识别造成影响。
所以采取以下滤波算法:
当某点的灰度值与其左边和右边点的灰度值的差同时大于某个正阈值或同时小于某个负阈值时,认为该点是干扰点,取其左右两边灰度值的平均值作为该点的灰度值。
这种算法的实质是搜索连续的黑线。
因为赛道是连续的,而干扰却大部分是离散分布的。
6.3算法实现
6.3.1偏航距离的计算
由于循迹机器人已经获得了通道道中心线的位置,所以计算偏航距离的问题是选取何处的中心线的距离为当前的偏航距离。
控制算法的执行周期为40ms,如果小车的速度为2m/s,则在两次控制算法的执行中间,小车要前进8cm,小车所处的环境将发生比较大的改变,所以赛车的控制只能算是半实时控制,这是所有使用摄像头作为主要寻线传感器的参赛队都避免不了的问题。
6.3.2偏航角度的计算
计算偏航角度的实质是直线拟合问题,因为赛道中心线所在的直线确定了,而直线的斜率与偏航角度一一对应。
直线拟合最有效的方法是最小二乘法,但是直接应用存在一个问题,即如何确定进行直线拟合的区间?
在整个成功识别出通道的区间内进行直线拟合显然是欠缺考虑的,因为在弯道的情况下,这种方法拟合出的是一条弦线,而不是当前该弯道处的切线。
摄像头视野越大,弯道曲率越大,弦线偏离切线的程度也就越大。
为了能够在直道和弯道上都能正确的拟合出正确的直线,我们采用了直线检测的方法,即首先根据残差的大小确定直线的范围,然后在这一范围内进行直线拟合。
6.3.3曲率的计算
首先对获得的路径进行滤波,使得路径尽可能平滑,然后取其两个端点和中间点,计算这3个点组成的三角形的外接圆的半径,半径的倒数就是这段路径的曲率。
经过多次实验,这种方法的误差一般不大于20%,对智能车的控制来说已经足够了。
6.4速度PID算法
根据偏差的比例(Proportional)、积分(Integral)、微分(Derivative)的线性组合进行反馈控制(简称PID控制),数字PID控制算法是电机微机控制中常用的一种基本控制算法[9]。
在连续系统中,模拟PID调节器是一种线性调节器,控制系统原理框图如图5.10。
图5.10PID控制系统原理框图
控制规律为:
(5.1)
式中:
:
比例增益,
的倒数称为比例带;
:
积分时间常数;
:
微分时间常数;
:
控制量;
:
偏差,等于给定量与反馈量的差。
在计算机控制系统中,数字PID控制算法通常又分为位置式PID和增量式PID本次设计中,我们采用增量式PID。
7模型车的主要技术参数
智能小车基本参数
长
28.5cm
宽
16.3cm
高
26.1cm
车重
0.925kg
功耗
空载
8.2W
带载
大于15W
电容总容量
1186.30612uF
传感器
红外对射管
1个
CMOS摄像头
1个
除了车模原有的驱动电机、舵机之外伺服电机个数
0
通道信息检测
视野范围(近/远)
25/160cm
精度(近/远)
2/12.5mm
频率
50Hz
8元器件清单
驱动电机
速度控制
1路16位的PWM输出
PWM01
电源
7.2V供电
驱动舵机
转向控制
1路16位的PWM输出
PWM23
电源
7.2V电源
2个传感器A
采集道路信息
PORTT的2位
电源
5V电源
1个传感器B
速度反馈
1个脉冲累加器外部引脚
PACN32
电源
5V电源
摄像头
图像采集
A/D端口
AD0通道
3个中断引脚
PH0、PH1、PH2
电源
7.2V电源
串口
和电脑数据交流
接收RX口和发送TX口
SCI0
控制板
程序开始按钮
1个I/O端口
PORTK_BIT4
复位按钮
1个
指示灯
3个I/O输出口
PORTK_BIT0~PORTK_BIT2
小结
短短的一周就这样过去了,大三最后一个星期,大三最后一次课设,就在这样一个炎炎夏日结束了。
想到这里,思绪量多,感慨良多。
大学里已经经历了好多次课