操作系统还是裸跑?
一般认为操作系统会导致额外的开销,毕竟上下文切换需要时间,半导体技术和软件技术的进步已经使这个差别非常小了。程序裸跑在硬件上适合比较简单、逻辑不复杂的应用场合,其缺点也是显而易见的,如果升级或者改变硬件平台,程序就要重写。现在的机器人(尤其是机械臂、无人驾驶汽车)控制器无一例外都使用了操作系统。
半成品软件还是软PLC?
ROS和OROCOS是半成品,它们更适合学术研究,需要用户对整个系统比较熟悉才能使用,对用户的编程能力有较高的要求,一般用在产品还没有定型的阶段或者用户不需要经常变换应用任务的场合。例如无人驾驶可以使用,因为无人驾驶的整个业务逻辑和任务基本不会有大的变动。正如手机或者汽车行业,厂家不会把电路板或者底盘直接卖给客户,因为客户不会使用。面向终端客户的产品必须要考虑产品本身的易用性和客户的能力。如果你的产品面向的是没有研发能力的终端客户,必须要有规范易用的编程界面和简洁高效的编程语言,这是ROS或OROCOS这种软件所不具备的。
而软PLC自带IDE,用户可以直接在IDE中直观地编写自己的应用程序。如果自带的函数不够用,用户再去底层实现自己的函数。开发效率更高,使用更友好。现在的机器人控制器都会采用软PLC的实现方式。
是的,PLC编程简单皮实耐用,这是它设计的目的,机器人正在变得越来越不简单,更多的功能被加入进来,机器视觉、自主导航、运动规划、多轴运动控制,这些要求控制器提供更强大的支撑,而不仅仅是低端的逻辑控制或者简单的数值计算。对于机器人控制来说,传统的硬PLC应该被淘汰了。
我们需要的控制器软件应该足够开放,允许用户随时调整程序结构、加入新的功能,它自身应该提供足够的底层基础函数,例如线性代数、数学优化、插值拟合、方程求解、甚至图像处理、运动控制。在使用方式上,为了兼顾客户(不能要求所有客户都能自己开发gaoji功能),它还是尽量简单好,zuihao与PLC的使用差别不大。
实时性
开发机器人控制器是个繁重的工作,要明确一系列性能要求,就是实时性。
如果问PLC或者机器人控制器与普通计算机的本质区别是什么,你会如何回答?是PLC更稳定吗,还是它的抗干扰能力更强、又或者是接口更丰富、或是编程语言更符合工业控制。笔者认为这些都不是,真正本质的区别在于PLC是实时的,而普通计算机不是实时的。家用电脑的信息处理能力可以轻松甩出PLC几条街(想想你玩大型游戏或者看高清视频的计算量),那么为什么工业上还是使用“落后的”PLC呢?答案就是实时性,实时性对于工业机器人来说是必须的(至于服务机器人笔者认为可以不强求)。一般人很容易错把“实时性”理解为计算速度快或者响应延时短,但其实“实时性”表示时间上的“确定性”,例如实时操作系统(RTOS)中的中断响应或者进程切换的延迟时间一定是在一个时间范围内,我们常用的操作系统(Windows、Linux)都不是实时操作系统,因为它们设计的出发点是大吞吐量,不能保证每个事件都在一定范围内得到处理。再比如,标准以太网的传输速度比实时工业以太网(比如EtherCAT)快多了,标准以太网却不是实时的,因为它同样不能保证数据在确定的时间内完成传输。