(机器编程系列文章一)
嵌入君
目前大家对机器人并不陌生,机器人可以做一些固定的动作,比较快的完成一些工作,比如焊接,搬运零件等等,还有的机器人可以打扫卫生。如果说机器人能编程,好像有点不靠谱,估计大多数人难以相信,尤其是非专业人员,认为机器人是自动化的,编程怎么能自动化呢?只听说过计算机会逐渐取代会计和律师等的工作,没听说计算机取代程序员呀!
其实,机器人程序员也不是啥新概念。查百度百科的“自动编程技术”,文中也谈到自动编程(也称计算机编程的技术)。也就是说,机器人程序员的编程国内和国外的科学技术人员早就从事过这方面的工作,并有一些科学成果。
一、什么算是机器人程序员编程或机器编程
怎样才算是机器人程序员编程或机器编程呢?很多人的理解或许是“心想事成”,其实机器人没有全自动的,都需要编程人员去编程。机器人的每个动作,也是编程工程师事先编好的。当然编制程序这事完全让机器自动完成就更不现实了,起码在目前看来,在很长一段时间还不可能实现。
笔者本人是学机器人的,而且长期从事PC的软件编程和嵌入式硬件设计和软件编程的工作。我结合本人的开发项目,介绍一下我对机器人程序员的理解和看法。
关于机器人编制程序或机器编程系统,目前学术界还没有给出具体的定义。但百度百科谈到的计算机编程和自动编程的概念,我个人的想法和百度百科的解释十分类似,我谈谈自己的想法。
我个人认为,是否算机器编程系统(机器人编程)应主要看以下两点:
1、工作量的对比:在编程一个具体的,可以完成某个特定功能的代码中,把编程人员工作量和机器编程系统完成编码的工作量相对比得出。如果编程人员完成的工作量和机器编程系统完成编码的工作量相比,可以忽略不计,那么就算是机器编程系统了。
2、需要考虑对编程人员的技术水平要求的高低:如果要求操作机器编程系统人员技术非常高,也就是说,需要一个高水平的专业软件工程师配备才能完成,这种的编程系统虽然不能说不是机器人编程。但使用范围就比较小了。意义相对也就比较小。反之,如果对操作机器编程系统人员的技术要求比较低,比如一个非计算机专业的本科毕业生,就能轻松掌握机器人程序员编程系统的使用,这个意义就很大了!就相当于给非计算机专业工程师配备了一个程序员助手。当然,如果中学生能够掌握就更好了。具体的说,就是使用编程机器人,对编程者或使用客户的技术要求越低,编程效率越高,就越接近真正的机器人程序员。真正起到了机器代替人的目的。
百度百科的《自动编程技术》介绍了工控的一些项目,目前国内、国外都有PLC工控机,我个人认为,工业自动化常用的PLC工控机就是另一种机器编程系统。起码算是一种准机器编程系统。因为国内研制这类产品的开发人员相对较少,应用范围也受一定的限制。没有得到学术界的广泛的重视。所以大家对机器人程序员编程(或计算机编程)相对比较陌生。
我们现在开发的梯形图编程的嵌入式软件开发平台,可以看成是一种目前市场上流行PLC工控机的扩展。但和传统的PLC有一个重要的区别,就是我们能够直接针对芯片进行开发,这就大大扩展的梯形图编程的使用范围。因为嵌入式整个软硬件的市场应该是PLC工控机市场的几十倍,大家在工控项目和电子产品的开发中,经常用到的。
二、使用机器人程序员编程系统和目前编程工作中经常使用的软件开发平台的区别
其实,机器编程在我们的工作中并不陌生,不管哪种软件开发平台,或多或少提供了各种技术支持和代码重用。编写程序的工作一直是非常依赖机器的,也就是说,很多工作是机器干的。现在很少有人接触机器的可执行码了,编程工作的很大一部分依赖于计算机来帮我们做,比如说我们编程使用各种高级语言,C语言,汇编语言都是机器把我们的源程序翻译成机器码的,其实计算机只认机器码,其他语言计算机是不认识的。
现在,我们可以得出这样的结论,不管是程序员编程还是机器编程,都是一部分工作是程序员编程,一部分工作是机器完成。而且,一个有经验的程序员,一定会利用一些已经事先编制好的、坚固,可靠性高的程序模块,在编程过程反复使用,以减少自己编程的工作量。其实很多编程平台也是给程序员提供各种库函数和各种编程工具,尽量减少编程人员的工作量,尽量利用事先编制好的程序模块和代码。
那么,我们可以这样理解这个问题,在编程工作中,实际上有大量的工作是机器做的,
但是,在一般的软件开发平台,虽然大量的工作是计算机在做,但对编程人员或软件工程师有很高的技术要求,同时对代码的技术、质量、效率都有很高的要求,一般人难以完成,所以也就不难理解软件程序员的工资都比较高了。这样的软件开发平台也就不能算是机器人程序员编程或计算机编程。尽管该系统或计算机做了大量的辅助编程工作。
如果系统刻意设计成对编程人员的技术素质要求比较低,编程者的工作比较简单,只是把一些对代码的要求,要达到的目的通过简单的程序语言“告诉”系统,系统自动组织相应的功能模块和代码,完成用户的任务。这就算是机器人程序员编程了。
举个例子,使用梯形图编程控制蔬菜大棚温度的项目,首先简单解释一下梯形图编程,避免不熟悉的读者感到困惑。梯形图编程就是用图标编程,简单直观。把编程变成了简单“画图”。用户只需拖拉图标和连线,就完成了编程。实际上每个图标都对应一个程序模块或事先编好的一段代码。这个项目的用户编程为:一个图标是温度传感器,一个是带有PID控制器的图标。编程者只要用鼠标把两个图标从指令库中拖拉出来,按照PLC梯形图的语法放在编辑图中,并连接两个图标,并对温度要求和控制器做一个简单的设置。系统自动生成相应的控制代码。也就是说,传感器采集温度数据的代码和控制器代码都是事先编好的模块,客户只是简单连接和设置。这样的系统就是一种典型机器人程序员编程系统了。关于梯形图编程我会在后续文章中继续介绍。
或许有人会说,这个不算是自动编程。编程人员还是需要做些工作的。我认为,按照目前的技术水平和条件,完全自动的机器人是没有的,必须依赖工作人员的编程才能工作。哪怕是一个最简单的动作,也需要工作人员编程才能行。这个解释起来也不难,即使找个从事简单工作的劳务人员,也需要把需要做那些工作和其交代清楚。然后劳务人员按照客户的交代和要求来安排和完成具体工作。
综上所述,实际上机器人程序员编程就是编程人员把所要完成的工作通过某种简单的方式或方法告诉编程系统。注意,这个编程过程必须简单。系统理解编程人员的想法以后,组织和集成相应的代码,完成编程人员所要完成的功能。如果编程人员在这个编程任务的工作量和系统完成的工作量可以忽略不计,就属于机器人程序员编程了。
三、为什么使用机器人程序员编程?
从系统客户的角度来看,主要是为了节约成本和提高效率。从前些年的经历来看,人力成本不断增加,企业之间的竞争加剧。传统产业具有降低开发软件成本和人力开发成本的要求。目前国家鼓励“双创”,大量新兴的公司和创业人员涌现。甚至在校的大学生也加入了创业的队伍。
因为数字化是产业升级、开发新兴产业和产品的重要手段,编程自然扮演重要的角色。但编程并不是一个简单的工作,常常需要大量的专业训练和一定开发和编程经验。而且,编程工作很多具有很大的挑战性。这也是编程人员工资比较高的原因。
如果有机器人程序员的产品,帮助传统产业和创业人员轻松跨过编程这个“门槛”,而且能节约成本,并且价格也是大家能够承受的,我想大家会愿意接受并广泛使用的。
根据我们从事的梯形图编程嵌入式软件开发平台项目来粗略估算,如果使用软件编程机器人,编程效率可以至少提高10倍,一般可以节省60%-80%的软件开发成本。编程人员不需掌握计算机的专业知识,中学生经过短期的培训即可掌握。
当然,机器人程序员产品本身成本也非常重要。从目前我们项目开发的情况来看,一套嵌入式的开发平台,根据开发程序的难易,一套售价大约是300-800元人民币左右。但是,使用我们开发设备,必须购买我们的芯片,虽然芯片比市场上贵很多,因为是芯片是已经灌入软件的,但和市场上人力成本相比,可以忽略不计。
四、机器人程序员系统梳理和总结
综上所述,我们再把机器人程序员系统整体上梳理一下。首先机器人程序员系统有一套自己的语言和语法,编程人员能比较轻松的掌握这套语言,并使用该语言把自己想做的事情告诉系统,让系统自动产生相应的程序模块和代码。这些代码能够在实际的系统中运行并完成相应的具体工作。
机器人程序员系统有比较高的编程效率,不要求使用客户具有较高的计算机知识更好。让使用客户在较短的时间内,完成较大的代码编程工作量。更具体一些。就是在整个编程过程中,编程者完成的工作量和机器或系统完成的工作量可以忽略不计。
机器人程序员系统必须大大降低客户开发软件的成本,节省软件的开发费用和时间。否则,这个编程机器人的意义就不大了。
另外,机器人程序员系统必须能够提供多种产品和多种功能的代码编程,而不是一个特定的,某个方面的功能代码。比如像我们梯形图编程的嵌入式软件开发平台,必须能够开发多种芯片。针对各行各业提供服务。如果只能开发一种芯片,或针对某个特定的行业,这样的开发平台意义就非常小了。
我所举的蔬菜大棚温控的例子是一个非常理想机器人程序员的例子,但如果有这样一个机制,程序模块的提供者和使用者能够互利,机器编程系统可以不断增加可以提供给客户的具体软件模块,那么整个系统就会越来越接近真正的机器人程序员系统,机器编程提供的功能和服务也就越来越多。
笔者目前正从事机器人程序员系统研制和开发,根据我们自己开发项目,打算把我自己对机器人编程的理解和大家交流。也欢迎大家提出批评和提出意见。