历史上的今天
今天是:2025年03月13日(星期四)
2019年03月13日 | 让眼睛变成控制按钮,工程师造低成本眼动追踪眼镜
2019-03-13 来源:eefocus
目前,在不让用户用手提供输入的情况下控制机器是非常困难的。 另外,在没有复杂输入设备的情况下在空间中指定位置可能非常困难。 该系统通过允许用户仅通过查看位置来指定位置,从而为该问题提供了新颖的解决方案。

通常,eyetracking解决方案非常昂贵且不是开源的,限制了它们用于创建者将它们集成到新项目中的用途。 本解决方案是完全开源的,易于构建,并将为有兴趣使用这种迷人和强大技术的制造商提供各种各样的选择。
本系统通过在工作表面和两个摄像机上使用一组定点激光信标来实现这一点。 一个摄像头看着用户的眼睛,另一个摄像头期待看到用户正在看什么。 眼睛相机通过捕获用户眼睛的红外反射,计算人类用户注视的方向,然后定义“看向量”来操作。 前置摄像头识别工作表面上的定点信标,测量每个视频帧中信标之间的像素距离,并定义用户相对于工作表面的位置。 使用来自两个摄像机的信息,系统将“观察矢量”映射到工作表面上,从而简单地通过观察将用户期望的空间位置传送到机器。
下面显示了一个流程图,显示了系统的所有不同部分如何协同工作。

制作
器件列表:

1、制作眼动跟踪眼镜

2、从相机外壳暴露PCB
你需要两个摄像头。 拆开他们。

卸下前挡板,然后拧下固定在摄像机外壳前面的三个固定螺钉。

还有两个螺丝将PCB固定在后壳上。一旦PCB从外壳中脱离,使用一对锡剪或剪线钳将外壳从USB线上切下。 小心不要损坏USB线。

一旦将两个PCB从外壳中取出,每个相机在安装到眼镜上之前都需要进行一些修改。

3、前置摄像头修改
在使用前置摄像头之前,需要使用不同的镜头和镜头卡口进行修改。
您可以3D打印镜头卡口。 可以在此处找到STL文件: https : //goo.gl/PNbTHv
镜头可以在这里购买: https : //goo.gl/cxPK4H
两个螺钉将安装座固定在PCB上,位于PCB背面。

4、面对眼睛相机修改
在可以使用面向眼睛的相机之前,需要进行多次修改。
首先,拆除麦克风并将其从PCB上拆下,否则会干扰玻璃。

接下来,用红外LED替换绿色LED(PCB上的D1)。 IR LED可以在这里购买: https : //www.digikey.com/short/jf1q47
并用75欧姆电阻替换电阻(PCB上的R22)。 电阻可以在这里购买: https : //www.digikey.com/short/jf18pt

接下来需要在镜头后面安装滤镜。 该滤光器阻挡可见光,并且仅允许来自LED的IR光被图像传感器检测到。 从5/16“方形的板材上切下一块过滤材料。过滤材料可以在这里购买: https : //www.amazon.com/Lee-Filters-87C-P3-Infrared-Polyester/dp/B00EPXQ8OA

从PCB上卸下镜头卡口。

将滤光片方块安装在镜头后面。

将镜头座重新安装到PCB上。

5、将前置摄像头安装到眼镜上
切割一块3/8“厚的1.6”x 2.0“木块,在中心钻一个0.54”的洞。 如果需要,调整孔尺寸,以便3D打印的镜头支架可以很好地压入孔中。 用小木螺钉将木质底座连接到眼镜上。 预钻眼镜和木材,使它们不会开裂。
从相机上的镜头座上拧下镜头,将镜头座与孔对齐,然后轻轻按下以将相机固定在木块中。
更换镜头并检查显示器上的焦点。 转动或转出镜头以调节焦距。
此外,某些类型的泡沫胶带应放置在前置摄像头PCB的背面,以保护用户免受摄像头产生的热量。

6、将眼动追踪相机安装到眼镜上
下一步需要在开始之前进行一些测试。 为了将眼动追踪相机安装在正确的位置,您必须将眼镜放在脸上,打开相机,并在显示器上查看此相机的视频输入。 将相机从眼镜外部对准您的眼睛。 您想要看到的是您的眼睛的红外反射,理想情况下,您希望在直视前方时看到反射的“点”出现在视频帧的中间。 如果点显示在框架边缘附近,请移动相机,直到点位置接近居中。
在不移动相机的情况下,取下眼镜并标记镜头位于眼镜外侧的位置。 在这个位置向眼镜钻一个0.40英寸的孔。注意:这个项目假设相机将在左眼上方。

