
作者:john
概述
教育机器人是由生产厂商专门开发的以激发学生学习兴趣、培养学生综合能力为目标的机器人成品、套装或散件。它除了机器人机体本身之外,还有相应的控制软件和教学课本等。2014年Intel推出了edison平台,下面我们就基于edison平台,来搭建一个有趣的小智能机器人。
这个小智能机器人使用了一款名叫Multiplo的开源机器人积木套件。详细的资料,可以从multiplo的官方网站上得到,甚至所有的零件3D模型,都可以找到。拿到这些模型之后,你可以使用CNC或者3D打印机自己制造一批这样的零件,按照自己的想法,做一个简单的机器人车身。
总体的思路是使用multiplo的套件来控制车身运动,multiplo的主控板通过串口与edison连接。Edison连接摄像头与LED点阵。上电之后edison通过串口发送命令给multiplo板,开始向四周转动,edison通过摄像头获取视频图像,然后通过opencv库来识别人脸,发现人脸之后,edison在发控制命令给multiplo板,让云台停止转动,并让小车转向正对人脸的方向。
车身的装配
Multiplo套件中基本都包含下图这样的零件:

我们看到,套间里面有电池盒、电机、各种传感器,以及右边的这种通用板件。这些板件通过下图的连接铆钉互相连接。

上下两张板件叠在一起,对准孔,然后用铆钉穿过去固定。如下图:

当然,还有其他的通用板件,还可以组装出车轮,云台等等。这些都可以在multiplo的网站上找到组装说明。
下面的图片是我自己组装的一个小车的模型,组装原则是尽可能用通用板件组装的大一点,这样能够放下所有的机器人小车需要的零件。

这个部分没有固定,是因为有可能还要往中间安装一些零件,所以做成可以打开的样子。

总之,这个小车的样子没有特别的要求,全看各位的想象力了。
基于上面的形式,我们组装的小车是这个样子的。

车身运动部分
小车的动力部分直接用了multiplo套件中的直流电机,因为直接用直流电源控制,所以无法做到随意控制电机正传反转,所以我们还使用了multiplo的主控板,这块板卡是arduino based的,上面集成了一片L298N的H桥芯片,然后我们使用了multiplo的arduino库来直接控制H桥,这些源码都可以从multiplo的网站下载:
http://multiplo.org/duinopack-1/
multiplo主控板的图片:

组装时,需要把两个直流电机连接到M0和M1接口,就是最下边中间的两个红色接口,舵机接到S5接口,就是上图左边最下面的蓝色接口,舵机主要用来控制承载摄像头和LED点阵的云台转动。Multiplo板通过串口与上位的edison板连接,也就是右下角白色的COMM接口。电池盒连接在上面的白色接口处。上电之后,multiplo板卡开始坚挺串口,并等待edison板卡发来的命令。
Arduino部分的代码:点击下载
Edison控制部分
Edison固件更新
从Edison - Software Downloads下载最新的image(ww05-15)和driver
参照Getting Started with the Intel® Edison Board for Windows,连接至Edison
按照Flashing Intel® Edison (wired) - Windows更新Edison中的固件
使用串口连接到Edison,运行configure-edison --setup,配置设备的SSH服务以及wifi
Edison控制摄像头配置
Edison板卡上需要摄像头需要先做一些配置。
先按照
首先打开配置文件/etc/opkg/base-feeds.conf
在文件中添加下列源:
src/gz all http://repo.opkg.net/edison/repo/all
src/gz edison http://repo.opkg.net/edison/repo/edison
src/gz core2-32 http://repo.opkg.net/edison/repo/core2-32
终端中更新源列表:
opkg update
然后在终端中执行:
opkg install kernel-module-uvcvideo
opkg install opencv-dev
注意:如果opencv-dev安装不成功,请再试一次,并在指令后面增加--force-reinstall。
kernel-module-uvcvideo是一个比较通用的摄像头模块,支持大部分摄像头。 opencv-dev则是opencv的库,因为下面的demo中涉及opencv,所以要安装。
这两个包安装完成后,将摄像头与Edison连接,记得将小开关扳至A型USB口一侧(大口)。
连接后,在终端中输如dmesg,可以看到usbcore: registered new interface driver uvcvideo之类的信息。
这样就可以使用摄像头了。
Edison控制麦克风和音箱
升级到最新的ww05的image之后,需要安装下面两个pkg。
opkg install kernel-module-snd-usb-audio
opkg install alsa-utils
前一个是edison的声卡驱动,后一个是用来alsa声卡的实用程序,然后通过运行下面的程序,测试usb声卡是不是ok了。
root@edison:~# aplay -Ll
null
Discard all samples (playback) or generate zero samples (capture)
default:CARD=Loopback
Loopback, Loopback PCM
Default Audio Device
sysdefault:CARD=Loopback
Loopback, Loopback PCM
Default Audio Device
default:CARD=Set
C-Media USB Headphone Set, USB Audio
Default Audio Device
sysdefault:CARD=Set
C-Media USB Headphone Set, USB Audio
Default Audio Device
**** List of PLAYBACK Hardware Devices ****
card 0: Loopback [Loopback], device 0: Loopback PCM [Loopback PCM]
Subdevices: 8/8
Subdevice #0: subdevice #0
Subdevice #1: subdevice #1
Subdevice #2: subdevice #2
Subdevice #3: subdevice #3
Subdevice #4: subdevice #4
Subdevice #5: subdevice #5
Subdevice #6: subdevice #6
Subdevice #7: subdevice #7
card 0: Loopback [Loopback], device 1: Loopback PCM [Loopback PCM]
Subdevices: 8/8
Subdevice #0: subdevice #0
Subdevice #1: subdevice #1
Subdevice #2: subdevice #2
Subdevice #3: subdevice #3
Subdevice #4: subdevice #4
Subdevice #5: subdevice #5
Subdevice #6: subdevice #6
Subdevice #7: subdevice #7
card 1: Set [C-Media USB Headphone Set], device 0: USB Audio [USB Audio]
Subdevices: 1/1
Subdevice #0: subdevice #0
root@edison:~#
上面最后的几行C-Media USB xxxx跟你在dmesg里面看到的一样,就是你的声卡
然后:
vi /etc/asound.conf
在里面填上下面的句子,注意,最后一个Set是设备的名字,要跟上面aplay –Ll里面的最后的Card名字一样,我上面是card 1: Set [C-Media USB Headphone Set],所以这里应该是sysdefault:Set。
pcm.!default sysdefault:Set
保存。这句话,是为了告诉系统,要用这个设备作为默认的声音输出设备。
好了,你的edison已经可以播放wav文件了。
aplay /usr/share/sounds/alsa/Front_Center.wav
这个/usr/share/sounds/alsa/目录就是刚才装alsa_utils的时候自动安装了很多测试的声音,输入上面的命令之后,你就能从音箱中听到测试声音了。不过目前只能播放wav,如果需要edison播放mp3,还需要安装一个MP3播放器:
opkg install mpg123
以后播放MP3,就可以直接输入mpg123 xxx.mp3.
摄像头、LED点阵以及摄像头麦克风的连接
要连接上述的设备,需要使用edison板上的大USB接口,可是只有一个USB口,怎么接怎么多设备呢?还需要一个USB HUB。整个连接方式如下图所示:

