基于RT-Linux机器人控制系统实时性的研究
时间:11-17
来源:互联网
点击:
实时系统是能够在确定的时间内执行计算或处理事务并对外部事件作出响应的计算机系统。对工业机器人控制来说,实时性是一个相当重要的内容,尤其是在远程机器人控制中,如果不能很好地满足系统所需的实时性要求,就失去了研究的基础和意义。当前专用的实时操作系统很多,但是遗憾的是它们的价格高昂,增加了开发成本。在考虑实时操作系统核心的性能之外,更应该对开发工具、编译器、调试器之类的开发环境进行全面考虑,尤其是随着应用的不断升级,要求实时操作系统支持各类网络协议和编程语言,系统的通用性和可移植性也应当列入考虑的范围内。于是力求寻找一种高性能的、低价的甚至是免费的实时操作系统,且功能必须完备,通用性必须强。RT—Linux与Linux的结合是一项比较新颖的技术,一方面它提供了面向非实时的POSIX.1的标准功能,另一方面又提供了非常高效的满足底层硬件设备的实时性能需要。这种实现方法可以充分利用Linux的强大功能和RT—Linux的实时性能。而且RT—Linux是免费的,完全开放源代码,可降低开发成本,适用范围广泛。
1 RT-Linux的系统结构
RT-Linux的基本思想就是使Linux运行在实时核心之下,见图1。RT—Linux是一个可加载的核心模块。一个小的RT-Linux实时内核同原来的Linux内核共同控制处理器。实时内核直接管理硬件中断,因此实时内核操纵着机器的响应时间,原来的Linux就无法影响实时任务了。在RT- Linux中设计了两类中断。软中断是正常的Linux中断,硬中断则是真正的实时中断,执行时几乎没有任何延迟。实现时,RT-Linux是通过在 Linux核心和中断处理器之间设计一个仿真软件来达到其目的的。
实时中断不经过中断仿真器,标准Linux的所有硬件中断首先被中断仿真器捕获,所以也根本无法影响实时进程的处理。当实时内核禁止中断时,仿真器中的一个标志位被置0。当有其它非实时中断产生时,仿真器检查那个标志位,如果为0,说明不允许中断,否则可以立即执~Linux中断处理程序。筒而言之,Linux不能中断自身,但是RT-Linux可以中断Linux,这也就达到了所谓的”RT—Linux的核心可抢占机制”。实时任务与普通进程之间的通信是通过封锁,释放队列来完成的。具体地说就是当有实时任务要完成时,实时操作系统运行实时内核下的任务;当没有实时任务时,实时内核调度 Linux运行。所以Linux是实时内核中优先级最低的一个任务。
目前为止,在RT-Linux中采用两种调度策略。一种是基于优先级的抢占式调度算法;另一种是lsmaelRipoll实现的 EDF(EarliestDeadlineFirst)算法。对于周期性任务可以采用单调率调度算法,即周期短的任务能够获得较高的优先级。调度策略将 Linux视为赋予最低优先级的实时任务。
Linux仅仅在实时系统没有其它任务时运行。Linux和实时任务之间的转换依据上述提及的软中断状态而定。RT-Linux通过这样一种设计方法,将标准的Linux核心改成一个可抢占的、具有低延迟中断处理的实时系统。
2 实时机器人控制系统的软/硬件结构
2.1硬件系统结构
整个实时机器人控制系统主要的硬件部件为:与IBM—PC兼容PentiumIII733MHzq-业控制微机(IPC),内存l28MB;三轴位置控制卡(PCL一832);l0/100M自适应网卡、集线器等以太网连接设备;机器人本体为具有5个自由度的日产PT500机器人。
机器人控制器运行于一台工业控制微型计算机(IPC)上。在该IPC上安装了两块三轴位置控制卡。每块三轴位置控制卡能对三轴进行联动插补控制。每轴有专用位置芯片控制,构成一个伺服位置和速度环。三轴位置控制卡以插补时间为周期连续发出中断,我们需要在DDA周期开始之前,将位置信息写入位置控制卡动作控制芯片的缓冲区中。放在DDA脉冲缓冲器中的脉冲数被传到DDA发生器,在下一个DDA周期中输出。然后由三轴位置控制卡将各轴对应的脉冲数解释为相应的电平信号,驱动伺服驱动器以驱动机器人本体的运动。
2.2软件系统结构
整个机器人实时控制器的系统结构如图2所示,整个系统分为2个域:实时域和非实时域。实时域中实现的是实时设备驱动程序,负责PCL-832位置控制卡的控制与中断响应,驱动机器人本体运动;非实时域中实现的是上层的机器人控制界面和远程监控子系统;二者之问通过实时先进先出(RT-FIFO)缓冲队列进行数据交换。内核调度策略将Linux视为赋予最低优先级的实时任务,Linux中的非实时任务仅仅在实时系统没有其它任务时运行,以确保实时任务的最高实时优先级。
(1)RT-Linux中的实时模块
实时域中的软件模块主要是三轴位置控制卡(PCL一832)的设备驱动程序。驱动程序是能够直接访问硬件的模块,具有应用程序不具备的处理中断和读写端口的能力,是嵌入操作系统核心的底层软件。三轴位置控制卡以毫秒级发出DDA中断请求,对DDA中断的响应的快慢是决定整个机器人控制器实时性能的关键指标。我们开发的实时设备驱动程序位于RT-Linux的实时域中,享有系统最高实时优先级。它是整个实时机器人控制系统的前提和基础。RT-Linux中的三轴位置控制卡的实时设备驱动程序必须处理以下事务:
1)响应三轴位置卡的插补周期中断(DDA),并输出位置脉冲数值;
2)响应三轴位置卡的误差溢出中断(Ov),通知应用程序进行相应处理;
3)为应用程序提供服务,如读写I/O端口、设置参数、读取状态等。
1 RT-Linux的系统结构
RT-Linux的基本思想就是使Linux运行在实时核心之下,见图1。RT—Linux是一个可加载的核心模块。一个小的RT-Linux实时内核同原来的Linux内核共同控制处理器。实时内核直接管理硬件中断,因此实时内核操纵着机器的响应时间,原来的Linux就无法影响实时任务了。在RT- Linux中设计了两类中断。软中断是正常的Linux中断,硬中断则是真正的实时中断,执行时几乎没有任何延迟。实现时,RT-Linux是通过在 Linux核心和中断处理器之间设计一个仿真软件来达到其目的的。
实时中断不经过中断仿真器,标准Linux的所有硬件中断首先被中断仿真器捕获,所以也根本无法影响实时进程的处理。当实时内核禁止中断时,仿真器中的一个标志位被置0。当有其它非实时中断产生时,仿真器检查那个标志位,如果为0,说明不允许中断,否则可以立即执~Linux中断处理程序。筒而言之,Linux不能中断自身,但是RT-Linux可以中断Linux,这也就达到了所谓的”RT—Linux的核心可抢占机制”。实时任务与普通进程之间的通信是通过封锁,释放队列来完成的。具体地说就是当有实时任务要完成时,实时操作系统运行实时内核下的任务;当没有实时任务时,实时内核调度 Linux运行。所以Linux是实时内核中优先级最低的一个任务。
目前为止,在RT-Linux中采用两种调度策略。一种是基于优先级的抢占式调度算法;另一种是lsmaelRipoll实现的 EDF(EarliestDeadlineFirst)算法。对于周期性任务可以采用单调率调度算法,即周期短的任务能够获得较高的优先级。调度策略将 Linux视为赋予最低优先级的实时任务。
Linux仅仅在实时系统没有其它任务时运行。Linux和实时任务之间的转换依据上述提及的软中断状态而定。RT-Linux通过这样一种设计方法,将标准的Linux核心改成一个可抢占的、具有低延迟中断处理的实时系统。
2 实时机器人控制系统的软/硬件结构
2.1硬件系统结构
整个实时机器人控制系统主要的硬件部件为:与IBM—PC兼容PentiumIII733MHzq-业控制微机(IPC),内存l28MB;三轴位置控制卡(PCL一832);l0/100M自适应网卡、集线器等以太网连接设备;机器人本体为具有5个自由度的日产PT500机器人。
机器人控制器运行于一台工业控制微型计算机(IPC)上。在该IPC上安装了两块三轴位置控制卡。每块三轴位置控制卡能对三轴进行联动插补控制。每轴有专用位置芯片控制,构成一个伺服位置和速度环。三轴位置控制卡以插补时间为周期连续发出中断,我们需要在DDA周期开始之前,将位置信息写入位置控制卡动作控制芯片的缓冲区中。放在DDA脉冲缓冲器中的脉冲数被传到DDA发生器,在下一个DDA周期中输出。然后由三轴位置控制卡将各轴对应的脉冲数解释为相应的电平信号,驱动伺服驱动器以驱动机器人本体的运动。
2.2软件系统结构
整个机器人实时控制器的系统结构如图2所示,整个系统分为2个域:实时域和非实时域。实时域中实现的是实时设备驱动程序,负责PCL-832位置控制卡的控制与中断响应,驱动机器人本体运动;非实时域中实现的是上层的机器人控制界面和远程监控子系统;二者之问通过实时先进先出(RT-FIFO)缓冲队列进行数据交换。内核调度策略将Linux视为赋予最低优先级的实时任务,Linux中的非实时任务仅仅在实时系统没有其它任务时运行,以确保实时任务的最高实时优先级。
(1)RT-Linux中的实时模块
实时域中的软件模块主要是三轴位置控制卡(PCL一832)的设备驱动程序。驱动程序是能够直接访问硬件的模块,具有应用程序不具备的处理中断和读写端口的能力,是嵌入操作系统核心的底层软件。三轴位置控制卡以毫秒级发出DDA中断请求,对DDA中断的响应的快慢是决定整个机器人控制器实时性能的关键指标。我们开发的实时设备驱动程序位于RT-Linux的实时域中,享有系统最高实时优先级。它是整个实时机器人控制系统的前提和基础。RT-Linux中的三轴位置控制卡的实时设备驱动程序必须处理以下事务:
1)响应三轴位置卡的插补周期中断(DDA),并输出位置脉冲数值;
2)响应三轴位置卡的误差溢出中断(Ov),通知应用程序进行相应处理;
3)为应用程序提供服务,如读写I/O端口、设置参数、读取状态等。
- 基于MSP430的自主式移动机器人设计与实现(06-12)
- 如何制作一个最简单的机器人(02-23)
- 机器人技术的新进展(02-23)
- CAN总线技术在工业码垛机器人控制系统中的应用研究(06-27)
- 制作机器人常用传感器盘点(02-23)
- 基于LabVIEW构建智能的移动机器人及无人驾驶车(10-27)