当前位置:文档之家› 一种用于空巢老人陪护的远程医疗服务机器人设计——软件及控制系统设计

一种用于空巢老人陪护的远程医疗服务机器人设计——软件及控制系统设计

一种用于空巢老人陪护的远程医疗服务机器人设计——软件及控制系统设计邓陈凯(淮阴工学院)摘要:本文以淮阴工学院2013级毕业设计为背景,介绍了助老机器人的控制系统的软硬件结构和开发流程。

该机器人主要机架由周义强同学设计制作,以Freescale半导体公司生产的MC9S12XS128为核心控制器,在CodeWarrior 5.1 开发环境中进行软件开发。

整个系统涉及机械结构调整、传感器电路设计及信号处理、控制算法和策略优化等多个方面。

为了提高助老机器人的行驶速度和可靠性,对比了不同方案的优缺点,并结合PC调试平台进行了大量底层和上层测试,最终确定了现有的系统结构和各项控制参数。

关键词::Freescale 助老机器人摄像头 PID控制1 助老机器人设计制作思路及技术方案概要说明1.1 助老机器人整体框架助老机器人是在车模结构的框架上,搭上硬件结构,通过单片机的处理能力,将传感器采集到的信息处理分析后得出运算结果,指挥电机和舵机做出适应实际需求的一套系统。

其硬件结构框架如下图:图1.1 硬件结构框架示意图1.2 周围环境检测周围环境的检测是机身控制的基础,为了提高行驶的稳定性和优化行车线路,很多设计都把重点放在使传感器感知更远的距离上、获取更多的信息。

现在我们采用的为摄像头方案,这种方案获取的赛道信息丰富,但电路设计和软件处理较复杂,且信息更新速度较慢。

一方面,摄像头所能检测的路况信息远多于“线型检测阵列”所能检测的信息,有利于区分各种道路类型;另一方面,摄像头检测范围调整灵活,可以提供足够远的预判距离。

实际上,通过“超频”和提高代码效率,并选择合适的图像处理算法,使用比赛规定的单片机完全可以对低线数黑白摄像头的视频信号进行采样和处理,有效识别出路况信息。

1.3 机身控制助老机器人应根据前方道路类型和当前机身的位置误差及速度,对舵机转角和驱动电机PWM 波的占空比进行及时调整。

关于这方面的控制方案有PID 控制、Bang-Bang 控制和模糊控制等。

电机速度闭环控制使用PID 控制。

2 控制电路设计说明硬件组成:主板、驱动板、摄像头、旋转编码器、伺服电机和直流电动机2.1 主板主板集成了机器人控制的所有电路,稳定性很重要。

2.1.1 CPU 选型我们选用了FreescaleMC9S12XS128 作为微控制器,前期考察了MC9S12XS128,以下简称S12。

S12 是一款常用的16 位MCU,有丰富的片内资源,其资料丰富。

S12 的片内RAM 为8KB,能基本满足摄像头图像采集时保存多个帧缓冲区的需要;S12 的最高CPU 总线频率为40MHz,可以将其超频至80MHz 甚至更高进行使用,然而这是以牺牲稳定性为代价的。

采用中断进行软件计数会消耗大约10%的CPU 资源;采用外部计数电路会导致电路臃肿,体积膨胀;采用时分复用计数端口的思路则会牺牲速度测量的准确性。

此外,S12 不具有外部总线,为了对摄像头信号进行采集,只能使用片内的AD 转换器,其转换速率较低,导致图像每行的点数不能满足需求。

如果需要输入片外数字信号,则有两种思路:使用同步信号和不使用同步信号。

使用同步信号会造成速度过慢的问题,不使用同步信号则需要将指令周期与收到数据的周期进行精确的对齐,稍有差错就会采集到无效的数据。

图2.1.1 核心板实物2.1.2 电源模块设计电源是一个系统正常工作的基础,电源模块为系统其他各个模块提供所需要的能源保证,因此电源模块的设计至关重要。

机器人系统中接受供电的部分包括:传感器模块、单片机模块、电机驱动模块、伺服电机模块等。

设计中,除了需要考虑电压范围和电流容量等基本参数外,还要在电源转换效率、噪声、干扰和电路简单等方面进行优化。

可靠的电源方案是整个硬件电路稳定可靠运行的基础。

机器人全部硬件电路的电源由7.2V,2A/h 的可充电镍镉电池提供。

由于电路中的不同电路模块所需要的工作电流容量各不相同,因此电源模块应该包含多个稳压电路,将充电电池电压转换成各个模块所需要的电压。

机器人所需电源如图2.1.2所示。

