跟着科学技能的开展和社会的需求,移动机器人技能得到了迅速开展,正在渗透到各行各业中,使人们的日子愈加便当。如今以单片机为中心的移动机器人存在处理数据量有限、操控体系速度低、人机交互机制单一等缺陷,不能满意机器人多使命的要求。体系中增加协处理器的体系结构也得到了广泛应用,尽管能够办理多种传感器,但这种结构却增加了硬件的冗余度和杂乱度,见参考文献。为此,提出了以嵌入式处理器S3C2440为中心的多使命机器人操控体系。
1操控体系硬件规划
操控体系选用两轮独立驱动小车为移动式机器人渠道,后轮为一个尼龙万向轮。处理器为三星公司的S3C2440,体系主频最高可达533MHz,外接512MB的NANDFlash和64MB的SDRAM,支撑SPI、I2C、UART等接口,满意移动机器人操控体系的需求,如图1所示。
整个操控体系作业进程如下:语音辨认芯片LD3320经过SPI总线接口接人ARM处理器,处理器能够对辨认的成果进行剖析和汇总,并经过查表提取出操作人员的指令码;一起,处理器经过串口读取机器人当时的航向信息;超声波测距和红外线地上检测模块由处理器的GPIO引脚操控;经过操控两自由度的云台,能够进行多方位的超声波障碍物检测,运用LD3320模块的MP3播映功用播映所检测到的障碍物间隔和路况信息。操控体系根据传感器的数据和所辨认的操作人员的指令码,运用信息交融技能提取环境特征,经过途径规划技能作出决议计划,操控电机状况,终究操控机器人的姿势。
2操控体系软件规划
在软件规划中,将体系中所有要处理的使命划分为不同的、彼此独立的使命模块。根据体系的性能指标和技能要求,可将使命划分为:语音辨认、航向丈量与核算、超声波测距、电机操控、信息处理等使命。
2.1进程的创立与状况转化
移动机器人操控体系在初始化完结后,运用体系调用fock机制别离为语音辨认、航向丈量与核算和超声波测距等使命产生相应的子进程,完结方法如图2所示。进程创立成功后,操作体系会根据调度算法进行进程调度,这使体系内行进进程中,能够及时呼应语音指令。
2.2进程间通讯机制
在信息处理进程中,需求对不同使命回来的有用数据进行信息处理和交融。因为不同进程的数据段、仓库段是彼此阻隔的,因而,选用同享内存的进程间通讯方法,在程序中能够运用shmget从体系中取出一块未运用的物理内存并映射到用户空间,如图3所示。
在两个进程之间树立同享内存的详细完结进程如下:
①在调用fock()前,运用shmget创立新的同享内存,回来值为同享内存标识码:
shmid=shmget(IPC_PRIVATE,1,PERM)
//请求一个字节同享内存
②调用fock()函数,创立子进程,根据fock()的回来值区别父进程和子进程,并别离在两个进程中运用shmat映射一块同享内存,即答应当时进程拜访创立的同享内存:
if(fock())p_addr=shmat(shmid,0,0);
//将同享内存映射到父进程
else{c_addr=shmat(shmid,0,0);}//将同享内存映射到子进程
其间,shmid为shmget()函数的回来值,即同享内存标识码。
从用户的视点看,在父进程中能够对p_addr进行读写操作,实践拜访的是请求的同享内存。子进程则能够对c_addr进行读写,然后完结两个进程间的通讯。同享内存的映射和进程之间的联系,如图4所示。
2.3体系操控流程
在程序初始化完结后,为每项使命创立了相应的进程,并树立了同享内存,如图5所示。在每个进程中选用循环履行方法,语音辨认进程中运用select函数监控是否有辨认成果输出,并将辨认成果写入到相应的同享内存区。
航向丈量和核算进程循环读取陀螺仪的视点信息并存储。超声波测距进程在接收到信息处理进程的操控指令后进行测距并将数据回来至信息处理进程。信息处理进程交融了多传感器的数据,根据设定的途径规划计划,将操控信息传输到电机操控进程,完结机器人姿势的调整。
2.4语音辨认
在体系运转进程中,语音辨认进程独立完结对语音模块的初始化和读取辨认成果的使命,因而,能够及时呼应操作人员宣布的语音指令。程序中运用了select()函数监控read()是否可读。当语音辨认模块LD3320有辨认成果时,将在中止引脚输出高电平以触发体系中止,完毕驱动程序中的等候状况,一起应用程序能够经过read()函数读取LD332O的辨认成果,并写入到相应同享内存区M中。在没有中止时,read()函数将被堵塞,如图6所示。
运用select机制监控是否语音辨认成果,在超出等候时刻后,会退出等候并从头初始化语音模块LD3320,开释公共资源,这样也使得体系能够及时呼应LD332O的MP3播映功用,防止了在长期没有语音辨认成果时,体系进入卡死状况。
2.5航向丈量
为了使移动机器人能够沿指定的方向行进并能批改由外界搅扰要素产生的航向误差,体系选用陀螺仪航向丈量模块MPU-6050,该模块将其丈量的模拟量转化为可输出的数字量,并经过串口发送到S3C2440。体系经过read(fd_uartl,bur,10)函数读取相应串El,得到航向数据并写人到同享内存区S中。
2.6超声波测距
本体系选用渡越时刻法,超声波测距模块在收到发射操控信号时,换能器将宣布40kHz的接连脉冲信号。接收器的输出高电平时刻和间隔成正比,一起触发处理器的中止,上升沿中止敞开定时器,下降沿封闭定时器,运用处理器内部的定时器1丈量出输出信号的高电平的持续时刻△T,经过式(1)的核算,可得到检测间隔S:
S-V×△T/2(1)
式中,V为超声波的传播速度,常温下超声波在空气中的传播速度是340m/s。程序中根据所编写的驱动程序,运用ioctl(fd_chao,SEND_BEGIN)、ioctl(fd_chao,SEND_STOP)操控GPIO以完结超声波的发射和中止。体系中对某个方向接连丈量5次,进行中值滤波并将滤波后数据传递到信息处理进程。
2.7电机操控
移动渠道中选用L298驱动直流减速电机,渠道没有装置速度反应单元,简化了操控形式。程序经过ioctl()操控L298以完结电机的正回转以及中止操作。
在电机驱动程序中界说了相应GPIO的输入/输出方法:ioctl(fd,TURN_LEFT)中,fd为驱动程序的文件描述符;TURN_LEFT是指令掩码CMD,驱动程序根据指令掩码CMD对相应的GPIO赋值以操控L298的状况。
3途径规划和避障算法
根据含糊逻辑法,移动渠道能够在不确认环境中完结部分途径规划和避障。
3.1输入输出变量的含糊化
在途径规划进程中,信息剖析模块的输入量为移动渠道的行进方向信息、与障碍物之间的相对位移信息;输出量为移动渠道的旋转视点和平动位移信息。
①界说移动渠道与左边障碍物的间隔为DL、与右侧障碍物的间隔为DR、前方障碍物的间隔为DF。含糊子集界说为{S,M,B},别离表明小、中、大,相应的间隔从属度函数如图7所示。
②界说移动渠道和目标点之间夹角为了,含糊子集界说为{LB,LS,Z,RS,RB},别离表明左大、左小、零、有小和右大。相应的视点从属度函数如图8所示。
③移动渠道的旋转视点φ的含糊子集界说为{TIB,TLS,TZ,TRS,TRB}。别离表明左转大、左转小、不旋转、右转小、右转大,相应的输出从属度函数如图9所示。
3.2树立含糊操控规矩
在移动机器人远离障碍物或不存在障碍物的情况下,根据移动渠道的行进轨道,能够先对行进方向进行调整。当检测到障碍物挨近移动渠道时,移动渠道应改动行进轨道,防止产生磕碰。移动渠道的部分含糊操控规矩如表1所列。
3.3含糊推理宽和含糊化
根据间隔从属度函数,将超声波丈量得到的不同方位的间隔数据转化为含糊逻辑状况,再查找含糊操控规矩,查表得到相应的输出含糊量。
解含糊化是输出含糊量映射到动作行为的进程。含糊操控器对移动渠道的动作进行了分化并编码,将杂乱的动作分化为一系列简略动作的叠加,使得每一个输出含糊量对应一套动作。
例如在检测到前方有障碍物并确认左转时,能够将机器人动作分化为:撤退(左转,即先撤退,再左转。这样能够减小机器人触碰到前方障碍物的概率。
4试验测验
运用menuconfig指令为嵌入式Linux体系内核装备增加相应驱动程序后,进行make编译出产zImage文件。发动移动机器人体系并进入BIOS形式,将装备好的内核经过Supervivi东西烧写到NANDFlash。在体系发动后,装备Linux目录中的/etc/init.d文件,使体系发动后,主动运转所规划的程序。
假如体系初始化正常,将听到由语音模块宣布的提示声:“校准完结”。此刻,操作人员能够下达“行进”、“撤退”或“测距”等规划好的语音指令,机器人将依照操作人员的指令完结相应的动作,还能够经过语音模块播映出丈量到的间隔。
结语
体系运用了Linux体系支撑多使命和可裁剪的特色,结合处理器丰厚的接口资源,完结了多方位超声波测距、电机操控等功用,经过对多传感器信息的交融和剖析,为含糊逻辑法进行途径规划供给了判别根据。语音辨认功用使得机器人和操作人员之间的人机交互变得更灵敏便利。在此基础上,能够运用Linux操作体系强壮的网络功用,为进一步研讨服务机器人、机器人联网、机器人与机器人通讯等供给了一种计划。