Windows系统本身不是实时操作系统,但是,对于采用上/下位机模式(如PC+DSP)的控制系统,因为下位机的定时精度高且响应快,通过合理的设计,同样可以保证整个控制系统的实时性。
针对单腿跳跃机器人控制的要求,重点研究了实时控制技术,并给出具体控制方案。在联机调试之前,先设计实验验证该控制方案的可行。实验结果说明控制系统的实时性能满足设计要求。
1 机器人控制系统的搭建
本文所研究的是一种新型弹性单腿机器人,该机器人采用双臂驱动,弹性伸缩腿中不安装驱动部件,系统依靠内部动力学耦合实现动态站立平衡、起跳和稳定连续跳跃。其机械本体如图1所示。
|
两个直流伺服电机安装在机器人的臂端,电机的输出经由钢丝传到机器人肩部,从而实现臂的摆动。电机自带编码器,测臂的摆角;机器人肩部装有陀螺仪,测身体的倾角;腿部有一直线位移传感器,用以测腿的伸缩长度。
考虑到本双臂单腿跳跃机器人主要为研究先进控制理论和方法提供实验平台,其控制系统采用上/下位机的模式,主要由PC机、DSP(Digital Signal Processor)及机器人本体上的各传感器组成,系统的结构框图如图2所示。
|
PC与DSP之间通过CAN总线来通信。CAN适配卡采用周立功公司的PCI9810。PC作为上位机可充分利用其现有的软件工具和开发环境,方便实现多任务管理;DSP(TI公司的TMS320F2812)作为下位机则利用其高速运算和精确定时。
2 Windows下的实时控制
这里希望在目前使用最广的Windows平台上开发实时控制软件,以充分发挥其图形功能和丰富的软硬件支持,减少开发难度,提高软件的通用性。所以在上位机采用的操作系统仍然是Windows系统。
但是,Windows并非一种实时操作系统,或者仅能称为“弱实时”。他是基于消息驱动机制的操作系统,一旦计算机的CPU被某个进程占用,或系统资源紧张时,任何其他消息或进程都将被暂时挂起而无法实时处理。
所谓实时,就是要在特定的时间间隔内完成特定的任务。参考二级倒立摆控制周期(6~10 ms)和Raibert的SLIP跳跃机器人控制周期(6 ms),把控制周期定为5 ms。
2.1 控制方案
精确定时是实时控制中的关键指标,若不对操作系统进行扩展,Windows能达到的定时精度最高仅为1 ms,受其他任务干扰时精度会更低。如果仅用PC控制机器人,是无法保证实时性的。
然而,对于上/下位机模式的控制系统,定时精度可以由下位机来保证,上位机只需在某个时间范围内完成任务并响应即可。从某种意义上说,实时性其实是一个靠近下位的概念,生物具有高超的协调能力并不总需处于最上位的大脑的时刻关注。
大脑也是个多任务系统,他总会被其他的事情干扰,但要进行某一控制时,他须具备2点:
(1)及时响应;
(2)一次给下位足够的信息和权限以便委任之。
这里要注意(1)中“及时”这个概念,他指上位可在某个时间范围内作出响应,而不是在某个精确的时间点。而且,当(2)成立时,上位机甚至可以在若干个控制周期里不响应,控制仍能正常进行。
基于以上控制思路,现有配置的Windows平台下PC机完全可以胜任上位机工作。
具体控制方案为:
下位机(DSP) 精确定时,决定控制系统的控制周期,进行底层的伺服控制。
上位机(PC) 不主动动作,只在接收到状态量时才运算并发送控制量。通过状态预估,一次发送几个控制量,包含了对未来状态的控制。使用多线程技术,并使用Windows下最高精度的定时器来专门负责发送,保证上位响应的及时。
上/下位机协同工作过程的示意如图3,其中T代表控制周期。
|
2.2 提高实时性的关键技术
在实际的机器人控制软件设计中,采用几项提高软件实时性的关键技术,他们的引入,可以最大限度地发挥Windows的实时潜能,让上位机更好地按照上节给出的控制方案运行。
(1)进程及线程技术
进程是程序在计算机上的一次执行活动。当运行控制软件,其进程就被启动。
Windows虽然不是实时操作系统,但他的进程管理还是有优先级之分的。高优先级进程优先运行,只有当高优先级进程不运行时,才调度低优先级进程运行。
Windows下进程优先级有:实时、高、高于标准、标准、低于标准、低6个等级,一般程序的默认优先级为“标准”。
这里可以API函数SetPriorityClass()将控制软件进程设置成“实时级”。实时级进程能占用更多的CPU资源,这意味着减少Windows下其他任务对机器人控制的影响。
Windows下,一个进程可以包含若干个线程,这就是多线程技术,他让控制软件可以同时做几件事。
由图3可见,软件中主要有3个线程:线程1完成控制量的发送;线程2完成数据的接收与控制量运算;线程3负责人机交互。
(2)多媒体时钟
多媒体时钟是Windows下精度最高的定时器。在控制软件中,他负责发送控制,线程1就是由多媒体时钟建立的,他使上位完成运算任务后,能把已得的控制量及时发送给下位。
(3)缓冲技术
这是对提高实时性效果最显著的技术,他包含预估工作,因为一次发送的多个控制量里有未来量。状态的微分值(一阶、二阶),是估计未来、预先给出控制量的基础。
缓冲区设在下位,只要上位一次给下位的控制量足够充足,即使上位有若干周期不发送控制量给下位也不会影响整体的控制效果。这为上位机争取了更多的时间用于复杂控制算法的解算,也提高了抗干扰的能力。
以缓冲区大小等于4为例,缓冲机制的过程如图4所示,其中T代表控制周期。可以看到即使PC有4个周期不发控制量,DSP依然能够读到所需的控制量(缓冲区中默认的无控制量状态是零)。
|
3 实验验证
在双臂单腿跳跃起机器人研究的前期,因为理论和技术水平的限制,尚不能马上进入联机调试阶段。但可以设计实验先对控制系统的实时性能作出验证。
实验中:
控制周期为5 ms;缓冲区大小为4(即一次发送四个控制量);实验中所用到的一次矩阵运算,指对某10维方阵的求逆并乘于另一方阵,系调用Matcom C++矩阵库实现。一次运算时间约0.1 ms。矩阵运算的作用是模拟实际控制中进行的运算量。实验数据的采样频率为200 Hz,数据值为信号电压大小,单位为V。
3.1 实验设计
构造一个由输入控制输出的系统,即输出跟随输人的动作,这类似于生物的反射回路,虽然算法简单,但很能说明实时问题。实时性不好,输出就不能很好随动,对于生物就是反应迟钝。所以即使从直观上,这个实验也能反应出系统的实时性好坏。
上位机中插入上百次的矩阵运算用以模拟实际中复杂算法的时耗,从而实验中显示的实时性性能同样也可以说明实际可用的实时性。
实验框图如图5所示。
|
控制软件的运行界面如图6所示。
|
3.2 实验结果
实验中,A/D采得的输入信号经CAN通信送给PC,PC由此来计算控制量(随动控制中,输入/输出只是简单的比例关系)再经CAN发送给DSP,最后由DA输出给电机。
实验最终要得到输入与输出曲线,看输出能否很好地跟随输入。具体操作上,DSP在把控制量送给D/A的同时,也回送给PC,所以输入和输出数据都可由PC采集(即图中数据存储按钮对应的功能)。再借助Matlab的曲线绘制功能来对实验结果进行分析。
为显示系统在高负荷运算下的实时性,以下实验均在插入100次矩阵运算(时耗约为10 ms)的情况下进行。
(1)对位置的跟踪
输出等于输入,如图7所示,可以看到他们几乎重合。几处不吻合的地方是因预估造成的,也说明那一刻PC并未顺利将控制量发送给DSP(100次矩阵运算造成的),DSP靠读取其缓冲区中的估计控制量工作,但并不影响整体的控制效果。
如果不启用缓冲,PC一次只发送1个控制量,将得到如图8所示结果。
|
因为DSP默认的输出是零,控制量的不及时到位,造成’DSP在大部分时间都输出零。这个输出加在电机上,根本无法控制电机随动。
这就是为仆么在前面说缓冲对提高实时性效果最显著,他弥补上位机非实时的弱点,从而增加了系统的实时性。
(2)对速度的跟踪
为了更直观地显示系统响应的快慢,可以让电机来跟踪位移传感器的速度信号。位移传感器不动时电机不转,正向动正转,反向动反转。
如图9所示,为了保护电机,输出值是输入的1/5。可以看到,输出对不同频率变化的输入都很好地随动。说明系统回路具备了较好的实时性。
|
4 结 语
通过对上下位机模式控制系统的深入分析,发现,在控制同路中,对上位机的要求不是精确定时,而足及时响应,这恰使得在 Wndows平台下开发上位机控制软件成为可能。由此,本文提出一种“DSP定时PC从动”实时控制方式,并引入了缓冲机制等提高实时性的关键技术,保证实际应用中控制系统具有较稳健的实时性能。
本文所设计实验,已经考虑较苛刻的时间及环境闪素,能说明整个系统具有良好的实时性。该实时控制方案的可行,有效降低了双臂单腿跳跃机器人控制系统的开发难度和成本,是关键的阶段性成果。