首页 百科知识 智能家居机器人导航程序设计

智能家居机器人导航程序设计

时间:2022-10-04 百科知识 版权反馈
【摘要】:本小节主要讲解智能家居机器人如何通过避障传感器进行导航,基本思路为在机器人上面安装3个红外避障模块,即正前方、左侧方、右侧方,如果前方有障碍物,那么机器人后退一段距离,然后往一侧运行;如果左侧方有障碍物,左侧传感器会感应到,机器人后退一段距离,往右侧运行;如果右侧有障碍物,则右侧传感器可以感应到,机器人也会后退一段距离,往左侧运行。其具体流程如图3.4.14所示。

本小节主要讲解智能家居机器人如何通过避障传感器进行导航,基本思路为在机器人上面安装3个红外避障模块,即正前方、左侧方、右侧方,如果前方有障碍物(即正前方有障碍物),那么机器人后退一段距离,然后往一侧运行;如果左侧方有障碍物,左侧传感器会感应到,机器人后退一段距离,往右侧运行;如果右侧有障碍物,则右侧传感器可以感应到,机器人也会后退一段距离,往左侧运行。其具体流程如图3.4.14所示。

图3.4.14 家居机器人导航流程

智能家居机器人导航程序范例如下:

int SNUM[3] ;

int INA = 4; //电机 A 正反转控制端

int PWMA = 5; //电机 A 调速端

int INB = 7; //电机 B 正反转控制端

int PWMB = 6; //电机 B 调速端

void motospd(int sp1,int sp2) //电机速度控制函数,括号内分别为左右电机速度值,

{ //范围-255~+255,正值为正转,负值为反转。

if(sp1〉0)

digital Write(INA, HIGH);

else

digital Write(INA, LOW);

if(sp2〉0)

digital Write(INB, HIGH);

else

digital Write(INB, LOW);

analog Write(PWMA,abs (sp1));

analog Write(PWMB,abs (sp2));

}

void setup(){

pin Mode(8, INPUT); //配置左传感器 IO 口为输入

pin Mode(14, INPUT); //配置中传感器 IO 口为输入

pin Mode(15, INPUT); //配置右传感器 IO 口为输入

pin Mode(INA,OUTPUT);

pin Mode(INB,OUTPUT); //配置电机驱动 IO 口为输出

}

void loop(){

SNUM[0] = digital Read(8);//左传感器赋值

SNUM[1] = digital Read(14); //中传感器赋值

SNUM[2] = digital Read(15); //右传感器赋值

if ((SNUM[0]==1)&&(SNUM[1]==1)&&(SNUM[2]==1))//所有传感器都没有检测到障碍物

motospd(100,100); //直行

if ((SNUM[0]==0)&&(SNUM[1]==1)&&(SNUM[2]==1)) //左传感器检测到障碍物

{

motospd(-100,-100); //后退

delay(50);

motospd(100,50); //右转

}

if ((SNUM[0]==1)&&(SNUM[1]==1)&&(SNUM[2]==0)) //右传感器检测到障碍物

{

motospd(-100,-100); //后退

delay(50);

motospd(50,100); //左转

}

if ((SNUM[0]==0)&&(SNUM[1]==0)&&(SNUM[2]==0)) //中传感器检测到障碍物

{

motospd(-100,-100); //后退

delay(50);

motospd(50,100); //左转

}

delay(50);

}

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