Blockly
对于一些简单的开发任务,RobotStudio提供了一种图形化的开发方式, 极大的提高了开发效率同时降低了开发的入门门槛,这就是Blockly。
Blockly是一款运行在网页客户端的JavaScript库,目的是用来打造以积木块为基础, 附带编辑器的视觉化程式设计语言。它是一项由谷歌根据 Apache2.0 许可的开放源码专案。 常见被应用在网页浏览器中,视觉上与Scratch差不多。 Blockly也可于Andriod和iOS中运行,但无法获得网页浏览器的全部特性。 Blockly是使用能在网页上拖拉并相互连接的视觉化方块,使得程序的撰写更加容易, 并且可以生成对应的JavaScript,Python,PHP或Dart等源代码。它也可以定制产生任何含有文字的电脑语言。
运行原理¶
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。