接下来,在孔旁边放一小块Loctite Fun-Tak安装腻子,从镜头上拧下镜头,然后将镜头支架压入孔中,将相机PCB压入腻子。 更换镜头。

7、最后的步骤
使用拉链系统管理相机的线缆。

使用防震绳(弹力绳)使眼镜紧贴脸部。 使用眼动追踪时眼镜不应移动,否则校准将丢失。 根据您使用的品牌眼镜,您可能需要为电线钻孔。
未来的计划:
校准改进:
具有用于漫射光束的遮蔽胶带的红色激光已被用于表面的位置,用户的凝视将被映射到该表面上。 这将极大地改善校准并允许用户的注视作为用户输入馈送到计算机中。 可以使用任何表面,包括非常大的地板或仓库。
校准将转换为涉及用户查看移动点的工作流程。 将根据尚未实施的统计算法自动删除不良校准值,但将涉及校准点距离最后校准点的距离和方向的基本规则。 将删除距离上一个校准点两倍以上的校准点(后续输入将被插值,或者将要求用户重复校准),此外任何校准点与最后一个点的方向相反将被删除。
眼动追踪记录和分析:
目前没有记录眼动追踪数据。 添加了自定义构建日志库以解决此问题。 还需要记录视频,以便将用户的视线映射到特定图像或视频上以供进一步分析。 这意味着需要将视频记录在一起,以便将视频映射到由包含用户眼睛注视的系统创建的文件。 在静态UI分析的情况下,可以编写R脚本以提供热图。
机器寻址和控制:
该项目的最终目标是能够与机器进行交互,将其末端影响器(或机器本身)引导至某个位置。 这是解决免提问题的一个极其困难的问题。 通过这样做,用户将能够在不将他们的手从当前任务中移开的情况下指引机器。
目前,概念验证围绕移动修改的拾取和放置机器以基于用户的眼睛注视来拾取和移动块。 有关更多信息,请参阅github上的分支机器控制 。
许可:
该项目对所有软件和硬件使用Apache License Version 2.0(APLv2)。 这个软件可以在商业上使用,但良好的开源礼仪是:信用到期,所以请在使用时提及使用该软件。
该项目还使用以下第三方开源库: AForge.net和EMGU.net (OpenCV的包装库)该项目还使用了NVidia CUDA。
如果你对这个项目感兴趣,想获取完整信息请访问:
https://hackaday.io/project/153293-low-cost-open-source-eye-tracking
史海拾趣
|
小弟请教一下hotkey driver 工作原理,比如thinkpad hotkey driver ,他的工作原理是什么?是EC发送出来的数据吗?为什么能感应到FN+FX的键值呢,我做了一个键盘过滤驱动程序,在笔记本上安装后,可是还是抓不到FN+FX的键值,是不是FN+FX根本就 ...… 查看全部问答> |
|
请教:与pc进行无线通信的数据采集(数据达到10Mbps)系统的设计思路? 想实现嵌入式系统和上位机的无线通信,即要通过无线网卡模块,再通过无线路由器和上位机进行通信。 我的这个无线网卡模块是想要支持wifi协议的。 电脑通过无线方式控制我的这个数据采集系统,同时我的数据采集系统也要连续不断的把采集到的数据 ...… 查看全部问答> |
|
uboot移植不进开发板(OMAP核的),不知是不是JTAG除了什么问题? 下面是报错详情: Error connecting to the target: Error 0x80000240/-180 Fatal Error during: Initialization, OCS, This error was generated by TI\'s USCIF driver. ...… 查看全部问答> |
|
RT 是一个使用wave***API 录音的程序 [code] D:\\WORK\\EVC_Projects\\EVC RecordHWnd\\RecordHWndDlg.cpp(543) : error C2440: \'=\' : cannot convert from \'unsigned short *\' to \'char *\' 这个错误怎么 ...… 查看全部问答> |
|
信号采集和回放的模块化设计成为现代数字信号处理系统实现的一个趋势,随着集成电路工艺水平的不断发展,现场可编程门阵列芯片(EPGA)和数字信号处理芯片(DSP)性能不断提高,为系统的模块化设计提供了器件保证。本文结合某雷达干扰机的高速数据采集 ...… 查看全部问答> |
|
DSP是采用28335,外部总线XINTF的地址是0x4000开始,外部总线上面有设备(CPLD)的时候,DSP程序采用断点调试,观察memory的地址0x4000区域数据,自己想改变的地方的数据没有变化,反而其他的数据在来回不断的变化,只要程序执行一条语句,有点地址 ...… 查看全部问答> |




