跳转至

Blockly

对于一些简单的开发任务,RobotStudio提供了一种图形化的开发方式, 极大的提高了开发效率同时降低了开发的入门门槛,这就是Blockly

Blockly语言Hello World

Blockly是一款运行在网页客户端的JavaScript库,目的是用来打造以积木块为基础, 附带编辑器的视觉化程式设计语言。它是一项由谷歌根据 Apache2.0 许可的开放源码专案。 常见被应用在网页浏览器中,视觉上与Scratch差不多。 Blockly也可于Andriod和iOS中运行,但无法获得网页浏览器的全部特性。 Blockly是使用能在网页上拖拉并相互连接的视觉化方块,使得程序的撰写更加容易, 并且可以生成对应的JavaScript,Python,PHP或Dart等源代码。它也可以定制产生任何含有文字的电脑语言。

——Blockly维基百科

运行原理

Blcokly会实时监控页面中模块发生的一切变化,当模块发生变化时,如拖动新的模块、模块改变位置、模块改变参数, Blockly会将页面中的状态进行“翻译”,经过翻译可以得到页面对应的C语言程序,生成的C语言代码见下图中的代码区。 当点击运行时,会将翻译好的C语言程序发送至下位机进行执行,因此如果您具备C语言开发能力, 可以在使用Blockly的时候实时关注一下翻译的结果保证一切都在预料之中。

页面布局

Blockly开发页面布局主要包含三个部分

功能块区

这里包含了所有的功能块,即“积木”。不同的功能块按照功能逻辑被划分成了不同的种类

程序

主程序:每个Blockly程序的入口

运动

开始运动:机器人上电操作,上电了之后才可以进行运动指令
停止运动:机器人下电操作,下电了之后无法进行运动指令
关节运动:机器人以关节方式进行运动
末端直线运动:机器人末端以直线方式运动
末端圆弧运动:机器人末端以圆弧方式运动
笛卡尔关节运动:机器人以笛卡尔方式进行关节运动
螺旋线运动:机器人末端以螺旋线方式运动
位姿绝对工件偏移补偿:计算相对于当前位姿进行偏移之后的位姿

获取数据

获取关节:获取关节数据
获取速度:获取关速度数据
获取转弯区:获取转弯区数据
获取笛卡尔:获取笛卡尔数据
获取工具:获取工具数据
获取工件:获取工件数据

Warning

当新生成积木的时候Blockly会去检索所有数据,已经在工作区域内的积木不会同步更新。 因此当Blockly中需要修改已经存在的积木中的数据为新生成数据的时候, 需要把原来的数据积木销毁重新生成

IO信号

设置输出信号:设置IO输出信号
设置模拟输出信号:设置IO输出模拟信号
获取数字信号:获取IO输入数字信号
获取模拟信号:获取IO输入模拟信号
等待信号:等待IO信号

控制

等待:等待若干秒
循环:循环若干次
一直循环:一直循环
结束循环:结束循环
跳过本次循环:跳过本次循环
如果为真:逻辑判断,如果为真执行操作
如果为真否则:逻辑判断,如果为真执行操作,否则执行操作

计算

加:加法操作
减:减法操作
乘以:乘法操作
除以:除法操作
数值:数值

逻辑

大于:逻辑判断大于
小于:逻辑判断小于
等于:逻辑判断等于
小于等于:逻辑判断小于等于
大于等于:逻辑判断大于等于
并且:逻辑判断并且
或者:逻辑判断或者
非:逻辑判断非
真值:逻辑判断真值

EGM

创建外部引导数据区:EGM初始化
释放外部引导数据区:EGM销毁
启动关节空间引导:EGM启动

夹爪

创建夹爪:创建夹爪
释放夹爪:释放夹爪
控制夹爪:控制夹爪

调试

输出调试信息:输出到控制台
字符串:字符串

工作区

这里是开发的工作区域,不同功能的积木在这里拼装生成一个完整的程序

代码区

Blocly会将不同的积木翻译成C语言进行执行,翻译的结果会实时显示在代码区供参考和DEBUG。