写这篇内容主要是在之前一篇文章里,有读者在后台反馈说,用儿童教学用的图形化编程工具(DroneBlocks)来控制无人机飞行会不会不够安全。
我想这是由于图形化编程常用于儿童教育中,所以才给大家留下了「它只适合当儿童编程玩具」的印象。
拿上次文章的 DroneBlocks 为例,它能提供如飞行、转向、拍照等积木,你不需要了解代码背后的逻辑是怎样的,你只管拖拽调用里面的积木,无人机会根据积木组合成的「指令块」执行对应的操作指令。然而,万一其中一个积木里出现了 bug 的话,可能是积木背后的代码逻辑有问题,那这样的飞行就可能会有危险了。
实际上,开发者也考虑过安全性,所以开放的功能都是经得起多番的安全测试的。大家平时可以留意一下该项目在其 Github 主页上的 issue,看看有哪些别人反馈过的 bug。
但只考虑代码是否有 bug 是不够的,如果设置了不合理的「指令块」,比如在周围都有高建筑物的地方设置起飞高度只有 10m,这样同样也容易导致「炸机」了,而在这种情况下,代码逻辑没问题,危险是由实际测试环境造成的。
其实,无人机编程开发的安全与否跟使用的是否图形化编程工具无关,而是跟所执行的代码逻辑及实际测试环境有关。
目前主流的图形化编程都有「简化代码逻辑」的功能,你大可不必了解那些积木背后的代码是怎么实现的。这样的好处当然是能让无编程基础的人士、甚至小朋友快速实现自己的创意。
市面上也有专门的图形化编程工具能为无编程基础的小白提供无人机或其他智能硬件快速编程的功能。
Scratch 和 Blockly
提到图形化编程工具,就不得不提这些工具的鼻祖 Scratch 和 Blockly,后续很多工具都是基于这两者进行定制开发的。
麻省理工在 2006 年推出的儿童编程软件 Scratch,提出了一个非常好的编程入门解决方案——积木式图形界面。之后,谷歌推出了Blockly,一套积木式图形编程 JavaScript库。通过图形界面的「搭积木」式操作,Blockly 可以生成 JS、Python、PHP 代码。接着 Blockly 开源了,开发者可以为任何计算机程序开发出图形化编程工具,这也催生了市面上众多的同类型工具。
Scratch 官网:https://scratch.mit.edu
Blockly 官网:https://developers.google.com/blockly(需科学上网)
DroneBlocks
DroneBlocks 就是基于 Blockly 进行开发的图形化无人机编程软件,重点强调它能支持对大疆无人机进行编程开发。DroneBlocks 封装了大疆提供的 APIs,提供了很多基础的控制功能,包括:包括:起飞、设置飞行距离、设置高度、悬停、控制机头朝向、调整云台角度、拍照录像、间隔拍照、降落。你只需要发挥你的想象力,就多个指令组合在一起,就能让大疆的无人机「任由你摆布」。此外,DroneBlocks 的官网还有完整的教学课程。
详细介绍,可参见:《与孩子一起学无人机编程?或许这个工具能帮助到你》)
Makeblock
钟德夫之前参加了在深圳举办的 Maker Faire 活动,期间便参观过 Makeblock 的摊位,里面展示了各种可编程的机器人设备(包括无人机、无人车、雕刻机及各种电子模块),这些设备都可以通过专门的图形化编程软件进行简单编程。同样,小朋友可以根据自己的想法或课程的任务,拖拽积木组合成指令块来达到控制设备运行的目的。
尽管其官网上展示了一句媒体对其的评价“Makeblock: Open Source 'Lego for adult'(适合成年人玩的开源乐高玩具)”,但我在那次的活动中还是看到了儿童编程教学寓教于乐的可能性。
Mixly
Arduino 有着丰富的扩展性和适用性,这让它成为极客爱好者的首选硬件平台。然而编程对部分人来说仍然是一道不低的技术壁垒,看着其官方推出的编程软件 Arduino IDE,估计很快就会「从入门到放弃」。Mixly 是一款基于 Blockly 的图形化 Arduino 编程软件,由北京师范大学教育学部创客教育实验室傅骞教授团队开发,旨在让没有编程基础的初学者通过 Mixly 也能在 Arduino 上快速实现自己的小想法。
国内常见的图形化 Arduino 编程工具还有 ArduBlock 和 S4A(Scratch for Arduino),不过对比一下,钟德夫还是推荐 Mixly。
官网:http://maker.bnu.edu.cn/mixly
好好搭搭
来自杭州好搭团队推出的基于 Scratch 开发的在线编程平台,使用者只需要打开浏览器根据想法修改代码,可以在线进行编译。好好搭搭支持 Scratch 动画编程、Arduino 硬件编程和其它第三方硬件,方便孩子从动画编程无缝过渡到硬件编程上。网站上有配套专门的教程,也会推出一些活动项目,较为适合低年级的小学生。唯一的不足是目前网站的 UI设计比较 old fashion。
小结
类似的图形化编程工具不在少数,它们能适配不同的硬件,让使用者针对不同的硬件进行编程开发。但由于有很多工具都是基于 Scratch 和 Blockly 进行开发的,所以在操作形式上,甚至界面设计上都是大同小异的,在此我就不多加介绍了。
在儿童教育中,图形化编程工具将编程图形化、可视化,结合了编程和硬件,可以充分培养孩童的动手能力并且可以在编程后把产品和实际生活联系起来,将知识真正融入生活。对于无编程基础的成年人来说,也是一个认识编程、扩展思维的好途径。
希望这些工具的开发者能继续完善产品(同时也希望开发者们收入颇丰),给大家用上更好用的图形化编程工具,让无编程基础的创客们能更快速方便地进行创造。