MAKE 一套能用眼睛写字画画的眼动仪


眼睛作家是一台低成本视线跟踪装置,配备有特制软件,方便那些因肌肉萎缩、偏瘫、硬化症而瘫痪的随笔作家和艺术家用他们的眼睛来创作。




下面展示的原型设计,以一副眼镜为基本设备,方便“眼睛创作者”工作:

从第一个视频展示开始,我们一直深入发掘和改进装置,最终我们有个新版本问世–“眼睛作家2.0”。新版本改善了输入准确度,即使用户头部轻微移动也能使用。旧版本眼睛作家是为瘫痪作家而设计的,是要戴在完全无法运动的头部上使用的。2.0版本设计上使用一个摄像头和LED系统,将其远离头部放置,于是头部轻微移动的用户也能使用了,例如多发性硬化症患者、戴眼镜的人等等。

眼睛作家既廉价又完全开源。现时,零件成本大约200美金,而传统商用视线跟踪系统则需9000至20000美金。便宜订单是巨大吸引力,也是设计给那些需要视线跟踪器的人。

这个秋季,我们展出和公测了眼睛作家2.0。我们甚至将其与一个机械臂连接,用来画出人们用眼睛视线创作的艺术作品。

http://www.switched.com/2010/12/13/eyewriter-teams-up-with-robotagger-to-print-kids-ocular-artwork/print/

(2.0版本在设计过程中,在Ito Takayuki、Kyle McDonald、Golan Levin和Parsons大学“眼睛作家“协作小组的学生帮助和录入下得以完成。同时也鸣谢卡内基梅隆大学创意调查工作室为开发设立一个部门。)

步骤1:总览

简单来说,我们就做了几件事。首先,我们将发光LED放在屏幕边缘和中央。接着,我们拆开利用PS3的摄像头,用以获得垂直同步信号(产生于拍摄每帧图像时),使红外传感器探测到。第三步是编程步骤,建立Arduino和电路,控制闪光信号。最后,我们为这个系统做个底层,初步测试软件。

以技术角度来看,2.0版本系统以3个红外发光器对每帧进行闪频观测。在偶数帧时,瞳孔出现发光,那是因为红外光正从你的眼中反射回来,就像常见那种照相机红眼现象那样。在奇数帧时,你的瞳孔则是黯淡的。两者的差别使我们实时区别追踪瞳孔轨迹成为可能。进一步说,探测到由红外发光造成的反光,加上瞳孔中的信息,用反光/瞳孔位置映射算法方程的最小二乘法拟合(中文百度百科Least Squares Fitting)进行屏幕位置校正。

步骤2:零件清单

在动工之前,我们需要合理数目的零件制作这个设备。看看上图,先对我们做的东西有个概念,而详细零件清单在PDF档案里已有列明。

零件清单下载

步骤3:软件——开放式框架与眼睛作家


眼睛作家2.0由数个程序片断组装及运行。在这个步骤中,我们讲述如何下载安装集成开发环境、程序开放式框架及眼睛作家程序本身。

一、集成开发环境(IDE)
• 集成开发环境(IDE)是为软件开发程序员准备的综合性开发工具软件。
• 如有需要,下面链接用以下载安装一个IDE来运行开放式程序框架。
http://www.openframeworks.cc/setup

二、开放式程序框架
• 开放式程序框架以C 库文件设计,以简单直观的实验框架为创造过程提供帮助。
• 如有需要,可于下面链接下载开放式程序框架。
http://www.openframeworks.cc/download

三、眼睛作家的GitHub
• GitHub是一个基于网页界面的分布式版本控制系统,用户们在这个平台上分享交换程序代码。
• 眼睛作家的源代码在以下GitHub页面内。
http://github.com/eyewriter/eyewriter/tree/remoteEyetracker
• 在右上角菜单中下载代码。
• 选择ZIP格式。
• 完成下载后,解压缩文件,将“eyewriter-xxxxxx”文件夹移动到开放式框架的“apps”文件夹中。
• 打开“apps/eyewriter-xxxxxxx/eyeWriterTracker/RemoteEyeTracker.xcodeproj”文件,测试所有安装程序工作无恙。
• 试运行源代码,跟踪调试窗口应该出现在演示视频模式中。

步骤4:软件——摄像头和Arduino

我们需要为硬件安装多两个驱动。摄像头驱动建立起PS3摄像头和电脑之间的交互,Arduino软件则提供软件和硬件之间的接口。

