Cozmo what is this
文章目录
前言
Cozmo官方在11月15号发博文称2017.12.05号这天将会发布一个大版本,在这个版本中Code Lab将会得到极大的增强,最大的更新是界面中将增加Constructor Mode。
它长这样:
Constructor Mode增加了更多的编程积木,包括条件语句、数学操作符、变量函数等等,高阶用户将能做出更具表现力的东西。
而原先基于图标的编程界面也将保留,对于低龄用户和新手,它更为友好和直观。
顺便一提,如此惊艳而流畅的操作界面基于scratch3.0。
我数着日子等呀等,到了12.04号,一早跑到二楼南书房,打开Google Play,心想官方说不定想给大家一个惊喜,提前一天发布了更新。于是我有些手抖地在Google Play输入Cozmo,等待进度条加载的时候,就像等待期末考试突击科目的成绩,真是坐立难安,恨不能找个插件以刮奖的方式查看结果。
哈,还好没更新,不然我都没有做好心理准备,要怎么来表现我的开心。这就像表白的时候,心理有个声音说拒绝我吧拒绝我吧,不然我开心得不知道下一步该干嘛。
这样一来我就有足足一天的时间迎接cozmo的大版本更新!我打开之前用Cozmo Python SDK写过的项目,突然想到大版本更新之后,对我之前的作品不兼容怎么办?
我赶紧整理了一下做过的好玩项目,趁它更新之前,发布到github和官方论坛里。
Cozmo what is this
|
|
我们来看看实际效果。(只录了cozmo回答的部分,声音可能有点小,记得调大你的音量呢。)
我来简单介绍一下这个项目。一开始,Cozmo安静地呆在桌子上,你可以向它发号施令,Cozmo虽然脾气有点坏,不过目前还不会像吴克群那样抱怨说:
|
|
所以你可以放心命令它左走右走,前进后退。如果你愿意你还可以问它:
能不能为我再跳一支舞,你记否千百年前借伞的西湖。
我很恶俗地改了歌词。为了让它跳舞,你只要说:
cozmo dances.
ps: 我为它增加了中文支持,目前的语义处理很弱,所以你说出我上边那段恶俗的歌词,它可能还真会为你跳一支舞 :)
我们可以发号施令,让cozmo在桌子上四处游荡,当它来到一个咖啡杯面前时,你可以问它:
Cozmo, what is this?
它会站在咖啡杯面前,若有所思说:
Let me see… Oh, it is the coffee mug.
如此一来你可以让Cozmo在屋子里来回走动,询问它都看到些什么。
目前我已经把项目源码放在了github上:Cozmo-What-Is-This,同时也发到了Cozmo官方社区里:Cozmo What Is This: use Inception-v3 model to identify objects
社区里有个国外小哥,run了这个项目,还录了视频发到了YouTube:cozmo AI voice command and image recognition。
如果你访问不了YouTube也没关系,因为这个小哥拍的实在有点烂,我原本想跟他说你在视频下放上我的源码库链接吧,这样其他感兴趣的小伙伴可以自己run起来。后来看了视频后,觉得还是不要让大家知道这个视频与我的项目有关为好。
灵感来自组合
Cozmo-What-Is-This实际组合了社区里的两个项目。
其一是CrowdFlower的创始人Lukas之前做过的一个爆款项目: How to build a robot that “sees” with $100 and TensorFlow,这个项目让树莓派机器人在屋子里游荡,每当看到什么东西在面前,它就会说 “I am thinking… it is xxx”, 这个机器人好像一个吟游诗人,在它所行之处,赋予所见之物以名字。
这个机器人在说"I am thinking…“的时候,我简直被为作者的机智所折服。该项目用到了inception-v3 model,树莓派上跑神经网络很慢,于是作者在让机器人先说出"I am thinking…",这段时间树莓派实际是在缓慢地跑神经网络模型来识别拍摄的图片,而观众会以为机器人真的在思考(因为它就是那样说的啊,而且还真的低头沉思),尽管时间有点久,大家的好奇心反而加重,不会表现出不耐烦,等它终于说出正确的结果,观众会觉得刚才果真是在深思呢!(《银河系漫游指南》里deepThought在回答The answer to life, universe and everything is 42
可是用了750万年 : )
“I am thinking…“这个心理学小技巧也被我纳入到Cozmo-What-Is-This项目里。
由于Lukas没有开放源代码,我自己复现了这个项目的核心部分,有兴趣的同学可以戳这里:基于树莓派和Tensowflow的物体识别-brain。
灵感来源的第二个项目是Cozmo-Voice-Commands ,这个项目写的很棒,让Cozmo能接收语音指令。
这个项目也是Cozmo-What-Is-This的基础骨架,我fork了它,整个控制流程用的是该项目,在原本的基础上我做了两个工作:其一是加入中文支持(目前加上中文之后,一共支持5门语言);其二是加入了cozmo what is this
这条语音指令。
这种组合已有的社区项目,在它们基础上去实现自己的想法,是开源社区常见的做法。有人统计过,github上代码重复率很高,对这个研究有兴趣的朋友可以戳这篇论文:A Map of Code Duplicates on GitHub,研究称GitHub 上 82% 的代码是重复代码
,我觉得是一件好事,说明大家都在高效地复用代码,而不是闭上门来钻木取火。
run it
接下来假设你也是一个Cozmo玩家,我来教你如何把这个项目跑起来。
首先你当然得有一台Cozmo , 没有的同学可以关上电脑洗洗睡了 :)
1.安装Cozmo Python SDK
Cozmo Python SDK的安装方法官方文档里写的很详细,结合你的操作系统和移动设备,跟着教程来即可。如果你在安装的过程有遇到什么困难,可以到社区里求助,当然也可以给我发邮件,我会尽量为你提供帮助。
2.安装portaudio
安装方式根据你的操作系统不同而不同。
- MacOS:
brew install portaudio
(当然你首先需要安装了Homebrew) - Linux:
sudo apt-get install flac portaudio19-dev python-all-dev python3-all-dev && pip3 install --user PyAudio
- Windows: 你需要安装一下git
3.克隆项目
git clone https://github.com/wwj718/Cozmo-What-Is-This
4.安装依赖
|
|
就绪
一切就绪,就可以运行这个项目啦: python cvc.py
之后程序让你选择使用一门语言来控制Cozmo。(我一般用英文或中文)
现在你可以问Cozmo:
Cozmo, what is this?
或者
小不点,这是什么
感觉小不点
不大好听,起名果然是最难的事情之一,岂止是为变量起名。
Enjoy yourself :)
Todo
我准备把唤醒词和判断语音终止的功能加入这个项目里,如此一来交互过程将更为自然。这块的功能去扒智能音响类项目的代码就好了,dingdang-robot是个不错的选择,代码清晰明了。我最近比较忙,如果你提前做好了,到时候给我提个PR呢 : )
文章作者 种瓜
上次更新 2017-12-08