Myo臂环是加拿大Thalmic Labs实验室推出的一款肌电采集设备,可以实现表面肌电信号(sEMG)、加速度信号以及陀螺仪信号的采集,通过低功率的蓝牙将采集到的这三类信号传出。最近由于毕业设计需要使用到了这款设备,在此分享一下关于Myo开发的资料和遇到的问题,希望可以帮到有需要的人。
关于Myo臂环python开发可以参考Github上NiklasRosenstein的项目myo-python,使用前需要实现Myo SDK的python绑定 。myo公司的python api实际上是调用myo connect来完成获取数据等操作,因此自己需要实现DeviceListener,然后对从Myo设备接受到的任何事件进行调用。上述NiklasRosenstein的项目中给出了实现DeviceListener的例程。
之前使用过程中出现了在程序初始化的时候就出错的问题,猜想python api 是要和myo connect配套的。随着myo connect的版本更新,会出现myo connnect 和myo的python api不匹配的问题,需要更新python api.
文末是一些myo的相关资料,包括myo-sdk-win、Myo connect installer,Myo Android、Myo Firmware以及一些文档,有需要的自取。其中myo-sdk中有myo C++开发的例程。
百度云盘链接:
https://pan.baidu.com/s/1eSlJV6kivbMc0G6QKFm8fg
提取码:gecr
更新一部分内容:
上述所说的Python SDK绑定不太准确,属于个人理解,可以直接看NiklasRosenstein的项目注释会好一点。如果造成你的误解,在此感到抱歉。
在此之后做了一部分工作是关于使用两个Myo臂环同时采集肌电数据。
上文说过,使用Python 实现Myo臂环开发,其实是监听Myo connect和Myo臂环之间的肌电数据传输,这种情况下在一台电脑上只能连接一个Myo臂环。如果要实现两个Myo臂环同时采集肌电数据的话,有考虑过几种方案:第一种是之前一个师兄尝试的,就是用把两台电脑分别接一个Myo臂环,然后把两台电脑用网线接起来(具体没尝试过,但思路是如此)。这样的话存在一个问题,就是因为考虑在数据传输中的时间损耗,两个Myo臂环采集到的肌电数据不算实时同步。之前在github上看到过其他的解决方案,其中有一个似乎是通过两个Myo 臂环快速交替获取数据实现的。
第二种方案是参考了Stefano Tortora的项目ROS_multipleMyo,与该项目对应的论文为Dual-Myo Real-Time Control of a Humanoid Arm for Teleoperation。使用该项目可能需要看一下thalmiclabs的蓝牙协议,在github上为myo-bluetooth。该项目直接从蓝牙数据读取入手,比较符合个人的要求。此外,这个项目和ROS系统结合在一起了,不过个人不需要将其运行在ROS系统上,好在结合的地方不多,主要是将肌电数据信息等作为话题发布给其他节点了,适当修改下就可以将其和ROS的部分剥离出来。有一个稍微麻烦的地方,该项目用的是Python2.7,用起来不太方便。
分享一个CSDN上sEMG手势识别做得比较好的博主:九方先生,博客地址,github项目为sEMG_DeepLearning。
Myo数据可视化网页:http://diagnostics.myo.com/,无须配置,效果如下: