近期在scratch3-adapter中加入了优必选Alpha系列机器人的驱动,于是我们可以在scratch3.0中为优必选Alpha系列机器人编程

我们近期的另一项工作是在scratch3.0中加入课程模式(类似code.org), 之后使用scratch3-adapter + scratch3.0就可以在web中教学机器人、AI和物联网,不损失web带来的好处(瘦客户端、跨平台、记录学习情况),又能与身边的硬件互动。

当然我更期待官方的microworld,等官方推出microworld,我到时候会将硬件整合进microworld。

考虑到优必选目前只对合作伙伴公开蓝牙通信协议,所以我们暂不公开这部分的驱动代码。待将来优必选公开蓝牙协议的细节后,这部分的源码也将开放给大家。

目前我们已经给出了移除协议细节之后的源码:extension_ubtrobot.py

在此记录一些思路和开发笔记。

机器人的驱动

为了在scratch3.0中使用积木为优必选Alpha系列机器人编程,我们需要先在scratch3-adapter构建插件,与机器人通信。

我们先来看一下scratch3-adapter的架构图

优必选Alpha系列机器人对外暴露蓝牙接口。从上边的架构图看出,scratch3-adapter允许开发者自定义任何的通信方式,无论是蓝牙(BT/BLE)、usb还是wifi。

优必选Alpha系列机器人内置的是蓝牙串口服务,在Mac和windows(win10/win7)上,当电脑与机器人建立蓝牙连接之后,在本地都会虚拟出蓝牙串口。之后在自定义插件中使用pyserial与之交互即可。

但值得注意的是,树莓派(Linux)上的操作方式并不一样,在linux下,建议先安装blueman来管理蓝牙。连接机器人时,选择serial port模式,之后会虚拟出/dev/rfcomm*

由于不同操作系统的蓝牙略有差异,建议使用platform.system()来区分不同平台(Darwin/Windows/Linux)

多个控制端

近期我们在做一个实验室解决方案,一个实验桌有多位学生,共同控制一个机器人,这是n-1架构。同时希望学生端可以同时使用ipad和电脑同时控制机器人。

我们的解决方案是让scratch3-adapter跑在树莓派中,对外提供服务,之后scratch3.0与树莓派交互。而学生在浏览器中与运行在树莓派里的scratch3-adapter交互,如此一来,就实现了n个学生共同控制一台机器人。


2019.1.21更新


目前优必选已经将alpha1系列机器人的蓝牙协议开放了, 如我们之前承诺的,我们的extension的源码也开源出来了: extension_ubtrobot.py

Alpha 1同时支持ble和bt,所以现在可以做到一个client同时控制多台机器人。就是说可以实现同时跳舞的功能。