技术使普通的物理材料(纸和泥土,卡片和玩具车)栩栩如生。 – Dynamicland

3.3.1 包含以下重大更新。

重大更新

DynamicTable

3.3.1 支持 DynamicTable。

DynamicTable 的核心是node_physical_blocks 插件, 该插件已经内置在 3.3.1 版本中。

DynamicTable 是:

  • 集体想象的产物。
  • 是一个工具包(toolkit),而不是一个 APP
    • 鼓励创作者使用剪刀、纸张、玩具等事物进行创作。
  • 是一种开放的可编程环境
    • 使用 Scratch 即时构建应用程序。
    • 基于 CodeLab Adapter 连接万物
      • 与 CodeLab 可编程空间拥有一样的设计理念,可以视为它的一个 micro 版本
  • 实物与虚拟事物融合在桌面上,可交互
    • 交互的规则由用户自定义
    • 在环境中,洞悉(seeing)事物的内部/运行状态,以便于创作者真正理解复杂事物

我们先来看几个在 DynamicTable 构建的项目:

关于 DynamicTable 的更多信息, 请参考:

新的 Web UI

Adapter 缺乏一个体面的 UI.

和许多开源项目一样,CodeLab Adapter 的 UI 有些简陋。

近期我们的合作方 Longan 团队正将 CodeLab Adapter 实施于商业项目,他们为 Adapter 重新设计了 UI:

新的 UI,致力于对用户更加友好和可理解,大家如果有什么更好的建议, 欢迎在 issue 中反馈,我们会持续迭代它。

新增插件

node_physical_blocks 插件

主要用于构建 DynamicTable。前边已经论述。

当然该插件也可以用于其他用途。

诸如周末活动的参与者 @taotao 今天在 Neverland 里编程时发现,在他没有动手拧动贴有 marker 的纸质方向盘时,marker 的角度信息仍然会发生细微变化,一开始我们都感到疑惑,以为是个 bug。但经过排查,发现原因是因为摄像机能捕获到肉眼不可见的 marker 位置变化, 而 marker 的位置变化则由桌面的微小震动引起(通过实验获知),所以它可以用于检测桌子的震动!

以上是程序代码,从舞台区的变量值,可以看到精度很高,能检测微小的震动引起的 marker 空间位置变化信息。而 Scratch 的动态交互式风格,让@taotao 在 debug 时发现了这个细微变化,提出这个看起来像是 bug 的问题,它实际是一个发现!

如果进一步放大震动,甚至有可能用于检测地震。

这是我们设计 node_physical_blocks 插件时,未曾想到的应用场景,由一个编程入门者的疑惑引起的发现。

我试着从今天的例子中,寻找原因。CodeLab 的活动围绕项目以及编程者的兴趣展开,由于其非体系化的结构,允许编程者自由探索活动过程的意外问题,而不是急着抵达某种教科书预设的知识或是算法技巧。

node_eim_monitor 插件

如果你是新手,想使用 Python 增强 Scratch,EIM Monitor 插件可能是最佳选择。

EIM Monitor 致力于在灵活与简易之间取得一个平衡,让新手能够轻松起步。

此前 EIM Monitor 只有 Extension 版本。如果你想引入 Python 社区的第三方库,它便无法满足。

于是我们构建了 EIM Monitor 的 Node 版本, 保持 EIM Monitor 简易性的同时,允许用户使用 Python 社区的任何第三方库。

Yanshee 插件

Yanshee 是一个开源人形机器人教学平台, 面向高中和大学生开发,提供专业开源学习软件。

Yanshee 是一个开放的硬件平台,采用 Raspberry Pi + STM32 开放式硬件平台架构,内嵌陀螺仪,开放 GPIO 接口。

采用基于 Linux 的开源软件架构,支持用户直接调用并集成海量的 Raspberry Pi 的开源软件模块

分离 Adapter client

重构前端 adapter client,使其独立成一个类:codelab_adapter_client.js, 方便第三方开发者集成,或用于自定义 UI。

目前 EIM 插件和 Web UI 都在使用它,源码是开放的。

增强自省能力

CodeLab Scratch EIM 插件增加了 is Adapter running 积木,从而允许用户动态得获取 Adapter 运行情况。

典型的用例是,当项目被社区用户打开时,可以告知用户是否需要启动 Adapter。

Adapter Version 目前已经添加到 env 中,可供外部应用程序查询,以便于协同合作。

提升安全性

  • 提升所有用到 eval 函数的插件的安全性。
  • 除了一些受信任域名,从其他域名连接 Adapter,需要手动输入 token(在 Web UI 中可以获取)。

插件增强 && bug 修复

  • 修复关闭 node 引起的问题。
  • 修复 node_minecraft 和 node_raspberrypi 的 bug。在 Scratch 中填入设备 IP,而不需要手动修改 Adapter 插件。
  • 增强 CodeLab Scratch json 插件,并添加社区文档.
  • @Hanson 同学为我们构建了 Box2D 插件的 文档
  • Cozmo/Vector 社区用户提到说 I’ve been playing with the Codelabs setup for Vector, but I am unable to work out how to return status variables from Vector.,我们之前只在 Cozmo 中完成这个功能,此次更新,将 Cozmo 的 sensor/event 迁移到了 Vector 插件中。
    • 哈哈,也贴上@moxley71看到我们的更新后的吹捧 Wow, fantastic response time. I wasn’t expecting this to be looked at, let alone addressed for at least a week. You sir, are a star!
  • 改进 extension_webserver 插件:文档,用户可以在 Adapter 中轻松构建自己的第一个网站。

开始使用

下载最新 Adapter

配合 CodeLab Scratch 使用时,建议刷新浏览器缓存。