如果你愿意,也可以用耳麦来代替MIC和音箱,不过就没那么方便了。建议USB HUB使用有源的,或者Edison的供电使用电流大的适配器。
连接好上面的设备之后,再在控制台输入上面的命令
aplay /usr/share/sounds/alsa/Front_Center.wav
就能从音箱中听到声音了。
最后还需要连接LED点阵,才能使机器人的表情能够显示出来。我们目前使用的LED点阵式16*16的红绿双色点阵,如图:

背部接口如下图所示:

与edison连接时,需要将上图LED阵列的IN端,按照SERC->SERB的顺序,依次插入开发板的DIGITAL区的13-6引脚,7引脚不用,使用会导致wifi不稳定。连接LED阵列的电源。接线图如下所示。

接线到此为止。
程序运行
你可以选择用ssh上传程序至Edison,也可以用Eclipse的Remote Application功能运行程序。不过在运行前记得将BigEyes文件夹下的haarcascade_frontalface_alt.xml通过scp或者sftp拷贝至和程序同一个目录。这个是人脸识别的分类器文件,程序需要使用它进行人脸检测。
同时还需要将附带的三个声音文件welcome.wav、 hello.wav和unhappy.wav传到BigEyes/sound文件夹下,这三个文件会分别在系统启动时、发现人脸时,以及人脸消失时播放。当然你也可以换成自己想要的声音,只要是wav格式就行了。
运行程序,你可以在终端中看到width:160 height:120的字样,摄像头指示灯亮起(如果有的话),摄像头和LED会不停的环视180度的范围,LED阵列显示表情,且表情会随着人脸检测的结果变化。
程序源代码:点击下载
Edison开发环境
如果你只想运行我们提供的程序,那以上的配置结束后,就可以了,如果你想自己在开发一些有趣的功能,那就需要在edison上编写程序,配置edison的开发环境,有一个比较简单的方法就是直接去Intel的官网上下载一个配置好的Eclipse IDE,网址如下:
http://www.intel.com/support/motherboards/desktop/sb/CS-035343.htm
其中有linux、windows、mac对应的IDE,请按照你的系统来选择不同的IDE。
下载好之后,直接解压缩,然后打开下图的devkit-laucher.bat就可以使用了。

打开之后,导入智能机器人的工程就可以做二次开发了。
运行结果
程序运行后,摄像头会不停转动。如下图:

文章来源:创客大爆炸