安装PS摄像头驱动
Mac系统下:
• Macam是Mac OS X的USB摄像头驱动程序,数以百计的USB摄像头通过它能被Mac OS X的视频捕捉程序所识别。我们用的是PS3摄像头,那么驱动程序就是为了让电脑识别它所要安装的。
• 从SourceForge链接下载摄像头驱动程序。
• 下载完成后,解压缩档案,将macam.component放入硬盘里 /Library/Quicktime/文件夹中。
PC版本的:
• 下载CL-Eye-Driver并安装。
Arduino
• Arduino是嵌入式计算机系统的设计开发工具,有开源单片机控制硬件、集成了输入输出和基本程序语言所组成。
• 从http://arduino.cc/en/Main/Software下载安装Arduino软件。
• 不熟悉Arduino环境的话,http://arduino.cc/en/Guide/HomePage内可以参考入门解说。

步骤5:载入Arduino程序框架

在这里,你需要载入Arduino程序框架,以便PS摄像头工作。

一、Arduino程序框架(仅限PS摄像头使用)
• 在Arduino IDE软件内载入Arduino眼睛作家程序框架“apps/eyewriter-xxxxxxx/eyeWriterTracker/StrobeEye/StrobeEye.pde”,使眼睛作家软件能识别硬件。
• 当Arduino板连接上时,将程序框架上载到板内。如果你不熟悉这一步,请参阅http://arduino.cc/en/Guide/HomePage内的入门解说。

步骤6:硬件:电源适配器


电源适配器
在这里,你需要切下一段电源适配器的导线,用以驱动面包板电路。
• 剪下7.5伏电源适配器的接口。
• 用电压计从裸露导线中确定正负极。
• 用一段剥好的红线和黑线,将红线焊上适配器的正极导线,黑线焊上负极导线。
• 先单独捆扎裸露导线,确保正负极分开不会短路,然后再将它们扎在一块,确保没有导线裸露。

步骤7:硬件:红外LED










红外LED
• 收集8个红外发光二极管(IR LED)和一片圆形的印刷电路板(PCB)。
• 在PCB上做一个LED阵列,你需要确定每个LED的正负极引脚。一般来说,长脚阳(正),短脚阴(负)。另外,在镜头发光阴极那边往往有个扁平斑点。为方便区分,不妨在导线节点上标注正负极。
• 串联4个LED为一组,下一组也是4个,互相并联。将LED的引脚剪短柄焊接在一起。
• 将LED引脚焊接在一起组成电路后,将大约2英尺(约60厘米)的红绿通信导线分别焊到LED电路的正负两端。
• 测试LED的PCB电路板,建立下图所示电路。仔细观察红外LED是否发出黯淡的红光。
• 确认红外LED工作无误后,用热熔胶固定电路板背后的所有节点。
• 重复以上1~5步,做多一些LED PCB电路板。
• 用一块较大的圆形PCB,小心在中间钻一个洞,如下图所示。
• 在PCB的外缘,建立一个4个LED串联一组共4个互相并联电路。LED的放置位置需使PS摄像头正好吻合,而摄像头不会阻挡住LED。
• 在焊接好LED引脚组成电路和4对正负极电源导线后,将4组LED并联排列。
• 焊接约2英尺(约60厘米)红绿通信导线至LED电路的正负极端点。
• 建立如下的电路see schematic here来测试较大的LED PCB板,看看红外LED是否发出黯淡红光。
• 确认红外LED工作无误后,用热熔胶固定电路板背后的所有节点。

步骤8:拆解PS摄像头——前期准备


在这里我们讲解如何取出PS摄像头。对于替换摄像镜头、加装红外滤镜和连接垂直同步信号来说这步是必须的。
• 拿出PS摄像头。温馨提示:私拆不保,责任自负。
• 撬开四颗盒子底部的螺帽。

• 扭下四颗螺帽下的螺丝。别丢掉,稍后你要用回它们。

• 拿掉四颗螺丝后,继续撬开后半部分盒子,建议使用一字螺丝刀和锤子,或一把尖嘴钳。使用巧劲,别坏了里面的东西或伤着自己。

• 拉出导线,将塑料座边上的两颗底部螺丝扭下来,保留它们备用。


• 拿掉垂直的部分。
• 扭下电路板周围的五颗螺丝(两颗在边上,三颗在上面),同样保留它们备用。