图2.1.2 电源整体原理图2.1.2 按钮和蜂鸣器图 2.1.4 按钮、蜂鸣器电路图2.1.3 外围接口主板需要和一些外部设备进行连接,因此需要留出一些接口。

由于这是一个私人使用的小系统,接口不需要遵循公共的标准,只要定义清晰、插拔方便、不容易混淆或反插即可。

需要留出的接口如下:一个JTAG 接口,14pin,用于连接JTAG、OSBDM 等烧写器对单片机进行编程。

一个带电源的SPI 接口,6pin,用于连接支持SPI 总线协议的外围设备。

一个带电源的SCI 接口,4pin,用于连接支持SCI 总线协议的外围设备。

一个带电源输入、2 路GPIO 及4 路PWM 信号输出的接口,10pin,用于连接电机驱动板,并从电机驱动板获取电源。

一个带电源和一路PWM 的接口,3pin,用于连接舵机。

2.2 驱动板单片机输出使用两种模拟电平来表示0 和1 的数字信号,然而输出电流很小,无法直接连接直流电动机之类的大电流器件,因此需要使用驱动电路。

为了能让直流电动机在四个象限内工作,需要使用H 桥电路。

为了缩短开发周期,我们使用了成熟的BTS7960B 芯片进行电机驱动。

一片BTS7960B 是一个半桥,使用两片BTS7960B 芯片组成一个H 桥驱动一个电机。

图2.2 BTS7960 功能示意图上图中两片BTS7960B 组成的电路有三路输入信号,分别对应使能和两个半桥。

我们将使能信号连接至S12的IO 口,半桥控制信号连接至S12的PWM 端口,通过调节输出PWM 信号的占空比来实现对电机力矩的控制,上层通过一个闭环反馈实现速度控制。

2.3 摄像头数字摄像头是一种数字视频的输入设备,利用光电技术采集影像,而不像视频采集卡那样首先用模拟的采集工具采集影像,再通过专用的模数转换组件完成影像的输入。

数字摄像头的优点是使用简单,输出即为数字信号。

模拟摄像头多为CCD 的,按不同档次分辨率不同。

与数字摄像头同级的模拟摄像头一般有较高的分辨率,较好的实时性。

主板上具有模拟视频输入接口,因此我们选择模拟摄像头。

经过一些比较,我们选择了一款模拟针孔CCD 摄像头。

图2.3 摄像头安装位置2.4 NRF24L01无线通信模块该射频模块集成了NORDIC 公司生产的无线射频芯片NRF24L01支持2.4GHz 的全球开放ISM 频段,最大发射功率为10dBm ,功耗低,等待模式时电流消耗为22uA 。

图2.4 无线通信模块示意图2.5 伺服电机舵机接受脉冲信号作为控制信号。

舵机每捕捉到一次脉冲,就根据脉冲的宽度,通过内置的闭环控制系统旋转到相应的位置。

脉冲之间的间隔不能太短,否则会导致舵机工作不正常,通常取10-20ms 。

我们都使用单片机的PWM 模块来控制舵机,使单片机输出一个50-100Hz 的PWM ,通过调节PWM 的占空比来实现舵机的控制。

我们选用辉盛M995型号的舵机,如图所示:2.6 直流电机选用的普通的直流减速电机。

3 控制软件设计说明3.1 系统片内资源MC9S12XS单片机是以CPU12的V2内核为核心的单片机系列。

最高总线速度从25MHz提高到了40MHz。

128KFlash,8K RAM,2K EEPROM、2个SCI,2个SPI、1个IIC、2个CAN、16路12位ADC、8路PWM、8路16位定时/计数器、一个16位秒冲累加器,支持单线BDM调试。

3.2 视频采集得到一段视频信号后,可以从中提取黑线位置,是否为起始线,这些信息可以被用于舵机和电机等执行器件进行控制。

采集到的图像分辨率为172*40,主要包含前景和背景两部分。

前景是指路线上的黑色部分,包括黑线和起始线。

背景指路线上未贴黑线的白色部分,以及道路外的其它部分。

将数字图像分为多个子区域被称为图像分割。

3.3 速度控制分层是解决系统复杂性的有效方法。

我们的速度控制算法分为顶层和底层,顶层负责根据传感器的信息给定一个速度,底层负责通过闭环反馈来进行速度控制。

3.3.1 顶层速度控制采用了简单的顶层速度控制算法,在采集到的图像中,如果前方没有障碍物,就给高速,否则就给低速。

低速设置为路况中转弯的极限速度,实际表明,采用这种方法进行速度分配,直行,转弯都能安全通行。

3.3.2 底层速度控制底层速度控制是采用的PID控制。

考虑到电机的非线性特征,在根据PID得出PWM值之后,进行了一个非线性的二次曲线转换。

加入转换后,在正反两个方向上,电机都能在确定的时间中转满方向。

3.4 舵机控制3.4.1 舵机顶层控制量选定机器人在运行过程中,需要用舵机来控制摄像头的转向,还有,需要通过舵机来控制机械手臂的上下运动。

所以舵机顶层控制量选用的是摄像头直面前方的位置,机械手的最上面的位置。

3.4.2 舵机顶层控制量修正对于机械手的上下运动,通过对顶层控制量的修正,来完成这几项任务。

参考文献1 Tinku Acharya 等. 数字图像处理——原理与应用.清华大学出版社,20072 龚路,王浩,黄炫圭. 第六届全国大学生“飞思卡尔”杯智能汽车竞赛上海交大SmartStar队技术报告[R].上海:上海交通大学,20113 李向南,饶建华,王冲等.宝石磨雕机器人软件控制系统的设计和实现[J].制造业自动化,2012(1)4 刘存桓.基于视觉信息的移动机器人非线性控制系统设计[D].山东大学,20125 党宏社,韩崇昭,段战胜. 智能车辆系统发展及其关键技术概述. 公路交通科技2002 年12 月Vol.19-No.69 周风余,田国会,郭丹,等. 助老助残服务机器人机载计算机软件系统设计及实现[N]. 山东大学学报( 工学版),2011(1).附录C程序代码void main(void){/* put your own code here */chaopin();pwm_init();SPI_Init();SciInit();需要使用药物Nrf24l01_init();RX_mode_init();PIT();DDRB=0XFF; //舵机接口DDRM=0XFF; //电机方向控制syn6288(text1,sizeof(text1));Delay1ms(500);syn6288(text2,sizeof(text2));Delay1ms(1000);EnableInterrupts;for(;;) {for(time=0;time<500;time++){status=Read_IRQ(&statusT,&statusR,&statusM) ; if(statusM) {Clr_IRQ();}if(statusT) {Clr_IRQ();}if(statusR) {Clr_IRQ();RxPacket();}fangxiang1=RxData[2];fangxiang2=RxData[3];jiaodu[0]=RxData[4];jiaodu[1]=RxData[5];//动作控制jiaodu[2]=RxData[6];jiaodu[3]=RxData[7];sudu=RxData[8]; //速度控制wenzi[0]=RxData[9];wenzi[1]=RxData[10];wenzi[2]=RxData[11];wenzi[3]=RxData[12];wenzi[4]=RxData[13];wenzi[5]=RxData[14];wenzi[6]=RxData[15];wenzi[7]=RxData[16];wenzi[8]=RxData[17];wenzi[9]=RxData[18];wenzi[10]=RxData[19];wenzi[11]=RxData[20];//接收文字wenzi[12]=RxData[21];wenzi[13]=RxData[22];wenzi[14]=RxData[23];wenzi[15]=RxData[24];wenzi[16]=RxData[25];wenzi[17]=RxData[26];wenzi[18]=RxData[27];wenzi[19]=RxData[28];// wenzi[20]=RxData[30];// wenzi[21]=RxData[31];}if(fangxiang1==1&&fangxiang2==1) {PTM_PTM0=1;PTM_PTM1=0;PTM_PTM2=1;PTM_PTM3=0;PWMDTY01=sudu*10;PWMDTY23=sudu*10;}if(fangxiang1==2&&fangxiang2==2) {PTM_PTM0=0;PTM_PTM1=1;PTM_PTM2=0;PTM_PTM3=1;PWMDTY01=sudu*10;PWMDTY23=sudu*10;}if(fangxiang1==1&&fangxiang2==2) {PTM_PTM0=0;PTM_PTM1=1;PTM_PTM2=1;PTM_PTM3=0;PWMDTY01=sudu*10;PWMDTY23=sudu*10;}if(fangxiang1==2&&fangxiang2==1) {PTM_PTM0=1;PTM_PTM1=0;PTM_PTM2=0;PTM_PTM3=1;PWMDTY01=sudu*10;PWMDTY23=sudu*10;}if(fangxiang1==0&&fangxiang2==0) {PTM_PTM0=1;PTM_PTM1=1;PTM_PTM2=1;PTM_PTM3=1;PWMDTY01=0;PWMDTY23=0;}if(wenzi[0]!=0){for(ycc=0;ycc<=21;ycc++){if(wenzi[ycc]!=0){// text[ycc]=wenzi[ycc];ymm=ymm+1;}else{break;}}syn6288(wenzi,ymm);Delay1ms(3000);ymm=0;}loop foreverplease make sure that you never leave main */ }附2图1.1 助老机器人实物图。

相关主题