机器人编程实战
上QQ阅读APP看书,第一时间看更新

1.2.1 每个机器人都有一种语言

那么,机器人到底理解什么语言呢?机器人的母语是微控制器语言。不论一个人如何同机器人交流,最终这种交流必须转换为微控制器的语言。微控制器是一个计算机,而大多数计算机使用机器语言。

机器语言

机器语言由0和1组成。因此,从技术上讲,一个机器人真正理解的唯一的语言是字符串和一系列0和1。例如,0000001、1010101、00010010、10101010、11111111

如果你想(或被逼无奈)用机器人的母语对其编写一组指令集,它将由一排排地0和1组成。例如,代码清单1-1是一个简单的ARM机器语言(有时被称为二进制语言)程序。

代码清单1-1 ARM机器语言程序

该程序从处理器的两个内存位置取出数字,加在一起并将结果存储在第三个内存位置。大多数机器人控制器讲这种类似机器语言的语言,如代码清单1-1所示。

0和1的安排和数量根据控制器的不同可能会有所改变,但是所见即所得。纯机器语言很难读懂,很容易把0和1的位置按错,或者在计数时出现错误。

汇编语言

汇编语言是一种更可读的机器语言,通过使用十六进制或八进制,用简短的符号说明和表示二进制。代码清单1-2是代码清单1-1所示操作类型的一个汇编语言示例。

代码清单1-2 代码清单1-1的汇编程序版本

代码清单1-2比代码清单1-1可读性更好,虽然汇编语言程序比机器语言程序更不易出错,微控制器汇编语言仍然有点神秘。从代码清单1-2并不能直观地看出,我们取两个数字X和Y,然后把它们相加并将结果存储于Z。

注释

机器语言有时称为第一代语言,汇编语言有时称为第二代语言。

一般来说,一种计算机语言越接近自然语言,其代数就越高。因此,第三代语言比第二代语言更接近英语,第四代语言又比第三代语言更加接近,以此类推。因此,理想情况下,我们希望使用一种尽可能接近人类语言的语言来指导我们的机器人。不幸的是,一种更高级的语言通常要求更多的硬件资源(比如电路、存储器、处理器能力)并且要求控制器更复杂而缺乏效率。因此,微控制器往往只用第二代指令集。

我们需要一个通用的转换器,可以允许我们以人类语言(比如英语或日语)去书写指令,并且自动转换为机器语言或汇编语言。计算机领域还没有产生这种通用的转换器,但我们已经成功了一半。