• 拿掉五颗螺丝后,从盒子前面拿起电路板。
• 有四个麦克风穿过电路板顶部。直接使用剪子剪掉它们,我们用不着它们。



• PS摄像电路板准备完毕,随时可接线。下一步是将它连接垂直同步信号和接地点。

步骤9:拆解PS摄像头–垂直同步信号

在这里我们讲解获取摄像头同步垂直信号流程。同步垂直信号生成取决于摄像头刷新率,而获取它对项目来说至关重要,它是将摄像头刷新率和红外LED吻合的唯一办法。
• 在PS摄像头电路板上标定接地节点。有些型号的PS摄像头在镜头座附近有5个节点(下面左图),而另外一些型号则有4个(下面右图)。如果你的型号有5个节点,那么接地点则是最靠近镜头座的那个。如果你的型号有4个节点,接地点还是在最靠近镜头座的那个,只是它的宽度大概是其他节点的两倍。

• 剪下约2英尺(60厘米)长4色通讯导线,将红线和绿线从黑线白线中间分离开来。

• 将红线和绿线从一端分出约2英寸(5厘米)长,将绿线上面的绝缘层剥开,然后把绿线焊在PS摄像头的接地点上。
• 将PS摄像头电路板和绿线夹在一个架子上,准备将它们焊接。可以用一小片厚纸或卡纸夹在夹子和电路板之间防止刮花电路板。

• 将绿线焊接在PS摄像头接地点上。
• 在电路板上找出垂直同步信号区域,在下图圆圈内所示。

注意:更新型号的PS摄像头(可以由电路板外缘的金色滚边所识别)中,垂直同步信号热点在PCB板的前面,电阻R19正上方。

而更加新型的摄像头也已经投入市场(v9.2),下图告诉你如何区分识别他们,以及在上面怎样找到垂直同步信号热点。


• 用一把锋利的小刀,小心用刀尖在热点区上刮下一些绝缘覆膜,将金属接触面暴露开来。

• 红线要连接在裸露的垂直同步信号区,但导线太粗了,不能很好平整地焊在这块小区域上,所以需要用一根30码导线作为中转。将两根30码导线末端剥线。
• 截短红线,然后将30码导线其中一端和红线一端焊接起来。

• 在将30码导线焊在信号区之前,先做个测试来确保所有连接正常。建立下图的电路,当30码导线接触到信号区时,面包板上面的LED应该会快速闪烁。

• 用0.022英寸粗(0.56毫米)的焊锡小心将30码导线和裸露的信号区焊接起来,从面包板上闪烁的LED可以确定是否成功。

步骤10:拆解PS摄像头——完成

这里介绍如何将摄像头重组一体。
• 松开固定镜头的两颗螺丝,小心操作,垂直同步信号传输节点是很脆弱的。拆开镜头,放好螺丝。

• 量度新装镜头架的正方形开口大小。用滤纸裁减一个刚好大小的正方形,将其放入开口处。


• 滤纸到位后,螺接新的镜头架。也许需要出一些力,镜头架对于电路板来说稍大,导致其中一个螺丝将成角度钻入。

• 将新的镜头旋进电路板新镜头架上。

• 灌热熔胶固定保护垂直同步信号连接。

步骤11:全电路

在这里我们告诉大家如何在面包板上组装电路,而这是让Arduino融入眼睛作家的最初过程。
• 用下面电路图组装电路。

• 组装好全部电路后,眼睛作家的代码已预备妥当,等待摄像机实时输入。要从演示视频模式切换回实时图像模式,打开“apps/eyewriter-xxxxxxx/eyeWriterTracker/bin/data/Settings/inputSettings.xml”,将mode tag选项从1改为0。
• 打开“apps/eyewriter-xxxxxxx/eyeWriterTracker/RemoteEyeTracker.xcodeprof”文件,运行源代码,跟踪调试画面应该显示PS的摄像头拍摄的画面。

步骤12:制作木头底座


在这一步,我们讨论如何做一个便携木制底座。做这个蛮有趣的,做出来的硬件系统因此就有个稳固外壳可以放置其中,便于测试、调整及和眼睛作家软件联动。
下面列出底座所需材料零件;
• 两根约20英寸长5/16木棒。(A)
• 2根约1.5英寸长5/16木棒。(D)
• 1块20 x 4 x 0.5英寸大小木块。(B)
• 3块3 x 1.75 x 1.75英寸木块。(C)
• 和木棒直径相若的钻头。
• 第一步: 用图中零件中的第三块C部件调整另外两块C部件,用台钳夹住它们,在离边缘约0.75英寸处钻穿它们。

