移动机器人控制系统中的软件实现

时间:2022-05-29 10:23:29

移动机器人控制系统中的软件实现

摘要:本文叙述了基于MSP的移动机器人控制系统设计中软件设计的整体思想,给出了主程序、遥控模块、速度控制模块、传感器模块和寻迹的软件设计;在未知的环境中实现移动机器人从起点运动到目标点的任务,为研究在复杂环境(接近实际环境)的自主移动机器人打下基础。总的来说,机器人能成功地完成寻迹和避障。

关键词:移动机器人 模块设计 算法

中图分类号:TP242 文献标识码:A 文章编号:1007-9416(2012)05-0164-01

1、软件设计整体思想

本文的设计目标:在未知的环境中实现移动机器人从起点运动到目标点的任务。为研究在复杂环境(接近实际环境)的自主移动机器人打下基础。

首先,通过D键设置移动机器人的初始运行速度。接着,按下B键启动任务1。通过分析光敏传感器采集的信息不断调整机器人的运动方向,使其沿着地面铺设的黑色轨迹向目标点运动,当金属探测器检测到铁片时,电机停止。

同理,按下C键启动任务2。移动机器人基于MSV算法,在避开运行环境中的静止和移动障碍物后,向目标点运动,直到检测到铁片,电机停止运动。

2、主程序设计

本系统的控制程序采用模块化的设计思想。主程序主要完成的任务:

(1)系统设置和初始化,主要包括电源Source_Init()、电机Motor_Init()、捕获模块Capator_Init()、ADC12_Init()、LCD_Init、看门狗定时器WDT_TimerInit()等。

(2)采用查询方式判断,当P3.0为高电平时,执行暂停MotorHold();当P3.1为高电平时,执行寻迹WhiteBlackLine();当P3.2为高电平时,执行避障Obstacle();当P3.3为高电平时,执行菜单调用MenuEdit()。

3、遥控模块的设计

单片机的P3.0、P3.1、P3.2和P3.3分别对应遥控器的A键、B键、C键和D键。具体介绍菜单调用功能的实现:按下D键进入菜单编辑程序MenuEdit()。在此程序中,首先在液晶显示器的第一行显示“设定速度”,初始速度默认为第一级20cm/s(BWccr为0x6fff),且最大的设定速度为50cm/s。其中BWccr为寻迹时的速度控制量(用来控制TBCCRX)。不同的速度等级对应不同的BWccr。按一下A键,速度增加一级(即5cm/s),并在液晶显示器的第一行显示“设定速度为25cm/s”,第二行显示“BWccr为0x5fff”;按一下B键,速度减小一级(即5cm/s),并在液晶显示器显示相应的速度;速度设定完毕,按C键确认,并在液晶显示器的第二行显示“设定完毕”。

4、速度控制模块设计

实际速度的计算:通过单片机的P1.2和P1.3脚捕获左右光电码盘反馈的一个脉冲的时间来测量机器人的实际速度。

求取左轮实际速度的具体过程:当捕获/比较寄存器CCR1捕获到脉冲的上升沿后,产生中断请求,进入中断程序。在中断程序中,先把捕获模式改为下降沿捕获,并把CCR1的值赋给变量start_mp1(即记录上升沿发生的时刻),再让记录左轮码盘数的变量mapanum1加1;由于定时器A采用的是连续增计数模式,当计数到0XFFFF时,再计一次定时器就会溢出,溢出时使overflow1的值加1,以后每溢出一次,overflow1都相应的加1;当CCR1捕获到脉冲的下降沿后,产生中断请求,进入中断程序。在中断程序中,把CCR1的值赋给变量end_mp1(即记录下降沿发生的时刻),再调用速度测量函数SpeedTest1(),并把结果赋给变量Speed1,即求出了左轮的实际速度。右轮的求取方法相同。

模糊控制算法:由离线方式计算出的模糊控制表,直接以二维数组BlurTable[11][7]的形式存入单片机的程序存储器(即离线计算、在线查表)。以左轮为例,右轮类似。在模糊函数Blur()外部将0赋给E1old,调用以下语句:

E1=SpeedLeft-Speed1;

E1new=E1;

EC1= E1new-E1old;

E1old=E1new;

可以得到误差E1和误差变化EC1,将它们模糊化处理,再依据数组BlurTable[11][7],得到相应的控制量U。通过U来调整TBCCR1,最终实现对PWM波占空比的调整,以使移动机器人的实际速度快速的达到设定速度。

5、传感器模块设计

超声波传感器和光敏传感器采集到的信息,都通过ADC12进行处理。

在中断函数中,把转换结果读入results[6]。对于超声波传感器,先求出机器人(前方、后方、左方或右方)与障碍物的距离D[i],当D[i]大于20时,相应的标志位为0(即不认为有障碍物),否则标志位为1;对于光敏传感器的转换结果,先通过中位值滤波函数filter()进行处理,当结果大于50,设置相应的标志位为1(即认为相应的传感器采到黑线)。然后通过语句:if((BOTTOMSignalL==0)&&(BOTTOMSignalM==0)&&(BOTTOMSignalR==1))

LMR=0X01;

给出移动机器人整体的状态,例如上句可认为移动机器人严重偏左。

6、寻迹设计

执行任务1前,首先通过设置BWccr来设置寻迹时的速度。当B键按下,进入寻迹处理程序WhiteBlackLine()。如果LMR为0x01时,机器人严重左偏,使右轮停止,即P1OUT|=0x40;当LMR为0x02时,机器人正常行驶;当LMR为0x03时,机器人轻微左偏,使右轮速度稍微减小,即TBCCR2+=0x1f;当LMR为0x04时,即机器人严重右偏,使左轮停止,即P1OUT|=0x10;当LMR为0x05或0x07的情况不存在;当LMR为0x06时,即机器人轻微右偏,使左轮速度稍微减小,即TBCCR1+=0x1f。最后,当A键按下或检测到铁片,电机停止且定时器B停止计数,并相应的显示“机器人暂停”或“寻迹任务成功完成”。

项目名称

黑龙江省教育厅高职高专院校科研项目——基于MSP的移动机器人控制系统的研究(项目编号:12515156)。

上一篇:基于CC430F5135的无线低功耗竞价系统设计 下一篇:浅议软件开发框架技术