OpenBCIで脳波を取得する

前回

filot-nextd2.hatenablog.com

 

今回は↑の続き

 

とりあえずまず、電極の針が痛いので、交換する...

 

手順が簡単だからか理由は不明だが、公式ドキュメントに、交換方法の記載がない(簡易なのでいいので記載してほしい...

f:id:filot_nextd2:20210531144835j:plain

 

f:id:filot_nextd2:20210531144921j:plain

f:id:filot_nextd2:20210531145406j:plain

 

これを、

 

f:id:filot_nextd2:20210531145206j:plain

↑分解する

精密プラスドライバーが必要(No.0、No.00あたり

電極結構シンプル

 

替えのパーツ

Dry EEG Comb Electrodes (Pack of 30)shop.openbci.com

f:id:filot_nextd2:20210531150446j:plain

 

 

左が交換済みの電極

付け心地は、全く痛くないわけではないけど、これなら長時間(1時間とか)の連続使用も苦ではない

f:id:filot_nextd2:20210531150537j:plain

 

 

脳波取得してみる

 

まずUSBドングルをPCに刺す

f:id:filot_nextd2:20210531151939j:plain

 

GPIO_6にスイッチを倒しておく

f:id:filot_nextd2:20210531152000j:plain

 

ボードに電源いれる

f:id:filot_nextd2:20210531152303j:plain



 OpenBCIのGUI上で設定する

f:id:filot_nextd2:20210531153048p:plain

↑こんな感じ

なおWifiSheildはβ版の為、Serial通信で実行

 

f:id:filot_nextd2:20210531153724p:plain

↑電極番号とケーブルの色を揃えておくと、どの電極の脳波かわかりやすくなる

Railedはインピーダンス(≒ 抵抗)の割合

 

Streamの取得を開始すると

f:id:filot_nextd2:20210531160401p:plain

f:id:filot_nextd2:20210531160423p:plain

f:id:filot_nextd2:20210531160435p:plain

 

筋電図も取得可能

 

脳波取得できたので、次回、分析について記載する

 


 

OpenBCIを組み立てる

脳波を取得するEEGというのは色々ある

www.gtec.at

www.miyuki-net.co.jp

www.crowdsupply.com

 

 

色々あるなかで、オープンソースのOpenBCIを研究資材として使うことにした

openbci.com

 

 

最近は日本国内にも代理店ができた

dynabrain.jp

 

見積もりの結果、代理店を通した場合、予想以上に金額が跳ね上がった為、OpenBCIから直接購入した

 

f:id:filot_nextd2:20210531123933j:plain

 

 

早速組み立てる

フレームはstlファイルが公開されているので、3Dプリンタある方は出力からやってもいいかも

docs.openbci.com

 

材料は以下

f:id:filot_nextd2:20210531124449j:plain

 

Spikey units(くし形ドライ電極)、Flat units(平面型ドライ電極)、Comfort units(ヘッドセットを支える)

f:id:filot_nextd2:20210531130751j:plain

 

電極設置用のリング(内側に螺旋状に溝が入っている)

耳たぶに付ける基準電極(この基準電極を使うことで、電極間の電位差を検出できる)

Cytonボード設置用のフレーム

f:id:filot_nextd2:20210531130834j:plain

 

ケーブル

f:id:filot_nextd2:20210531132711j:plain

 

Cytonボード

f:id:filot_nextd2:20210531132844j:plain

 

チャンネル拡張ボード(8ch -> 16ch)

f:id:filot_nextd2:20210531132913j:plain

 

USBドングル

f:id:filot_nextd2:20210531133002j:plain

 

組み立て開始

まずフレームに電極設置用のリングを、接着剤で付けていく

32箇所あるので、頑張る

Cytonボード設置用のフレームをネジでとめる

f:id:filot_nextd2:20210531133227j:plain

f:id:filot_nextd2:20210531133408j:plain

↑なお、この作業でほとんど時間をとられる。。。

 

電極を取り付けてみる

f:id:filot_nextd2:20210531133537j:plain

↑...痛そう..

 

f:id:filot_nextd2:20210531133627j:plain

f:id:filot_nextd2:20210531134353j:plain

 

Cyton+拡張ボードを取り付ける

f:id:filot_nextd2:20210531134500j:plain

なおボードの電源は、乾電池でもリチウムイオンバッテリーでもいい

 

配線

f:id:filot_nextd2:20210531132711j:plain

f:id:filot_nextd2:20210531134739j:plain

配線の色は、OpenBCIのGUIツール上の電極配置のデフォルトと関連しているので、揃えておくと楽

 

配線を可能な限りフレーム上に束ねておく(配線が揺れると脳波のノイズの一因になる)

f:id:filot_nextd2:20210531135057j:plain

 

これで完成。

下から見上げると中々イカツイ、、、

f:id:filot_nextd2:20210531135223j:plain

 

自分の脳波取ってみようと思ったが、

f:id:filot_nextd2:20210531135342j:plain

↑これ頭に刺さって痛い、、、

 

ので、次回パーツ変更後、脳波を取得してみる。

使っている翻訳ツールの紹介

最近英語で書かれたPDFを読む機会が増えてきたので
使っている[英->日]翻訳ツールを紹介します

Chrome 拡張機能

f:id:filot_nextd2:20210406173618p:plain:w200


Google翻訳

f:id:filot_nextd2:20210406182807p:plain

アイコンをクリックすると画像のような画面が表示されます
f:id:filot_nextd2:20210406173718p:plain:w300

全文翻訳

「このページを翻訳」をクリックすると全文翻訳されます

翻訳もわかりやすいですし
翻訳されたページの一文にカーソルを合わせると原文も表示されるので使いやすいです
f:id:filot_nextd2:20210406180432p:plain:w300

一文翻訳

翻訳したい文を選択するとアイコンが表示されるのでクリックします
f:id:filot_nextd2:20210406181306p:plain:w300


そうすると翻訳元と翻訳語の文が一緒に表示され、スピーカーアイコンをクリックすると読んでくれるので単語の読み方も一緒に学習できます
f:id:filot_nextd2:20210406181310p:plain:w300


選択した文の文字数が多かった場合アイコンは表示されないので右クリックをしてメニューから「Google翻訳」を選択してください

新しく別タブで翻訳ページが開かれます
f:id:filot_nextd2:20210407162305p:plain:w300




iKow!ポップアップ辞書

f:id:filot_nextd2:20210406182810p:plain
単語を調べるのに便利です
機能を有効にすると単語にカーソルを合わせただけで次の画像のように辞書が表示されます
f:id:filot_nextd2:20210406182245p:plain:w300
こちらもスピーカーアイコンをクリックすることで発音の学習ができます
便利なのですが、カーソル位置に注意しないと頻繁に表示されるので嫌になります
すぐに表示されるというのが長所でも短所でもありますが
多くの単語を調べたい場合に便利です

Mouse Dictionary

f:id:filot_nextd2:20210406182812p:plain
こちらも単語を調べるのに便利です
単語にカーソルを合わせると辞書が表示されます

f:id:filot_nextd2:20210406184202p:plain:w300

一つ前のiKow!ポップアップ辞書とは違って辞書が表示される場所が固定されています
表示される領域の移動やサイズ変更が可能なので邪魔にならないという利点があります

先ほど文の右側に表示していたので、今度は下側に表示してみました
f:id:filot_nextd2:20210406184326p:plain:w150

邪魔にならないので良いのですが、単語の読み上げはしてくれません


PDF Translator

f:id:filot_nextd2:20210406182815p:plain

PDFファイルを読むときに便利です
機能を有効にしたあと、Web上に開かれているPDFページを再読み込みしてください
開いているクロームのタブアイコンがPDF Translatorと同じアイコンになったと思います
f:id:filot_nextd2:20210407160029p:plain

その状態で文を選択すると紫色でハイライト表示されます
f:id:filot_nextd2:20210407160109p:plain:w300
文が選択されるとDeepLが機能して翻訳が表示されます
f:id:filot_nextd2:20210407160230p:plain:w300


ローカルPDFを翻訳したい場合はオプション設定が必要となります
拡張アイコンを右クリックするとメニューが表示されるので、オプションを選択してください
「ファイルのURLへのアクセスを許可する」
を有効にしてください
f:id:filot_nextd2:20210407164708p:plain

有効にしたらローカルファイルをChromeで開いてください
先ほどと同じように文を選択すれば翻訳されます

f:id:filot_nextd2:20210407171217p:plain:w300


Google翻訳と違って長文も翻訳できます
その場合スクロール可能なパネルに翻訳が表示されます


右クリックやアイコンクリックなどの作業がなく、長文も翻訳できることが良いところなのですが、文を選択した後に時間がかかることと、翻訳が原文に重なることが気になります

オプション設定でパネル位置を「near」「under」から選択できますが、underは重ならない代わりに原文から遠くなるので好みではなかったです
under設定だとこんな感じです

f:id:filot_nextd2:20210407171148p:plain:w300


DeepL opener PRO

f:id:filot_nextd2:20210406182804p:plain


先にChromeにサインインして同期をオンにしてください
同期をオンにすることで使えるようになります
詳細や使い方は下のリンクに書かれてありました

t3ahat.hateblo.jp


先に上記で紹介したツールを使っていたことと、まず同期をオンにしなければ動かないというワンクッションが好きではなかったのでこれじゃなくても良いかな、と思ってあまり利用していません
他のツールでも使っている機能がついているので使ってみたら便利なのだろうと思います


オンライン

Doc Translator

PDFファイルを翻訳したい時に使います
レイアウトを保持してくれるため、図が多いファイルに便利です
ページを開いたら「今、翻訳する」をクリック
f:id:filot_nextd2:20210407200626p:plain:w150

翻訳したいファイルをアップロードします
f:id:filot_nextd2:20210406173559p:plain:w300
アップロード中...
f:id:filot_nextd2:20210406173604p:plain:w300

アップロードが終わったら少し下にある「翻訳する」をクリックします
f:id:filot_nextd2:20210406173549p:plain:w300
ページが遷移して翻訳が開始されます
終わったら「翻訳された文書をダウンロード!」
f:id:filot_nextd2:20210406173556p:plain:w300


こんな感じになります
差分を見たいので、左が英字で右が翻訳後のものを並べています
ダミーPDFではないのでぼかしをいれていますが、レイアウトが保持されていることはわかると思います

f:id:filot_nextd2:20210407201145j:plain:w300f:id:filot_nextd2:20210407201150j:plain:w300


広告が多いですが、便利です

Google翻訳

こちらは説明不要なくらい簡単です
テキスト翻訳は先の拡張機能と同じなので省略します
左上の「ドキュメント」をクリックすると「パソコンを参照」ボタンが表示されるので、押下してファイルを選択します
f:id:filot_nextd2:20210406173359p:plain:w300
選択したファイル名が表示され、「翻訳」ボタンが表示されるため、クリックします
f:id:filot_nextd2:20210407201834p:plain:w300

翻訳されたドキュメントが表示されます
f:id:filot_nextd2:20210407202019p:plain:w300


UIを見たら使い方がわかる簡単さですが、イラストや図が挿入されている場合にレイアウトは保持されないため、読みづらくなってしまいます

アプリ

DeepL

www.deepl.com


読めない単語や文書を選択してショートカットキー「Ctrl+C/⌘C」を2回押すだけで立ち上がるので気軽に使えてオススメです
ただ、ファイル対応は「.docx」「.pptx」「.txt」となっているのでPDFは読めません
PCにはPRO版を入れています


よく使うもの

Google翻訳(拡張機能)
DeepLアプリ
この2つをよく使います

図が入っている長いPDFを読む場合はDoc Translatorを使います

あとは翻訳使わなくても読めそうな場合は単語の読み方も見たいのでiKow!ポップアップ辞書を使っています





最後に、今回使ったダミーファイルはこちらで生成しました
www.blindtextgenerator.com

アクチュエータとは

触覚フィードバッグに興味を持ったため、どのようなアクチュエータがあるのかを調べてみました
アクチュエータは皮膚に刺激を与えるために使うつもりです

 

アクチュエータとは

こちらこちらを参考にしました

アクチュエータとは

“エネルギー”を、直進移動や回転・曲げなど、何らかの“動作”に変換する装置のこと

入力されるエネルギーには以下のものがあるそうです


・電気 (サーボモータ、ステッピングモータ、リニアモータ)

・油圧 (空気圧シリンダ、空気圧モータ)

・空気圧 (空気圧シリンダ、空気圧モータ)

・その他 (形状記憶合金アクチュエータ、超音波モータ)

 

仕組み

先ほど貼ったリンクの画像がわかりやすいので紹介します

f:id:filot_nextd2:20210330185442j:plain


触覚フィードバッグにはどれを使うのか

「あったらいいな」と思う条件がいくつかあります
・少ない電力で動く
・デバイスが小さい
・応答時間が速い
・なるべく低価格

指先で試すつもりなので小さい方が良いです
小さいものを複数制御した方が複雑な触感になりそうだと思うところもあります

アクチュエータには色々種類がありましたが触覚フィードバッグにはどの種類が良いのか
まとめてくれているところを見つけました
触覚研究用振動子まとめ

初心者にとっても、とてもわかりやすくまとめてくれているので参考にし、ピエゾアクチュエータを買うことにしました

Raspberry Pi Picoを触ってみた

タイトルの通りラズパイピコが手に入ったのでとりあえずLチカしました

 

 

Raspberry Pi Picoとは

Raspberry Pi Foundation初のマイクロコントローラーボードです

詳しくはこちらです

 

f:id:filot_nextd2:20210326220620j:plain

 

スペック

 項目  内容
 搭載マイコン  RP2040
 サイズ  21x51mm
 CPU  デュアルコア ARM Cortex M0+プロセッサ
 SRAM  264KB
 フラッシュメモリ  2MB
 電源  micro USBポート
 有線LAN  x
 無線LAN  x
 Bluetooth  x
 USB  1.1 ホスト/デバイス両対応
 GPIO  26
 SPI  2
 I2C  2
 UART  2
 PWM  16
 PIO  8
 温度センサー  ○
 LED  ○
 価格  $4 (日本では500円~580円くらいで販売)

 

OSの搭載はできない

Python, C/C++のプログラム実行が可能

 

f:id:filot_nextd2:20210329163450p:plain

 

Lチカ 

それではLチカやってみます

必要なもの

・raspberry pi pico

・USBコード(マイクロUSB - PCと接続する口)

 

Getting started タブを参考に進めていきます

MicroPythonを実行できる環境を用意しておいてください

 


私はこちらを参考にThonnyを入れました
Thonnyで実行する場合は右下がMicroPythonになっていることを確認してください

f:id:filot_nextd2:20210329172247p:plain



 

まだPicoとPCは繋がないでください

 

始め方 

1.UF2ファイルをダウンロードします

f:id:filot_nextd2:20210329162210p:plain

 

2.次にBOOTSELボタンを押しながらUSBポートに接続します

f:id:filot_nextd2:20210329162644p:plain

これでマウントできたはずです

 

3.RPI-RP2というデバイスが表示されているはずなので、そこに1でダウンロードしてきたUF2ファイルをドラッグアンドドロップします

Picoが再起動されます

 

 ソースコード

あとはMicroPythonを実行できる環境で以下のコードを実行します

ドキュメントを参考に書いてみました


from machine import Pin
import utime

led = Pin(25, Pin.OUT)

while True:
    led.value(1)
    utime.sleep(1)
    led.value(0)
    utime.sleep(1)

 

LEDが点滅します

f:id:filot_nextd2:20210329170836j:plain

 

自動運転バス試乗してきた

前置き

弊社Filot(ファイロット)は
福岡地域戦略推進協議会(Fukuoka D.C.)の会員だが、
FDCが参画している Fukuoka Smart Easts 推進コンソーシアム にて実施される、
ハンドルのない自動運転小型バス「NAVYA社製 ARMA」を使用した
実証実験の試乗モニターの募集があったので、
試乗してきた

www.fukuoka-dc.jpn.com

smartcity.fukuoka.jp

www.macnica.co.jp

 

公共交通における社会課題としては、
・バスのドライバー不足
・廃止路線の増加
・バス会社の経営難
・高齢者は自由に移動ができない
などが挙げられている

GPS、LiDAR、SLAM等により走行位置座標の検出を行い、
あらかじめ設定されたルートに沿って自動制御で走行するとのこと

実証実験では、箱崎でのまちづくりを進めるうえでの走行課題、
モビリティの安全性や機能性を検証する

場所は貝塚公園

公園の一部、約400メートルを、時速7kmで走行する

様子

f:id:filot_nextd2:20210329162030j:plain

f:id:filot_nextd2:20210329163138j:plain

感想

時速7kmではあるが、乗り心地は普通のバスと変わらず、よい

車内の様子もカメラで撮影しているので、安心感がある

目的地の設定は、現状自分で車内備え付けのパネル上で選択しなくてはならない。
定期券などを利用するときと比較して手間が増えているので、
UXを洗練すれば普及するかもしれない

触覚について調べてみよう

触覚フィードバッグに興味を持ったため
触覚とは、調べてみました

 

 
触覚とは

私たちは普段から指を使って色々作業を行なっています

その指が触れているという状態はどのようなものなのか調べてみたいと思いました

 

普段から色々多く触れているのだと思いますが意識はしてません

まず思いつくのはPCのキーボード、スマホ、洋服など

それぞれ「つるつる」「ざらざら」「柔らかい」「硬い」指先だけで感じることができます
PCのトラックパッドなどクリックした感覚がなければ使いにくそうです

それに触覚がわからなければ物を掴むことも難しいでしょう

さて、感覚はどうやって生じているのか

 

触覚を受ける神経

人間の皮膚にある触覚の受容器には
・メルケル細胞
・マイスナー小体
・ルフィニ終末
・パチニ小体
などの神経があるそうです

「皮膚の受容器」などで画像検索すると構造断面図がでてきます
こちらから画像をお借りしてきました

f:id:filot_nextd2:20210325184447j:plain

これらの神経細胞が外力による皮膚変形を刺激として受け取り、この刺激によって「触れた」という感覚になるようです

また、この刺激応答には2種類の型があるそうです

・遅順応型(Slowly Adapting : SA型) - 刺激のはじめと終わりに反応
・速順応型(Fast Adapting : FA型) - 持続的な変形に反応


先ほど紹介した4種類は以下のように分類されるとのこと
SA型 : メルケル細胞、ルフィニ終末
FA型 : マイスナー小体、パチニ小体 

これらは「刺激に慣れてしまう速度」によって別れているそうです

もっと細かくSAI, SAII, FAI, FAIIと分けられるようですが、今はそこまで詳細に知りたいわけではないので置いておきます

※ちなみにIとIIは受容野の境界が明瞭かどうかによって分けられるそう。
知識のない私は「受容野」を調べることになります

受容野 - Wikipedia

 

 

つまり、この神経に自在に刺激を与えることができれば擬似触覚ができるというわけですね

さて、どうやって刺激を与えられるのか、、

 

触覚を外部から与える

どうやら電気を送ることで神経に刺激を与えることができるようです

人間の細胞は電気を帯びており、電気的な刺激が加わることで反応する性質なのだそう

 

ではどのように刺激を送れば「つるつる」や「ざらざら」が表現できるのかです

 

触覚を表す言葉は多様にあります

「触覚 オノマトペ」

などで調べると色々な記事がでてきます

一体触覚とはどれだけの種類があるのか、、

はっきりと何種類かはわかりませんでしたが「ふわふわ」「べとべと」「さらさら」「でこぼこ」思いつくだけでも多いということはわかります
わかってるだけで何十種類もあると書いてある記事もありました

 

結局触覚を表すものって何なのか

触相図

というものでなんとなく理解したつもりになってみました

触覚を表すには "粗さ、硬さ、湿り気" が必要そうです

他に温冷も必要そうですが、とりあえず感覚として掴みやすそうな粗さと硬さを調べてみます

 

ではそれぞれをどうやって表現できるのか

粗さ

皮膚を押すことと皮膚を擦ることで受ける刺激によって粗さを表現でき、マクロ刺激ととミクロ刺激というようです

マクロ刺激 :

 押し当てて接触面の圧力によって知覚する

 (メルケル小体)

ミクロ刺激 :

 触動作に伴って皮膚表面に振動や動的なふるまいを知覚する

 (マイスナー小体、パチニ小体)

 

振動は電気によって表現できそうな気がします
スピーカーをイメージしてます

 

硬さ

皮膚を押し返す反力の関係で硬さを感じるようで

弾性、剛性が関係するようです

 

指の柔らかさより柔らかければ柔らかいと思うのか、押すことで接触する面が増えることで柔らかいと感じるのか、

反力が集中しているのか分散しているのかで柔らかさを感じるのか、

どうやらまだどういう情報によって柔らかさとしているのかはっきりしていないようでした

深部感覚皮膚感覚両方が関係するようです

自分の指の硬さも関係するためなのか、見てみた論文ではそれぞれの方法で定義して実験を行なっていました

触れる材質の弾性(ヤング率)と物体の剛性(ばね定数)を合わせたもので判定しているものが多かったです 

材質を叩いた場合と押した場合でもまた関係は変わってきそうですね

 

 

次回 触覚フィードバッグを試してみたい

ネットで検索するのではなく、もっとちゃんと調べてみたいですが、とりあえず興味本位でちょっとやってみるようなものでは無いですね

粗さを表すの振動だけでも触ってみたいです
それだけでは材質を表現はできないと思いますがひとまず、指で物体をなぞるときに振動を発生させたいです