• 第二步: 用两个已经钻好相同洞眼的C部件,将它们放在B部件的边缘,将调整处夹紧,在B部件长钻进约1.5英寸深。将短木棒插进B部件边缘的洞眼,穿过C部件的洞眼。

• 第三步:
钻出一个适合三脚架快装板固定螺丝的洞眼。

• 第四步:
在底座(B)和边缘部件(C)安装好后,将木棒(A)插入洞眼,用底座边长调整尺寸。

步骤13:使用眼睛作家软件——安装及调试屏幕


这里我们为你介绍眼睛作家这款软件,以便你能安装它。
• 选择右面计算机视角面板(CV)第一排的对焦选项以调节摄像头焦距。旋转摄像头镜头,直到图像变得清晰,接着取消选单返回调试画面。

• 选择右面板第一排的载入视频设置。

PS3摄像头的设置:
一般来说,你希望有明亮、平衡的图像,噪点越少越好。在网络摄像头选项中,调节增益和快门选项,直到图像变得理想。
• 在压缩选项中,如果你用的计算机速度较快,那就设置每秒帧数为30,慢的话就调到15。

步骤14:用眼睛作家进行屏幕定位

在这步中完成屏幕校正。
• 按下空格键出现指引提示,在按下空格键开始。当红点出现时,盯着看吧。

• 在校正后,蓝线显示所有校正误差范围。当出现长条蓝线时,按下空格键重设校正步骤。

步骤15:用眼睛作家玩抓人游戏


• 盯着“抓我吧”方块,方块的颜色将转为绿色。
• 当方块完全绿色时,意味着捕捉到了,接着它会出现在别的地方。不断抓取方块,这用来测试校正视线追踪功能。

步骤16:使用眼睛作家作画

字母作画
• 在你开始作画前,绘图模式默认为暂停状态。你能调节是否使用背景网格。背景网格在暂停时可随时调出。
• 盯住暂停按钮切换到录制模式以开始绘图。当你盯住它的时候,按钮会转为绿色,就切换为录制模式。
• 绘图模式使用向量点。盯住画布某个地方大约一秒钟,画一个节点。绿色的眼球跟踪圆圈需要停留一会来定点。
• 当你增加节点时,它们之间就画上连接。以此,你能画出不同形状和字母。新开一条线的话,只需盯住下一笔这个按钮。
• 要修改你画的东西,可选择撤销节点,以将上一点移除,或选择撤销笔画,就能将上一笔画全部去除。
• 要储存现有形状或字母,画一个新的,就盯住下一个字母这个按钮。刚刚画好的字母会出现在屏幕上方,一张新画布等待着你画新的字母上去。
• 当你完成形状和字母绘图时,盯住下个模式,切换到放置模式。
放置模式
• 默认情况下,你画的所有字母都会用作放置用途。盯住选择字母按钮,以选择特定的一个。
• 选择旋转按钮,将你选择的图像右转(顺时针)或左转(逆时针)。
• 选择位移,可将你选择的图像上下左右移动。
• 选择缩放,可将你选择的图像放大缩小。
• 自动放置则按照你绘图的顺序依次放置你画的字母。
• 当你完成放置图形和字母后,盯住下个模式切换到效果渲染模式。

步骤17:使用眼睛作家软件打字


• 你想按哪个键,就盯着哪个键。当你盯着的时候,按键的颜色变为绿色然后闪为蓝色。
• 字母键闪为蓝色后,就等于被按下了。在屏幕上方,你能看到你打了什么字。
• 按下屏幕左下方的SPEAK键将说出你打的词汇。切换语音朗读开关在屏幕的中间偏右,在你输入词汇并按下空格键后将自动阅读。
• 注意屏幕右下方的大写开关。在输入数字及特殊字符,例如“!@#$%”等需要手动切换。

步骤18:用眼睛作家玩打乒乓游戏

• 阻挡小球通过屏幕下方你的球拍光标。
• 球拍会滑向你目光移动到的X坐标。因此当你盯住移动小球时,球拍也随之横向移动。

via 作者:thesystemis 译者:Kalimov

坐沙发

发表评论

你的邮件地址不会公开


*