将开放仿生学与OpenBCI结合使用
在过去的一周半里,我一直在做一个很酷的小项目,涉及移动机器人
使用我的OpenBCI板上的肌电图和脑电图信号的手(开放式仿生学)!如下图所示
当用户闭上眼睛时,手将打开/关闭,紧闭两个下巴,并“摇晃”起来!
首先,我看了一下Open Bionic的神奇教程,以组装和测试机器人手。
这个过程很简单,教程基本上涵盖了获得手所需的一切
正常运转对我来说,下一步是打印出来并为手构建前臂。我用过这个
科林·福斯纳
查看我的完整个人资料
关于我
▼ 2016 (5)
► 10月(1)
► 8月(2)
► 7月(1)
▼ 6月(1)
将开放仿生学与OpenBCI结合使用
博客存档
0更多下一个博客»创建博客登录
在浏览器专业版中打开你是开发人员吗?试用HTML到PDF API pdfcrowd.com
很棒的小网站叫tinkercad,因为我是3D建模软件的新手。Tinkercad公司
易于使用,是制作快速简单3D模型的绝佳工具(默认名称为
给你的项目也相当整洁:P)!
以上是我用于
前臂,左边是一个简单的
我为第二部分设计的“手腕”
项目需要注意的是,如果您
将使用这些文件,手腕
模型实际上不适合
前臂我建议编辑
我用剃毛的方法锉了锉
矩形,然后
只是钻穿前臂
这是我为这个项目的第一部分所做的。
一切都打印出来后,我开始了!我很幸运能在OpenBCI工作
summer,所以我有很多资源和代码,基本上只需修改和破解即可获得
项目工作。我的代码利用了OpenBCI其他项目的大量代码。最值得注意的是我
使用了Conor Russomanno神经黑客演讲中的代码,其中包括下巴的基本训练器
紧握和眨眼。我们将主要在这个项目中使用他的紧咬下巴代码,
然而,如果你想与他的消息来源打交道,你肯定可以做出改进和
在浏览器专业版中打开你是开发人员吗?试用HTML到PDF API pdfcrowd.com
然而,如果你想与他的消息来源打交道,你肯定可以做出改进和
添加不同的手势!
如果你熟悉10-20系统(如下图所示),我把电极放在Fp1,Fp2,T7,
T8、P7、P8和Oz。应注意,Conor的代码旨在使用8个电极,因此如果
你在训练模型时遇到了问题,试着在靠近下巴的地方添加另一个电极
握紧区域(我建议使用FT7、FT8、TP7或TP8)。同样重要的是要注意
Oz电极必须插入OpenBCI板上的N7P位置。这
因为Oz电极将监测你的阿尔法波信号。欲了解更多信息,
看看EEGHacker在控制一个十六进制错误方面的绝妙项目。我用了他的很多代码来处理
该项目和我的SSVEP项目的峰值检测。
在浏览器专业版中打开你是开发人员吗?试用HTML到PDF API pdfcrowd.com
科林·福斯纳于上午9:31发布
超皮质是没有必要的,但使测试更容易!干电极是最好的!
无论如何,如果你使用我的代码,你应该能够通过关闭
眼睛。代码等待枕叶输出alpha波(在FFT图上以
10hz),然后将触发命令!我还增加了一些冗余来阻止这只手
在开发过程中经常发生的困惑。
为了在OpenBCI GUI上打开训练屏幕以抓紧下巴,您必须键入
“.”输入。在你训练它一点后,按键盘上的“向上箭头”键开始录制
握紧。当你紧咬下巴两次时,你应该能够将手合拢成拳头。那里
应该是GUI中间的一个红点,当您键入
命令正确。
我想就是这样!期待即将发布的第2部分。它将有望包括一个全面的工作
手腕和新姿势if(alpha\u avg>0.7和alpha\u avg<4和beta\u avg<0.7){
isFocused=真;
}其他{
isFocused=假;
}
焦点==(α平均值>1.0uV)和&(β平均值<1.0uV)&&
(alpha_平均值<4 uV)
从年轻到年老,大约20名受试者在开始测试时,它都表现良好
冷静下来,集中注意力。
下面是焦点检测的示例处理代码:
6、在其他节目中使用焦点事件
要在焦点可视化小部件中启用此功能,请更改
enable_keystroke value为true,以便自动触发空格键
当一个人注意力集中时划水。(注意,它可能会损坏您的源代码
通过添加不需要的空格)
为了将焦点事件发送到我们在黑暗迷宫项目中的统一游戏,我使用了
从另一类数字制造中学习的“模拟按键”技巧
拱廊橱柜设计。这个“模拟按键”功能是由Java提供的
我们可以使用它,因为处理是基于Java的。所以基本上
无论何时检测到事件,处理都会发送一个keyPress()或
使用空格键或箭头键的keyRelease()事件来玩Unity游戏。
因为它实际上与用键盘玩游戏是一样的,所以我们不需要
在统一中添加任何内容。
下面是正在处理的模拟键笔划代码。
安装()之前:
在浏览器专业版中打开你是开发人员吗?试用HTML到PDF API pdfcrowd.com
导入java.awt.AWTException;
导入java.awt.Robot;
导入java.awt.event.KeyEvent;
机器人;
试试看{
robot=新robot();
}捕捉(AWT异常e){
e、 printStackTrace();
退出();
}
if(聚焦){
机器人。按键(KeyEvent.VK_UP);
}e
伦敦证交所{
robot.keyRelease(KeyEvent.VK_UP);
}
在setup()中:
在draw()中:
(注意,添加不需要的空格可能会损坏您的源代码)
7、进一步思考
虽然之前它似乎对大多数测试人员都很有效,但我仍然需要
收集更多数据以测试该算法的准确性。
在浏览器专业版中打开你是开发人员吗?试用HTML到PDF API pdfcrowd.com
留下回复
我还不清楚这是否符合地图上的平均振幅。
与平均振幅不同,如果我只计算
α能量和β能量通过功率谱密度,因为只有能量
总结起来很有意义。如果每个频率源中只有一个频率源
α带和β带,使用峰值也更有意义
振幅而不是平均值,尽管这也可能对噪声有害
处理。此外,还应考虑采样率和FFT长度
因为它们可能会影响频率分辨率,从而平滑结果
降低振幅 |