基于Open-BCI头部信号的小车运动控制实现

前期准备
硬件
OpenBCI相关设备

1.OpenBCI是个面向脑机接口EEG信号采集的开源硬件。OpenBCI Cyton是一个Arduino兼容的带有8通道神经接口和一个32位处理器开发板。
在这里插入图片描述
2.基于Arduino单片机的可编程小车
在这里插入图片描述
软件
OpenBCI_GUI
OpenBCI_Python
Arduino 软件(IDE)

一、理论知识
脑机接口

脑机接口从定义上说就是如何使用头部信号与外部机械进行直接交互的一项技术,并且对脑机接口的相关研究已经超过40年了。从上个世纪以来,人们不断地从各类试验之中总结经验,对此相关的知识逐渐积累,并且以多年在动物身上的试验结果中总结的方法,把一些相关的植入性设备进行人体植入,主要用于恢复已经受伤的感觉器官,如眼睛,耳朵和运动肢体等。
在这里插入图片描述
脑电信号采集设备
侵入式脑机接口
侵入式脑机接口主要用于重建特殊感觉(例如视觉)以及瘫痪病人的运动功能。此类脑机接口通常直接植入到大脑的灰质,因而所获取的神经信号的质量比较高。但其缺点是容易引发免疫反应和愈伤组织(疤),进而导致信号质量的衰退甚至消失。

非侵入式脑机接口

优点:非入侵式脑机接口具有良好的时间分辨率、易用性、便携性和相对低廉的价格。

缺点:虽然这种非侵入式的设备方便佩戴于人体,但是由于颅骨对信号的衰减作用和对神经元发出的电磁波的分散和模糊效应,记录到信号的分辨率并不高。这种信号波仍可被检测到,但很难确定发出信号的脑区或者相关的单个神经元的放电。存在较低的信噪比和空间分辨率等问题。

二、研究方法与思路
(一)系统设计

连接

系统启动时,上位机与下位机通过WiFi建立通信连接,采集设备通过蓝牙建立通信连接。

传输

USB Dongle接收实时脑电信号,将其传输到电脑上。

处理

PC端将接收到的实时数据,进行处理工作。

识别

系统将处理后的数据,进行信号识别工作,并将结果传输给下位机。

控制

下位机接收上位机的控制指令后,对小车运动状态进行实时控制。
在这里插入图片描述
(二)机器小车
连接

下位机与上位机之间通过WiFi建立通信连接。

启动

通过串口读取来自上位机的控制指令,并且将第一个左转信号视为启动信号。

行进

启动后,小车向前行进,并且实时检测串口信号。

控制

根据控制命令,控制小车左转或右转后,继续行进。
在这里插入图片描述
(三)信号预处理
时间片数据

将每秒钟的250个数据封装成一段。

去基线漂移

数字信号中会含有基线干扰信号(低频噪音),会对信号分析产生不利影响。需要通过预处理消除信号基线

陷波滤波

在我国采用的是50 Hz频率的交流电,所以在平时需要对信号进行采集处理和分析时,常会存在50 Hz的工频干扰。

带通滤波

经过多次试验发现,选取在7-13Hz范围的波形信号最为明显。
在这里插入图片描述
(四)信号识别
1.保持睁眼时

在这里插入图片描述
2.单次眨眼
在这里插入图片描述
3.两次眨眼
在这里插入图片描述
三、测试
(一)OpenBCI眼电验证

1.设置过滤噪声开关-Notch(与交流电相关,大陆地区为50 Hz)
2.设置合适的标尺-VertScale(正常设置为200~1000,具体根据实际测量数据大小自由调整)
3.关闭不使用的通道(防止影响使用中的通道的数据观察)
4.保持皮肤干爽(建议粘贴脑电极前使用洁面膏等清洗脸部,并擦干保持干燥)
5.使用黏性较强的胶带粘贴
6.通过对比(a)(b)©(d)可知,带通滤波器的选择在7-13Hz时,波形最为容易分析,所以在信号处理系统设计中,带通滤波器的频带剪切频率f1选择为7Hz和剪切频率f2选择为13Hz。
在这里插入图片描述
(二)机器小车测试
将小车运行测试代码烧写入小车中如下图所示
在这里插入图片描述
当小车从串口接收到第一个左转指令时,将其视为启动命令,控制小车前进,其后不断从串口缓冲区读取命令,当读取到字符l时控制小车左转,并输出left,当读取到字符r时控制小车右转,并输出right。测试结果如下图所示。

在这里插入图片描述

