codelab.club ❤️ Vector

前言

Vector

我们近期接入了Vector!这是我们今年的里程碑之一,Vector代表着机器人的一种可能的未来。它是Cozmo的下一代。在我看来,Cozmo/Vector是划时代的AI玩具,它甚至成为了CMU(卡内基梅隆大学)教学机器人的教具,如CMU的Dave Touretzky教授(他是cozmo死忠粉)在社区里说的: cozmo在很多方面,至今独孤求败。

scratch3-adapter

codelab-adaptercodelab.club构建的基础设施之一。scratch3-adapter目标是使万物积木化,帮助没有编程经验又热爱创造的人,更容易地去实现他们的创意。

codelab-adapter是全球第一个将Vector积木化的工具,我们甚至赶在了官方的前边。今年上半年anki(Vector所属的公司)就推荐社区里关心教育的用户,使用scratch3-adapter作为将Cozmo接入教育平台的工具。

演示

我们先来看下演示视频:

例子中,我通过手势来"驾驶" Vector。 通过简单拼搭leap motion积木和Vector积木,我们就可以利用手势来"驾驶" Vector。

开发者视角

scratch3-adapter希望打造一个开放的生态,鼓励开发者和公司将自己的设备接入进来。我们希望降低开发者的接入门槛,不必从Scratch3.0的源码入手。目前官方的扩展机制,抛开文档缺失不说,每次发布新的积木,都得经历编写js插件、build vm、build gui,重新打包发布的过程, 繁琐而缓慢。

为了简化开发者自定义插件的流程,我们构建了scratch3-adapter,同时我们在scratch3.codelab.club中构建了通用的通道:EIM(Everything Is Message), 利用这两个东西,允许开发者连接AI、开源硬件、物联网或任何开放的东西。为了支持开发者做更复杂的扩展,我们加入了json积木,允许用户在自定义的Python插件和Scratch之间传递复杂的数据结构:Python与Scratch的双向通信。如果开发者追求简便而不是扩展性,我们也准备了更为便捷的通道:使用Python拓展Scratch的能力

EIM虽然扩展了Scratch的能力,但开发者往往觉得还不够,他们希望能自定义积木的外观和构建新的原语,而不是使用EIM中最原始的通信原语,也就是说他们希望直接面相用户构建积木的样式。Vector的接入是很好的案例,我们在此把技巧分享给大家。

在这个例子中,我们演示了如何使用json积木块来传递复杂的数据结构(类似RPC的参数构造,包含方法(method)和参数(params)),之后使用EIM的send积木,将数据发往scratch3-adapter,这是scratch3-adapter中解析这个消息的插件代码:extension_vector.py

在scratch一侧,通过Scratch的自定义积木功能,创建出特定于应用的积木,而不是使用最原始的EIM积木。如此以来EIM成为实现自定义积木的底层设施。

我们构建了新的插件机制!scratch3-adapter为scratch 3.0构建了一种新的抽象层,兼容官方源码,但允许你用Python而不是JavaScript 来动态扩展Scratch3.0,无须重新build整个平台,同时为你保留了自定义积木外观的能力,这是我们构建开放的开放者生态的重要一步,欢迎开发者入坑: )

如此一来,开发者就这样就可以构建直观的积木给用户使用,eim作为实现它的底层,用户无需关心这部分。为了更加友好,你可以把自定义的部分放在一个独立的target(角色)里。在概念上它就像拓展包。target E表示EIM

插件本身包含在源码中,无需重新编译发布Scratch平台,这意味着扩展是分布式进行的,平台本身不需要调整(意味着更好的兼容性),你可以在我们不知情的情况下快速展开你的工作。完成你的扩展之后。下载下来分发给用户即可!

2019年1月份等Scratch team正式发布了Scratch3.0的稳定版,我们将同步开始构建线上社区,到时候你只需要给你的用户分发URL就行。




Fork me on GitHub