Geek专栏:在 Scratch 中玩转机器人:Python、Deep Learning、Posenet and Robot!

网友投稿 2019-05-30 11:46

https://cdn.china-scratch.com/timg/190601/11455a292-0.jpg

PAY  ATTENTION 

乐聚Geek专栏已正式开通,本专栏将不定期发布专业的技术贴,为热爱机器人技术的发烧友们提供干货哦!欢迎大家踊跃投稿。

https://cdn.china-scratch.com/timg/190601/1146002328-1.jpg

今天Geek专栏为大家带来

乐聚机器人王松博士的

“在 Scratch 中玩转机器人:

Python、Deep Learning、Posenet and Robot! ”

在 Scratch 中玩转机器人:Python、Deep Learning、Posenet and Robot!

所有的边界都被打破了 --《Mindstorms》

开场视频:先打个响指

打响指控制机器人

Codelab-Scratch3 与 Python

Scratch 是一门编程语言,上榜过编程语言 Top 20,实际它是一门少儿编程语言(如果你成年了请先不要急着走)。Scratch 基于图形化的编程,通过拖拉搭积木的方式进行编程,整个过程就像是在玩乐高积木,其实 Scratch 项目受到乐高的赞助,乐高与 Scratch 之间可以说是互相影响。

https://cdn.china-scratch.com/timg/190601/1146001E4-2.jpg

一个正经的程序员,在看到 Scratch 的卡通界面和图形化编程风格时,可能会嗤之以鼻,认为它看上去不像是严肃的编程语言,低龄化或者太简单了。刚开始我对 Scratch 的认知亦是如此。

@wwj718 在 Scratch3 上做了大量出色的工作,Scratch3 原本不支持运行 Python,利用 Scratch3 原生的插件拓展机制,采用 Websocket 来传递消息,这就像一个间谍,负责 Scratch 内部与外部的通信。消息源源不断地以话题/订阅的方式在网络中传播,这就让 Scratch 不再受限于浏览器网页中。我终于意识到,Scratch 可以做任何事!

https://cdn.china-scratch.com/timg/190601/1146002110-3.jpg

从上图看出,整个系统可以看做是三个部分:

· Scratch3:负责 Block 代码生成与运行,通过 websocket 传输消息;

· Codelab-Adapter:响应 Scratch 消息,Python 插件管理;

· Python 插件集合:负责连接万物!

按照这样的设计,Scratch 获得了 Python 的能力,可以将 Python 丰富的生态和库统统接入 Scratch,比如 TensorFlow、ML、DL,甚至可以是树莓派、灯泡、门锁、空调、机器人、游戏 ...

Bret Victor 在《Kill Math》中说道

理解并预测量化世界的能力不应该只属于那些能够熟练运用抽象数学符号的人。

而现在编程的能力也不应该只掌握在程序员的手上,不是所有人都要去学编程,在 Codelab-Scratch 中,用户可以快速和轻松地使用这些能力。

为了向你证明这一切,下面是我在 Scratch3 中做的一个演示。

人体姿态估计:Posenet

Javascript 版 PoseNet 是 TensorFlow 与谷歌创意实验室合作一款机器学习模型,可以在浏览器中实时估计人体姿态。只要电脑或手机有摄像头,就可以直接在网页浏览器中体验这一有趣的技术。Scratch3 也是纯网页端的,所以将 PoseNet 做成插件的话,Scratch 积木块就具有视觉的能力!

https://cdn.china-scratch.com/timg/190601/114600E09-4.gif

对PoseNet,@wwj718 已经在 Codelab-Scratch3 中接入了,智能硬件接口开放的话,接入 Scratch 中,就可以让原本功能单一的产品很容易地获得视觉能力。我相信这就是为我今天的演示所准备的,做一个 Scratch 版本的机甲猎人!

https://cdn.china-scratch.com/timg/190601/1146023I1-5.jpg

接入机器人到 Scratch3

首先硬件设备需要有开放的接口,比如开放的蓝牙协议、串口协议或者 Wi-Fi 协议等,Python 有非常成熟的库可以对这些接口进行调用(不开放也没关系,可以 Hack)。

我已提交 Aelos 机器人 Adapter 插件,感兴趣的可以参考我的 PR

·codelab_adapter_extensions/pull/13

·codelab_adapter_extensions/pull/14

手势控制演示

手势控制机器人前后左右翻滚

https://cdn.china-scratch.com/timg/190601/1146022c4-6.jpg

翻跟斗演示视频

姿态模仿演示

https://cdn.china-scratch.com/timg/190601/114602M10-7.jpg

下面是姿态模仿演示,请大家忽略我羞耻又沙雕的动作,和不协调的肢体

姿态模仿演示视频

最后

如果你也对这一块感兴趣,欢迎加入社区一起折腾。

https://www.codelab.club

相关链接

Kill-Math

Aelos Edu Robot

scratch3.codelab.club

codelab-adapter-docs.codelab.club

Pose Detection in the Browser

codelab_adapter_extensions/pull/13

codelab_adapter_extensions/pull/14

 

鸣谢

@jinbo 的 OSMO;

@yucong 的手抖式拍摄;

@jianhong 的专业动作调试;

@dongming 的无线 Dongle;

@carlos 的响指(我打不响,囧);

https://cdn.china-scratch.com/timg/190601/114603N31-8.jpg



--end--

声明:本文章由网友投稿作为教育分享用途,如有侵权原作者可通过邮件及时和我们联系删除:freemanzk@qq.com