(三)信号处理系统测试
在这里插入图片描述
信号处理系统运行如上图所示,首先各设备之间建立连接,然后读取EEG数据,先对其进行信号预处理,再进行信号识别。测试结果如下图所示,设备连接正常,数据传输正常,信号处理系统运行正常。
在这里插入图片描述
四、建议及总结
1.改进方法,减少系统误差,减少控制时延。
2.开源硬件成本低廉,开发方便。
3.该系统适用性强,经过适当改造可以控制其他设备。
4.对于特定人群例如残疾人、聋哑人的应用前景更为广阔。

  • 18
    点赞
  • 76
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: mi-bci是一种通过大脑信号实现人机交互的技术,它能够识别并分类人脑中的特定动作意图。运动想象分类就是将mi-bci应用于分类运动想象任务。下面是使用MATLAB编写的运动想象分类CNN-SAE程序。 首先,我们需要导入所需的MATLAB包和库。我们使用MATLAB的Deep Learning Toolbox功能来构建卷积神经网络(CNN)和稀疏自编码器(SAE)模型。导入数据集和标签集,包括训练集和测试集。 然后,我们需要对数据进行预处理。首先,我们将数据分为训练集和测试集,并将其归一化到0到1的范围内。接下来,我们将数据转换为适合卷积神经网络的形状。 创建CNN模型。我们使用卷积层、池化层和全连接层来构建CNN模型。对于卷积层,我们选择适当的卷积核大小和步幅来提取关键特征。池化层用于减小特征图的大小,并保持特征的一些不变性。全连接层用于分类任务。 进行训练和优化。我们使用训练集来训练CNN模型,并通过反向传播算法更新模型的权重和偏差。我们使用交叉熵损失函数和随机梯度下降算法来优化模型。 创建SAE模型。在CNN模型之后,我们使用稀疏自编码器来进一步提取特征。稀疏自编码器是一种无监督学习算法,它可以通过最小化重构误差来学习数据的低维表示。 最后,我们使用测试集来评估模型的性能。我们将模型的输出与真实标签进行比较,并计算分类准确率、精确度、召回率等指标。 总结而言,这是一个用于mi-bci分类的CNN-SAE程序。它通过训练卷积神经网络和稀疏自编码器来实现对运动想象任务的分类。通过该程序,我们可以有效地识别和分类运动想象任务,为mi-bci技术的应用提供了一种可行的方法。 ### 回答2: mi-bci是一种通过监测大脑运动想象来实现的脑机接口技术。在此问题中,我们需要用Matlab编写一个用于mi-bci分类的CNN-SAE(卷积神经网络稀疏自编码器)程序。 首先,我们需要导入所需的Matlab库和数据集。可以使用MATLAB中的`import`命令来导入相应的库函数和数据。 接下来,我们需要准备数据集。mi-bci数据集通常包含一系列带有分类标签的EEG(脑电图)数据,每个数据样本对应于被试者在不同想象动作下的大脑活动。我们需要将数据集划分为训练集和测试集,用于训练和评估CNN-SAE模型的性能。 然后,我们构建CNN-SAE模型。这个模型由多个卷积层、池化层和全连接层组成。每个层都有相应的参数,如滤波器大小、步长等。通过逐层设置这些参数,我们可以构建一个适合mi-bci分类任务的模型。 接下来,我们需要在训练集上训练CNN-SAE模型。训练过程通常包括多次迭代,每次迭代都会调整模型的权重和偏置,以最小化损失函数。使用训练数据,我们可以逐渐提高模型的准确性。 最后,我们可以使用测试集来评估模型的性能。将测试数据输入已经训练好的模型中,通过比较预测结果和真实标签,我们可以得到模型的准确率、精确度、召回率等性能指标。 在编写这个程序时,我们需要合理设置超参数,如学习率、迭代次数、卷积核个数等。这些超参数的选择会影响模型的性能和收敛速度。 综上所述,编写一个用于mi-bci分类的CNN-SAE程序,需要导入库函数和数据集、准备数据、构建模型、训练模型,并评估模型的性能。这只是一个大致的步骤,具体实现过程需要根据具体的mi-bci分类任务和数据集来确定。 ### 回答3: 运动想象分类是一种基于脑机接口技术的运动想象实验,通过分析被试者的大脑活动模式,将不同的运动想象分类成具体的动作类别。为了实现这个目标,可以使用一种叫做深度学习的机器学习方法中的卷积神经网络(CNN)。 MATLAB是一种常用的科学计算软件,也提供了深度学习工具箱,方便我们编写和运行深度学习的代码。以下是一种用于运动想象分类的CNN-SAE(卷积神经网络-稀疏自编码器)的MATLAB代码: 1. 数据预处理: - 读取运动想象实验的脑电信号数据和相应的标签数据,其中标签表示被试者想象的运动类型。 - 对脑电信号数据进行预处理,如滤波去噪、时域/频域特征提取等。 2. 数据划分: - 将脑电信号数据划分成训练集、验证集和测试集,一般采用交叉验证的方法。 3. 构建CNN网络: - 设计CNN网络的结构,包括卷积层、池化层、全连接层等。 - 设置相应的参数,如卷积核大小、卷积步长、池化窗口大小等。 4. 特征学习: - 使用训练集的数据和标签进行网络训练,使网络学习到适合运动想象分类的特征表示。 - 采用稀疏自编码器(SAE)作为中间层,增强特征表示的能力。 5. 分类: - 使用训练好的CNN-SAE模型对测试集进行分类。 - 计算分类精度和其他评价指标。 通过以上步骤,就可以使用MATLAB编写出运动想象分类的CNN-SAE程序。这个程序可以用于训练和分类运动想象实验的脑电信号数据,帮助我们分析和理解大脑活动模式,并实现准确的运动想象分类。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值