zkb2分别为ENA和ENB的占空比,取值0?50之间。
图5.2
两组PWM波产生程序流程图
具体的程序设计如下: //初始化定时器 中断 void init() {
TMOD=0x01; TH0=0xFF; TL0=0xF6; EA=1; ET0=1;
26
}
TR0=1;
//中断函数+脉宽调制 void timer0() interrupt 1 { }
5.2 台阶检测
清洁机器人在执行清洁工作时,由于对环境没有认知性,在台阶和楼梯边上有可能会跌倒,而损坏本身电子元件。为了更好地保护清洁机器人,本设计在清洁机器人的底盘前方设置了两个红外传感器器来检测台阶,当其中一个传感器检测到有信号输入,单片机会做出反应,使行走电机停止,然后后退一段距离,而后原地中心旋转一个角度,继续前行,避开台阶和楼梯。
程序设计如下: //台阶检测 void step_deal()
27
TH0=0xFF; //恢复定时器初始值 TL0=0xF6; t++; if(t>=50)
{t=0;}
if(t<=zkb1) //当小于占空比值时输出低电平
{ENA=0;} //高于时是高电平,从而实现占空比的调整
else
{ENA=1;}
if(t<=zkb2)
{ENB=0;}
else
{ENB=1;}
{
}
5.3 避障处理
主动回避障碍是清洁机器人的一个基本的安全运动要求,也是机器人能否实现自主作业的关键。 5.3.1 未知环境探测
清洁机器人被置于一个未知环境下,对环境一无所知,不存在任何先验信息, 包括环境大小、形状、障碍物位置等等,而且环境中不存在如路标等人为设定的参照物。这就需要避障系统首先要求对清洁机器人四周环境进行探测,显然,单一传感器是不能满足要求的。考虑到传感器价位和技术水平的实际情况,用红外传感器和碰撞传感器组成传感器网络对周围环境进行探测是较好的选择,红外传感器有一定的预瞻能力,机械式碰撞传感器性能可靠。关于这两种传感器在第三章已有详细介绍,此处不再赘述。利用红外传感器可以及早地发现远处存在的障碍物,再综合碰撞传感器的探测情况,依据一定的算法,对传感器给出的不确定信息融合,可以得出较为真实的环境状况,从而有利于机器人做出正确的判断。
if(tj_1==1||tj_2==1) { }
delay(5);
if(tj_1==1||tj_2==1) { }
back(); delay(5); turn(); delay(5);
28
5.3.2 实时避障方法的实现
在室内环境中,不仅障碍物形状复杂、摆放零乱,而且由于人员的走动等经常会带来运动的障碍物,这样,为保证机器人能够在室内环境中及时、安全、有效的避障显得尤其重要。
对于避障问题的研究,每年都有许多新的方法或者对传统方法的改进出现,比较常见的方法有势场法、栅格法等。由于本文所涉及到的机器人行为,不需要机器人到达精确的目标位置,因此本文给出的是实际应用中一种简单有效的基于多传感器的反应式实时避障策略,它具有快速、实时、高效的特点,特别适合在未知动态环境中进行避障。
部分程序设计如下: void bizhang() {
if(from==1&&left==1&&right==1&&p_left==1&&p_right==1) //没有障碍 { }
if(p_left==0) //左边碰撞传感器有信号 { }
if(p_right==0) //右边碰撞传感器有信号 {
29
物
go();
delay(5); if(p_left==0) { }
back(); delay(5); turn_R(); delay(5);
}
delay(5); if(p_right==0) { }
back(); delay(5); turn_L(); delay(5);
if(from==0&&left==0) //前、左红外传感器有信号 { }
if(from==0&&right==0) //前、右红外传感器有信号 {
delay(5);
if(from==0&&right==0) { }
30
delay(5);
if(from==0&&left==0) { }
back(); delay(5); turn_R(); delay(5);
back(); delay(5); turn_L(); delay(5);
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库清洁机器人系统设计 - 图文(7)在线全文阅读。
相关推荐: