嵌入式移动机器人控制器设计
2013-05-24 by:广州有限元分析、培训中心-1CAE.COM 来源:仿真在线
1引言
移动机器人控制器研究是机器人技术的一个重要领域。由于移动机器人要通过与环境的互动完成既定的任务,所以其控制器的信息处理能力和实时控制性能从根本上决定了其整体性能。以往,人们通常用高性能的PC机作为车载控制系统,然而,其相对庞大的体积和重量造成了沉重的载重负担严重制约了移动机器人的微、小型化和灵活性。另一方面,将通用型PC机应用于移动机器人会造成严重的资源浪费,降低了机器人的整体性价比,并且一般的桌面操作系统很难满足移动机器人控制的实时性要求。
基于此,本文提出了一种基于数字信号处理器( Digital Signal Processor, DSP)和uC/OS- II实时内核的移动机器人控制器设计方案。
2控制器硬件系统设计
本文所提设计方案采用基于DSP的系统硬件设计。TMS320F2812型32位定点DSP集数字信号处理、事件管理和嵌人式控制功能于一体,具有丰富的片内外设资源,可以大大简化外围电路的设计。此外,为提高控制器的开放性采取模块化设计,将基于DSP的最小系统设计为一个核心模块(核心板),而将信号采集和处理、功率驱动等功能电路分别设计成相应的独立模块。
2.1控制器电路原理设计
图1为DSP核心板的硬件原理图。核心板上几个电平转换单元的功能是实现SV电平和3.3 V电平的转换,用于DSPI/O接口电平(3.3 V)与外围器件典型电平的匹配,确保DSP芯片安全。在DSP与电机之间采用光电耦合器实现隔离。在需对机器人的运动进行精确控制的场合,应通过转速传感器反馈电机的转速信号。此外,核心板上还扩展了256 K* 16位的外部RAM。
2.2移动机器人控制器工作原理
移动机器人的最基本的功能是避障导航。传感器采集环境中障碍物信息,控制器基于这些信息控制驱动电机,从而控制机器人的运动。
目前用于导航的传感器主要有红外测距传感器、超声波测距传感器和触碰开关等。其输出信号的形式为模拟电压信号或开关电压信号。TMS320F2812型DSP有16路12位分辨率ADC通道,可以配置为两个独立的8通道模块或者一个级联的16通道模块,支持灵活的信号采集方式。在每次转换前,由程序设置4个寄存器ADCCHSELSEQI-4的值,确定本次要采样和转换的通道。转换完成后,数据被保存在结果寄存器组ADCRESULTn中,应用程序访问该寄存器组获取传感数据。开关型信号的采集可以通过对特定引脚的查询或者DSP捕捉单元实现。DSP的捕捉单元在捕捉到引脚上的电平变化后,截取并保存定时器的当前计数值,因此应用程序可以计算出CPU等待此电平变化所用的时间。这种方式比较适用于采集"触发-返回"式测距传感器的信号。而触碰开关因为工作方式相对简单,适用程序查询的方式。
TMS320F2812型DSP可以方便地实现多路电机控制,其事件管理模块(EVM)支持多达16路带可编程死区的PWM输出。可以满足移动机器人的牵引电机、舵机及云台电机的控制需求。
3控制器软件系统设计
本设计采用基于实时操作系统的软件设计方案。与传统前后台式程序设计相比,基于实时内核的程序设计具有时间确定性强、便于功能扩展和剪裁等优点。uC/OS- II是一种源代码公开的实时内核,已经取得了美国航空管理局(Federal Aviation Administration ,FAA)的安全认证,是一款成熟的嵌人式操作系统。
uC/OS-II实时操作系统内核的核心功能是任务调度和管理,通过任务调度器总是将CPU的使用权赋予就绪的具有最高优先权的任务。任务调度器的工作流程是首先确定当前时刻应获得CPU使用权的任务,然后引发一次软件中断,在中断服务程序中将CPU各寄存器的当前值(即断点数据)保存在即将被剥夺CPU使用权的任务的堆栈中。最后,从待运行任务的堆栈中恢复其上一次被剥夺CPU使用权时的断点数据,实现任务的切换.
3.1 uC/OS-II内核在DSP上的移植
uC/0S-II是一个通用型内核,要在DSP上运行必须进行移植。所谓移植就是使一个通用的操作系统内核能够在一个特定的处理器/控制器上有效地运行。
实时内核移植的主要工作是编写与处理器相关代码,移植的步骤如下:
(1)编辑头文件OS_CPU.H,将uGIOS-II自定义的数据类型与TMS320F2812DSP的数据类型匹配起来。
(2)在程序文件OS_CPU_C.C中编写任务堆栈初始化函数OSTaskStklnit ()。文件中其他函数用于扩展系统功能,在本设计中只声明了这些函数,而没有编写函数体。
(3)在程序文件OS_CPU_A.ASM中用汇编语言编写4个系统函数OSStartHighRay() ,OSCtxSw(),OSIntCtxSw()OSTick-ISR().
(4)编辑头文件OS CFG.H。是实现uC/OS- II的可剪裁性的关键。
(5)测试移植代码。
(6)编写驱动程序库。
3.2基于实时内核的程序设计
基于实时内核的多任务系统可划分为两个层次,即系统层和应用层。系统层由内核和驱动程序库组成,而应用层包括用于达成机器人任务目标的全部代码。
在本方案应用层程序设计中,将机器人的任务分解成AD采集、触碰开关量信号采集、测距开关量采集、频率量采集、机器人运动控制、决策和信息显示等几个用户任务。并为共享数据和资源设置相应的信号量保证任务的同步。系统中各任务及其同步机制如图2所示。
数据采集任务将数据暂存在相应的缓冲区中。决策任务通过融合这些信息,实现"感知-动作"映射。显示任务根据各传感数据点亮或熄灭相应的状态指示灯。运动控制任务根据决策任务的决策结果控制机器人的运动。本方案为4个传感器数据缓冲区设置了信号量集,用于同步数据采集任务和决策、显示任务。决策任务将最终决策通过消息邮箱通知运动控制任务。
4实验及结果分析
如前所述,实时内核移植完成后应对移植代码进行测试,以验证移植是否成功。然后,本文以三轮式小车为载体进行了移动机器人避障实验。
4.1实时内核移植代码测试
本测试建立了两个任务Task 1()和Task2(),分别在通用UO引脚GPIOF3 、GPIOFI2上产生方波。Task l()和Task2()的优先级分别为0和1,通过一个互斥型信号量flag同步。这两个用户任务的工作流程如表1所示程序运行后,在示波器上观察到GPIOF3(上),GPIOFI2(下)引脚上的电平变化如图3所示。其中,图3(a)所示为,Task2 ( )无限期等待信号量flag情况下的引脚电平变化。图3(b)所示是Task2()等待信号量flag的时限设为20个节拍时的引脚电平变化。
从图3(a)可见Task 1()将GPIOF3上的电平翻转后,延时30个节拍(对应图中三格)发送信号量,由于Task2()在无限期地等待信号量,所以,当Taskl()延时期满后,Task2)立即获得信号量,并翻转GPIOFI2引脚电平。在图3(b)中,Task2()延时10个节拍(一格)后,申请信号量,但是由于Taskl()未释放信号量,所以进人等待状态,等待20个节拍后,放弃等待,继续运行程序运行结果表明,实时内核已能正常工作,移植成功。
4.2移动机器人避障实验
本实验采用一个三轮小车作为机器人本体。小车由左右两个微型电机驱动,电机内部集成了功率放大电路。车体前端安装两个夏普(SHARP)GP2D12型的红外测距传感器,输出信号为0V-5V模拟电压。
DSP根据测距传感数据判断障碍信息,依据"感知一动作"映射表作出决策,控制电机的运转,从而驱动小车避开障碍物。"感知一动作"映射表如图4所示,该映射表以"表"的形式存储在DSP的存储器中。
本实验使用4个用户任务用户任务task_ad(), task_decide(),task_led(),task_wm(),分别用于采集模拟数据、决策、LED显示控制和运动控制(电机控制)。
避障实验在小型机器人昆球场地中进行。小车向任意初始方向出发,到达场地边缘后改为平行于场地边缘前进。到达拐角处,转而沿另一边缘前进。图5所示为小车到达场地边缘和在拐角处转向时的场景。
实验结果表明,该控制器可以控制小车以极少的碰撞避开环境中障碍物。考虑到实验是在只有两个传感器的条件下进行的.这种碰撞是合理的。
5结束语
本文所提方案由实时多任务内核和DSP分别构成软硬件平台,一方面,克服了控制器的性能与体积的矛盾,具有较高的性价比,另一方面简化了应用程序设计,提高了系统功能的可扩展性和剪裁性,具有较高的开放性。
相关标签搜索:嵌入式移动机器人控制器设计 CFD培训 CFD流体分析培训 cfd视频 fluent cfx pumplinx软件培训 Fluent、CFX流体分析 HFSS电磁分析 Ansys培训 Abaqus培训 Autoform培训 有限元培训