工业机器人控制器:从商业方案到开源软件
工业机器人控制器:从商业方案到开源软件
工业机器人控制器是实现机器人智能化和自动化的核心部件,其性能直接影响到机器人的运动精度、响应速度和控制稳定性。本文将从软硬件方案、商业控制器、开源控制软件、控制器开发等多个维度,深入探讨工业机器人控制器的技术特点和发展趋势。
1. 软硬件方案
1.1 机械臂控制器
机械臂控制器的发展较早,产品相对成熟。其硬件方案主要采用X86芯片,操作系统则以实时操作系统为主,如VxWorks、Windows等。具体方案如下:
厂家 | 硬件 | 操作系统 |
---|---|---|
ABB | x86 | VxWorks |
KUKA | x86 | VxWorks+Windows(VxWin) |
KEBA | x86 | VxWorks |
B&R | x86 | Windows 10/B&R Linux 9 |
固高 | x86 | Windows CE |
MUJIN | x86 | - |
纳博特 | x86 | VxWorks 或 Linux(PREEMPT_RT)或 SylixOS |
1.2 移动机器人控制器
移动机器人的控制器属于较新的方向,其硬件方案主要采用嵌入式芯片,如Infineon XC167、PowerPC、ARM Cortex-A8等。具体方案如下:
厂家 | 硬件 | 操作系统 | 软件 | 外部接口 |
---|---|---|---|---|
Hesmor | Infineon XC167 | 无 | CoDeSys | CAN |
Hirschmann | PowerPC | 无 | CoDeSys | CAN |
EPEC | Infineon C166 | 无 | CoDeSys | CAN |
NDC | ARM Cortex-A8 | Linux | - | 内置陀螺仪、CAN、WLAN、485 |
IFM | Infineon TriCore 1796 | 无 | CoDeSys | CAN |
1.3 对比分析
机械臂的功能要求多,自由度多,而且对运动精度和响应速度的要求较高,比移动机器人一般要高1到2个数量级,因此控制器的计算量大、周期短;移动机器人一般对响应速度要求不高,功能相对简单,其配置相对较低,而且移动机器人通常采用电池供电,控制器内置,因此对功耗和散热有要求,其控制器多采用嵌入式芯片。
机械臂一般工作于固定的区域,其控制器通常放置于机箱内,因此防护等级不高,一般是IP20;移动机器人由于需要经常运动,尤其是室外工程机械,要考虑防水防尘,其防护等级较高,一般是IP65。
特征 | 机械臂 | 移动机器人 |
---|---|---|
控制精度 | 0.01~0.5mm | 1~20mm |
控制周期 | 100us~10ms | 10ms~100ms |
插补 | 需要 | 不需要 |
轨迹规划 | 需要 | 不需要 |
逻辑控制 | 需要 | 需要 |
2. 商业控制器
2.1 CoDeSys
CoDeSys是德国3S公司推出的一款付费的软PLC开发软件,包括Development System和Runtime System两部分。Development System用于编程,Runtime System则位于控制设备中执行程序。CoDeSys采用.Net技术开发,支持模块化设计,用户可以像搭积木一样选购必需的模块搭建自己的系统。
CoDeSys的IDE部分是免费的,真正收费的是运行系统Runtime System以及一系列的通信、运动控制组件。CoDeSys采用.Net技术开发,其在设计之初就将功能划分为若干组件模块,例如总线协议栈、可视化界面、运动控制、安全控制等等,用户可以像搭积木一样选购必需的模块搭建自己的系统,最后形成一个定制化的控制软件平台。
2.2 PLCnext
菲尼克斯推出的PLCnext技术采用通用的软硬件,例如ARM处理器和RTLinux操作系统。PLCnext在中间层仍然采用了KW的软运行核。由于PLCnext的底层操作系统是Linux,用户可以自己在PLCnext上安装ROS系统以使用其中的机器人算法,目前支持最新的melodic版本。PLCnext还支持C/C++、IEC 61131-3标准PLC语言、Matlab等编程语言。
PLCnext的核心技术体现在两个方面:任务执行管理器(ESM)和全局数据管理器(GDS)。ESM确保不同优先级的任务按照正确的优先级和时序运行,并保证低优先级的任务被抢占时数据的一致性。GDS负责任务间的通信,保证所有的数据在交换过程中的一致性。
2.3 KEBA
KEBA是一家奥地利机器人控制器制造商,其编程和控制软件全部建立在CoDeSys软PLC之上。CoDeSys本身与机器人相关的功能很少,因此机器人涉及的功能和函数是由KEBA开发的,以库的形式在CoDeSys中调用。为了保证实时性,控制器里的CoDeSys Runtime安装在了VxWorks之上。
2.4 KUKA
KUKA的新一代控制器称为KR C4,其同样采用了软PLC的方案。该方案由KW公司提供,软PLC由IDE部分(被称为Multiprog)和Runtime(被称为ProConOS)组成。ProConOS由C#开发。ProConOS Runtime同样运行在VxWorks之上,它们安装在控制器硬件中,其硬件采用了Intel双核CPU。
2.5 欧姆龙
欧姆龙(OMRON)推出了“机器人集成控制器”——NJ501-R,将PLC,运动和机器人控制集成在单个控制器中。PLC和机器人的编程语言统一在通用的IEC语言中,这使通常管理PLC的工程师也可以管理机器人。PLC与NC程序在同一个机器上执行,能让多个任务同步。
2.6 百度自动驾驶计算平台
百度的Apollo无人车项目推出了无人车自动驾驶专用计算平台——ACU (Apollo Computing Unit)。ACU采用了赛灵思的ZU5芯片,这是一个异构多核SoC处理器,上面集成了CPU(ARM V8核)、FPGA、DDR内存(2GB)、还有一个很小的GPU。百度针对深度学习的底层计算进行了很多优化,例如采用8bit INT型数据类型减少计算量(同时不降低准确度),把常用的“多个算子组合”融合成一个,用Average pooling替代Max pooling,采用共享内存实现零拷贝。
3. 开源控制软件
目前存在一些开源的控制系统方案,例如ROS、Orocos、OpenRTM、Beremiz、OpenPLC、XBotCore、ArmarX、ORCA、AMiRo-OS。
3.1 ROS
ROS的前身最早可以追溯到2007年斯坦福大学的博士生Eric Berger和Keenan Wyrobek的工作,主要开发语言是C++。ROS提供的功能包括节点定义和节点间的通信方式、基本工具、设备驱动等。ROS在工业界用的并不多,因为它在设计之初考虑更多的是通用性和代码重用能力,不太关心可靠性、实时性等。
3.2 Orocos
Orocos是一个开源的机器人控制程序开发软件,由比利时鲁汶大学的Herman Bruyninckx及其博士生Peter Soetens开发,编程语言为C++。 Orocos的介绍文档偏软件开发,非程序员不容易读懂。Orocos的地位与ROS有些类似,但定位于控制,其位于实时操作系统之上,提供的基本功能包括:生成实时控制程序的工具链(编译器),组件模板、机器人常用基本函数。Orocos替用户解决了模块功能和接口定义、模块间实时通信这些基本功能,借助这些软件模块,用户可以更快速的开发部署自己的应用软件。Orocos既关注上层应用层,也关注底层控制层。与ROS相比,Orocos在设计之初就考虑了实时性。
3.3 Beremiz
Beremiz是一个免费、开源的软PLC控制系统,由法国人Edouard Tisserant开发,主要开发语言是Python。Beremiz项目始于2005年,其功能特点包括支持多任务、支持ST、梯形图等五种标准PLC编程语言、提供IEC 61131-3标准规定的基本函数、可扩展Modbus、CANopen、EtherCAT总线通讯模块等。
3.4 OpenPLC
OpenPLC是一个免费开源的软PLC软件系统,它由Beremiz项目衍生而来,由美国阿拉巴马大学博士生Thiago Rodrigues Alves开发。OpenPLC的介绍资料很少,并且其中一部分还是由俄文和法文撰写的,缺少深入探讨内部原理的文献。
3.5 对比分析
大多数软件将任务的调度交给操作系统,这就带来一个问题:对于通用的操作系统的来说,每个进程基本是相互独立的,而对于机器人应用,任务间通常是相互依赖的,这就造成了操作系统的调度程序无法用于任务有依赖的任务调度。
4. 控制器的开发
机器人控制器开发涉及的专业众多,需要一个团队完成。精通控制算法的机器人专业的博士对于软件开发可能也一窍不通,看到进程、任务调度、mutex这些计算机名词头大;训练有素的软件工程师对于齐次变换矩阵、旋量这些概念则是一头雾水;除此以外,项目还需要驱动工程师、硬件工程师,还要有工程师懂总线通信、熟悉工艺。如果想找业务能力扎实的员工,就要承担高昂的成本,没有诱惑力的工资是很难留住这些专业人士的。更何况中国的机器人教育其实还是相当落后的,能找到专业能力扎实的员工并不容易。
由于开发机器人控制器成本高而且困难,大部分的厂家会选择在别人的基础上开发。
4.1 控制器方案的选择
- 单处理器还是多处理器?
- 操作系统还是裸跑?
- 半成品软件还是软PLC?
4.2 实时性
开发机器人控制器是个繁重的工作,要明确一系列性能要求,首先就是实时性。实时性对于工业机器人来说是必须的(至于服务机器人笔者认为可以不强求)。一般人很容易错把“实时性”理解为计算速度快或者响应延时短,但其实“实时性”表示时间上的“确定性”,例如实时操作系统(RTOS)中的中断响应或者进程切换的延迟时间一定是在一个时间范围内,我们常用的操作系统(Windows、Linux)都不是实时操作系统,因为它们设计的出发点是大吞吐量,不能保证每个事件都在一定范围内得到处理。
影响实时性的因素主要包括操作系统调度算法、系统负载、内存分配等。评价实时性的主要指标是latency和jitter,jitter受到操作系统调度算法的影响很大,其它的例如系统负载也有影响,调度算法的影响大概是十微妙级的。jitter对机器人性能的影响不容易量化,因为中间环节有些复杂(底层伺服闭环)。
4.3 高精度定时器
我们经常提到“实时”,实时需要高精度的时间标准,那么谁来提供这个高精度的时间呢?答案就是时钟周期,它是是实时操作系统的心跳(或者脉搏)。周期性采集数据、任务定时切换、延时输出,这些功能都要求实时操作系统必须要有一个稳定的时钟周期来作为整个系统的时间标准。
什么是时钟周期呢?时钟周期依赖一个定时器,它是个函数,其本质是一个计数器。定时器开始预先存储一个值,每次硬件(例如晶振)产生一个脉冲,就将这个值减一,减到0时再重置为初始值,同时产生一个中断,这个特定的周期性的中断称为“时钟周期”(Tick,有的也叫“时钟节拍”、“心跳”或“滴答”)。举个例子,假如晶振的频率是72MHz,则时钟周期(Clock Period)就是1/72M,如果预先存储的值是72000,那么时钟节拍就是1/72M × 72000= 0.001s,也就说1ms产生一个中断,此时控制器无法分辨低于1ms的时间间隔。
5. 参考资料
[1] 机器人控制器的现状及展望,范永,谭民,机器人,1999.
[2] 开放式机器人控制器综述,孙斌,杨汝请,机器人,2001.
[3] Robotics Middleware: A Comprehensive Literature Survey and Attribute-Based Bibliography,Ayssam Elkady,Journal of Robotics,2012.
https://zhuanlan.zhihu.com/p/28052497
[4] CODESYS Control V3 Manual, Document Version 19.0.
[5] CODESYS Control V3 Migration and Adaptation, Document Version 4.0.
[6] Robots Count on Software,KW-Software.
[6] https://www.plcopen.org/technical-activities/motion-control
[7] A Software Framework for Real-Time and Distributed Robot and Machine Control,Peter Soetens,Ph.D. thesis,2016.
[8] An Open Source IEC 61131-3 Integrated Development Environment,Edouard Tisserant,IEEE,2007.
[9] OPC UA support for Beremiz softPLC,Martim Afonso,2018.
[10] An Open-source Development Environment for Industrial Automation with EtherCAT and PLCopen Motion Control,I. Kim,IEEE ETFA,2013.
[11] Conception and Implementation of a Secure Engineering and Key Exchange Mechanism for the Open Source PLC Beremiz using a Test Driven Approach,M A Rahman,2016.
[12] Can We Use Beremiz Real-time Engine for Robot Programmable Logic Controller,S Chu,CACS,2015.
[13] OpenPLC - A fully open source controller An open source platform for PLC research,https://motion.control.com/thread/1464718978
[14] OpenPLC: An Open Source Alternative to Automation,Thiago Rodrigues Alves,IEEE Global Humanitarian Technology Conference,2014.
[15] 工业机器人控制器开放性、实时性分析方法以及单处理器模式下的实现,博士学位论文,谈世哲,2002.
[16] Bare-Metal, RTOS, or Linux? Optimize Real-Time Performance with Altera SoCs,Chee Nouk Phoon,2014.
[17] Real-time Operating System Timing Jitter and its Impact on Motor Control,F. M. Proctor,SPIE,2001.