使用“高阶”语言给工业机器人编程有很多好处。那么,哪种语言更适合于机器人编程呢——是 Python, C# 还是 MATLAB?
这里的“高阶”指的是更接近于人类语言。本质上,最低阶的机器语言只包含0跟1两个字符,我们无法读懂。高阶编程语言降低了编程难度,这帮助用户节省编程时间、也更容易完成复杂的编程功能。高阶语言通过编译后变成机器能读懂的低阶机器语言。给工业机器人编程时,机器人厂商一般会开放其品牌特有的语言函数库给用户使用,用户完成程序后通过编译、并在机器人控制器上运行。而通用的编程语言让用户无需学习各个品牌机器人特有的编程语言。
那么,选择哪种高阶语言给机器人编程呢?
品牌特有的语言比如 RAPID(ABB机器人),KRL(库卡KUKA机器人),JBI(安川Motoman机器人)与 Karel(发那科Fanuc机器人)等等。 这些语言只能在本品牌机器人的控制器上使用。
而四种常见的通用编程语言,有 Python,C#,C++ 与 MATLAB。今天,我们就来介绍一下这4种通用编程语言的优劣之处。不过首先我们来解答一下,为什么需要使用高阶编程语言呢?
高阶编程语言的优势
起初,机器人只能通过低阶语言编程,最早的例如1973年左右出现的 MHI,VAL 以及 SIGLA 语言,其功能都非常有限。多数语言只能应用于与其相匹配的特定型号机器人,以控制机器人简单的运动,操作也不灵活。
多年后,编程语言变得更加先进,用户开始使用更通用、高阶的语言来控制机器人。C++ 出现在1982年,Python 在1990年,而 MATLAB 出生于2012年。使用通用的高阶语言给机器人编程,相对于使用专有的、并且只有一套“封闭的”语言函数库来说,有更大的益处。例如:
可以对不同的机器人重复使用(部分)程序代码
可以不断在函数库中添加新的机器人功能
使用高级的调试工具——机器人厂商很少提供他们特有语言的程序调试器
因为通用编程语言的用户群体庞大而更容易解决问题
Python 对比 C#, C++ 对比 MATLAB ——哪种更好?
在通用的高阶语言中,要知道哪种语言最适合于你需要实现的机器人项目,可以通过对比各种语言的优势与劣势来判断。
以上文中介绍的通用语言优势为基础,我们来比较一下目前最常见的四种编程语言:Python, C#, C++ 与 MATLAB。当然在有些时候,还可以根据需要在同一个项目中使用一种以上的语言。
Python
Python 在设计时以简单易懂为前提,尽管在90年代已经被开发,直到近年来用户群数量获得极大的增长。用户普遍认为 Python 容易学习,对于已经有其他语言编程基础的用户来说 Python 也很容易上手。对于一名年轻的机器人编程人员,容易开始。
使用 Python 给机器人编程的优势是:
易学易懂
可利用强大的函数工具库
可重复使用的代码
用户群庞大,容易获得帮助
使用 Python 给机器人编程的缺点:
在庞大而复杂的项目中,程序容易显得无序。
各项指标都不错,但是没有特别的长处。
由于是“直译式”语言,有时不易于查错。
我们认为 Python 对于快速、小到中型的机器人编程项目来说优势最明显——在对系统的“实时性能”要求不高的情况下,用户可以使用它强大的功能以及函数工具库。而如果你需要更稳定、高效的程序,那么 Python 可能不是最好的选择。
C#
C# 由微软于2000年后开发,之后迅速获得用户欢迎,特别在生产制造行业中成为被使用最多的编程语言之一。不同于 C++ 语言的是,C# 更容易学习,因为它自动对内存进行管理,采用“垃圾回收”机制释放不需要的内存。
使用 C# 给机器人编程的优势是:
容易学习并且容易集成于大型项目中
强大而多样的函数库
出色而且免费的开发环境(微软Visual C# Express)
微软的 Visual Studio 包括非常有用的团队开发工具
C# 在 .NET 框架下运行,具有与其他程序语言的良好互操作性
使用 C# 给机器人编程的缺点:
不适合在其他系统环境(例如 Linux)中开发
由于C# 是为 Windows 设计,C# 程序在非 Windows 系统环境下也不容易运行
很多人机交互界面(HMI,即Human Machine Interfaces)项目都是使用 C# 开发的,也是数据采集与监控控制(SCADA,即Supervisory Control and Data Acquisition) 系统的一部分。
C++
C++ 是一种基于C语言的“面向对象”编程语言。它背后的设计关键是性能,并且代码容易管理。假设我们至始至终只能选择一种语言给机器人编程,那么我们会推荐使用 C++。虽然 Python 更加容易使用(前文中也做了推荐),但是,一个更重要的因素是程序的性能,C++ 所具有的这个优势不容忽视。
如果你是认真地想学习机器人,完美利用它的高级功能,我们建议学习跟使用 C/C++。给机器人编程,技术等级由低(例如嵌入式马达与探测器控制)到高(例如人工智能),这些功能使用 C++ 能够全部胜任,能做到这一点的编程语言并不多。
使用 C++ 给机器人编程的优势是:
性能(假设你的程序足够好)
可以利用很多函数工具库(很多Python工具库都是 C++ 工具库的封套)
“高阶”编程语言中的“低阶”语言,对硬件的控制性更强
很多机器人硬件的函数工具库都是用 C/C++ 写成的
使用 C++ 给机器人编程的缺点:
学习时间长、不容易写出合格的程序
通常需要多次调试
编程时间较长
第三方提供的函数库通常不易使用(不容易读懂)
如果需要性能强大,或者与低阶机器人硬件交互,C++ 可能是最好的选择。但是,如果你想用最少的精力实现快速编程,C++ 就通常不被采用。
MATLAB
MATLAB 不仅仅是一种编程语言,而是一整个编程环境,它名字的由来是“矩阵实验室”,在数学(矩阵)领域尤其有效。
矩阵是机器人的基础,就像我们之前介绍的。MATLAB在工程师中广泛使用,应用于分析与仿真机器人。随着产品的发展,也可以通过界面工具控制机器人硬件。MATLAB 用于数据分析的函数库功能强大,但是控制机器人硬件不是它的强项。
使用 MATLAB 给机器人编程的优势是:
强大的数据与机器人运动分析工具
快速完成可重复利用的代码
它的“机器人工具”也受到广泛欢迎
可以实现复杂的仿真
使用 MATLAB 给机器人编程的缺点:
MATLAB 本身不是为与机器人硬件交互所设计的
作为一种“专利的”产品(语言与开发环境),价格不菲
由于用户需要购买 MATLAB,不容易与其他用户分享代码
由第三方提供的工具没有在其他语言中的那么多
MATLAB 用于数据分析与仿真任务可能是最好的选择,但仅限于此。当真正为机器人硬件编程时,我们通常推荐使用其他的语言。
总结
本篇的几个要点:
最简单的编程选择为 Python,适合较小的、快速的项目
如果在效率(取得快速结果)与性能中平衡,那么选择 C#
如果需要最优秀的性能,C++ 最佳
MATLAB 可能是最好的数据分析工具
不管选择使用哪种语言,确保你的机器人编程环境支持这种语言。RoboDK 提供的应用编程接口(API),把你最喜爱的高阶语言应用于工业机器人之中。