博士論文研究における3Dプリンターフィラメント製OptiGapセンサー
(paulbupejr.com)- OptiGapは、柔軟な構造のため既存センサーを取り付けにくいソフトロボティクスで、センサーのどの位置が曲がったのかを特定するために開発されたシステムである
- 柔軟な光パイプ内に設けた空気ギャップが、曲げに応じて光の伝達量を変化させ、この差を位置ごとの信号パターンとして利用する
- アイデアは、透明な1.75mm TPU 3Dプリンターフィラメントを巻尺に貼り付けて曲げる実験から始まり、Raspberry Pi・VL53L0X・ZeroMQ・Python GUIでリアルタイムの変化を確認した
- 初期には3本のTPUフィラメントと3:1光ファイバーカプラを使っていたが、その後500ミクロンPMMA光ファイバーとフォトダイオード・IR LED・STM32をベースにした、より小型でシンプルな構造へ発展した
- 最終システムは、STM32上でナイーブベイズ分類器と2段階フィルタリングにより曲げ位置を分類し、EneGateへの統合・小型PCB・実際のソフトロボットでの検証・商用化作業へとつながっている
OptiGapの役割
- OptiGapは、ロープのような形状のセンサーが曲がったときに、どの位置が曲がったのかを特定するシステムである
- この機能は曲げ位置検出、すなわちbend localizationに相当する
- 主な適用分野はソフトロボティクスである
- ソフトロボティクスは柔軟または軟らかい構造を扱うため、従来型センサーの利用が難しい場合が多い
- OptiGapという名称は“optical”と“gap”を組み合わせたものだ
- 柔軟な光パイプ内の空気ギャップによって、曲げ位置検出に必要なコードパターンを作る
偶然の発見から始まった実験
- 出発点は、光パイプ、つまり光ケーブルを通じた光伝送の仕組みを曲げ検知センサーとして活用しようとした実験だった
- 透明な1.75mm TPU 3Dプリンターフィラメントを巻尺に貼り付けて実験していたところ、電気テープが貼られた位置を曲げると光伝達量が大きく減少した
- 電気テープの粘着性の残留物がフィラメントを伸ばし、その結果として光伝達が減少するという仮説を立てた
- より長いTPU片を巻尺に貼り付けた後、複数の位置を曲げながら光伝達の変化を観察した
- リアルタイム検証のため、簡単な測定・可視化システムを構築した
- この検証がOptiGap開発へとつながる決定的な瞬間となった
空気ギャップで位置情報をエンコード
- 光が弱くなる位置を制御できれば、センサー内に曲がった位置情報をエンコードできる
- 電気テープ方式は実用的ではなく、より安定して一貫した減衰構造が必要だった
- 解決策は、フィラメントを切断してシリコンスリーブで再接続し、その間に小さな空気ギャップを残す方式だった
- 空気ギャップは、2つの光パイプ端面の相対的な移動や回転を利用する
- 一方の光パイプ面がもう一方とずれると、ギャップを越えて伝達される光の割合が変化する
- 曲げ角度が大きくなるほど、ギャップで逃げる光が増える
- このように変化した光信号強度を既知のパターンに対応付け、センサー信号として使う
複数の空気ギャップとInverse Gray Code
- 次の段階は、1本のTPU光パイプに沿って複数の空気ギャップを作り、曲げたときの減衰パターンを測定することだった
- 各空気ギャップで光強度は低下し、曲げ角度が大きいほど低下はより顕著になった
- この実験は、空気ギャップパターンで曲げ位置をエンコードし、マイクロコントローラ上のナイーブベイズ分類器で位置をデコードするという最終仮説へとつながった
- OptiGapの概念は絶対式リニアエンコーダに近い
- リニアエンコーダは位置ごとのコードを読み取り、直線移動を測定する
- 絶対式エンコーダは各位置ごとに固有のコードを出力し、変位を識別する
- OptiGapは、並列光パイプに配置した曲げ感度のある空気ギャップパターンで絶対位置をエンコードし、単一光ファイバーセンサーのように動作する
-
Inverse Gray Codeの選択
- 絶対式エンコーダでは一般にGray codeが使われる
- Gray codeは、連続する2つの値が1ビットだけ異なる2進コードである
- OptiGapでは、連続値ができるだけ多くのビットで異なっているほうが識別しやすい
- この要件に合わせてInverse Gray codeを使用した
- Inverse Gray codeは、連続する2つの値が最大で
n-1個のビットで異なる2進コードである - コード列で
1がある位置ごとにフィラメントを切断して空気ギャップを作る - この方式は任意のビット数へ拡張可能である
- プロトタイプは3ビットで8つの位置を表現した
プロトタイプ製作と小型化
- 最初のOptiGapプロトタイプは、異なる空気ギャップパターンを持つ透明TPU 3Dプリンターフィラメント3本で作られた
- 3本の光を1本の光ファイバーケーブルにまとめるため、市販の3:1光ファイバーカプラを使用した
- このプロトタイプは、OptiGapの仮説と動作理論を検証する最終段階だった
-
PMMA光ファイバーによる小型化
- 初期プロトタイプは3Dプリンターフィラメントのサイズのため大きくかさばっていた
- PMMAプラスチック光ファイバーは、より小型で柔軟な代替手段として評価された
- Industrial Fiber Optics, Inc.のジャケットなしPMMA光ファイバー500・750・1000ミクロン製品をセンサー線材としてテストした
- 3種類すべてが十分な柔軟性を示し、総合的には500ミクロン光ファイバーが最も適していた
-
光トランシーバーの複雑さの低減
- 複雑なVL53L0X ToFセンサーの代わりにフォトダイオードとIR LED構成を使用した
- この変更によりシステムの複雑さを減らし、モジュール性を高めた
- センサーデータをマイクロコントローラで読み取れるようになった点も、初期プロトタイプに対する重要な改善である
- その後、STM32マイクロコントローラとフォトダイオード・IR LED構成をベースにデモシステムを製作した
STM32で動作するリアルタイム分類
- 最終開発段階では、STM32マイクロコントローラにナイーブベイズ分類器を統合し、センサーデータから曲げ位置をデコードした
- ナイーブベイズ分類器を選んだ理由は3つある
- if文やルックアップテーブルより効率的である
- 新しいデータや、以前に見たことのないデータを処理できる
- 複数の入力変数間の関係を考慮し、精度向上の可能性がある
- 分類器はベイズの定理を適用する確率モデルである
- このシステムでのクラスは曲げ位置を意味する
- 測定値がどのクラスに属するかを判断する方式で動作する
- 実装にはArm CMSIS-DSP libraryを使用した
-
センサーデータのフィッティング
- 分類器統合のため、各空気ギャップパターンのセンサーデータをガウス分布にフィッティングした
- 迅速なラベリングとフィッティングのためにPython GUIを開発した
- scikit-learnのGNB、すなわちGaussian Naive Bayesを使用した
- その後、より一般的で複雑なデータフィッティングに対応できるようUIを改善した
- 各クラスの確率は計算後、マイクロコントローラで使用するヘッダーファイルとして保存された
-
センサーデータのフィルタリング
- 分類器の精度を高めるため、STM32上で2段階フィルタリングを実装した
- 第1段階は基本的な移動平均フィルタである
- 第2段階はKalmanフィルタである
- フィルタリングは、入力信号に対するノイズを低減するために使われる
デモ、統合、次のステップ
- OptiGapのデモには、組み立て工程と最終センサーシステムの動作が含まれる
- デモ項目は、TPUフィラメントベースの組み立て、OptiGapセンサーによる光減衰、センサーデータのフィッティング、PMMA光ファイバーとTPUフィラメントを用いたセグメント分類、水中動作で構成される
- OptiGapはEneGateというモジュール式駆動・センシングシステムにも統合された
- この統合にはカスタムPCB設計とシステム統合が含まれ、詳細はオンライン公開の論文で扱われている
- EneGateシステムのPCBと接続するための小型光学PCB版もプロトタイプとして製作された
- 実際のソフトロボットシステムでもOptiGapを検証した
- 詳細全体は、RoboSoft論文 “Embedded Optical Waveguide Sensors for Dynamic Behavior Monitoring in Twisted-Beam Structures” で扱われる予定である
- この研究は商用化作業にもつながっている
1件のコメント
Hacker Newsのコメント
美しい研究で、文書化もとても丁寧
最初は概念的に 時間領域反射測定法 にかなり似ていると書こうと思ったが、Cindy Harnettが指導教員のようなので、たぶんすでにご存じだろう :)
本当に素晴らしい。材料をもっと 自己認識的 あるいは検査可能にするという発想がよくて、とてもSFっぽい
今の仕事の前の研究でもこれと少しだけ接することをやっていたので、これがトップに載っているのを見てなおさらうれしい。私たちがやったのは、複素数値ニューラルネットワークで光ファイバーの 伝送行列 を学習することだった。光学分野では以前はMaxwell方程式を伝播させるやり方だったが、私たちは実際の物理が単一の複素行列積に帰着する非常に単純な構造で、最先端性能を何桁も上回った。ここの研究との接点は、光ファイバーが曲がると新しい行列を学習し直さなければならないことにある。入出力の測定を何回か行って光ファイバーのスプライン形状をモデル化できるよう、パラメータ化された特性化を学習することもできるかもしれない。ただ、私たちはそこまでは行けなかった
興味があれば論文はこちら
CS寄りの論文: https://papers.nips.cc/paper_files/paper/2018/hash/148510031...
物理寄りの論文: https://www.nature.com/articles/s41467-019-10057-8
本当に見事。少しだけ磨き込めば非常に高い精度で 量産 もできそう
応用先も豊富だ。空間充填曲線を使えば、ロボットに触覚をコスト効率よく与える2D/3Dセンサーを作れそうだ。柔軟なチューブのようなものに巻けば、方向感度を持たせて 固有受容感覚 にも使えそう。温度差のように空気の隙間に影響するほかの要素も検知して位置特定できる可能性が高そうに見える
「素晴らしい指導教員のおかげで」という部分が核心。悲惨な経験と良い経験を分ける違いはまさにそこにある
素晴らしい記事。説明がとても明快で、概念を示す GIFや視覚資料 の使い方もちょうどよかった
この分野への理解が限られているただのソフトウェアエンジニアだが、読んでいる間ずっと楽しく、多くを学べた。よくやったし、博士号取得もおめでとう
まったく同じではないが、さまざまな 音響センシング作業 に光ファイバーケーブルを使うDASを思い出す。基本的にはジオフォン/ハイドロフォンの代替のような方式だ
海底光ファイバーをいろいろな監視用途に使う論文もかなりあった。Luna Innovationsがひずみ検知のような産業用途に使っているし、Schlumbergerも曳航ストリーマー関連の光ファイバーセンシング特許をいくつも持っていたはず。ただ、ソフトロボットに使うのは見たことがない
ただ、このアイデアはあまりにも根本的に単純なので、むしろもっと賢い人たちほど見過ごしてきたようにも思える
本当に驚くべきアイデアで、素晴らしい仕事
センサーデータに デッドゾーン がかなり大きく見えるが、センサー間の距離を縮めれば簡単に直せるのでは?
曲がる方向を検知するのも有用だろうか? Mercedesのロゴのようにチューブを分けて、1本の外側チューブの中にセンサーセットを3つ入れればできそうだ
複数箇所の曲がりを検知する方法もあるだろうか? 現在の構成では値を実質的にORしているだけなので、誤読が起きそうに見える。良い解決策があるのか気になる
結局のところ、ある読み取り値から次の読み取り値への変化した相対デルタを当てはめる問題になる。ただし、すべての関節が大きく曲がると、ある時点で最後まで光が届かなくなるという落とし穴がある。これを緩和する方法もあるが、すでにコメントが長くなりすぎた
ゴルフクラブがセンサーの上を通るとき、どれだけ近いか、どれだけ速いか、スイング軌道がどうかを正確に検知できるセンサーを探していた
ボールを打たなくてもよい ゴルフ・ローンチモニター を作って、屋内でシミュレーションゴルフができるようにしたいというアイデアだ。リビングでTVでMastersを見ながら一緒にプレーしつつ、ゴルフボールでTVを壊さないで済むような感じだ
このセンサー1つ、あるいは複数を束ねて使うのが適しているのか気になる
先に述べたように、高速カメラ とKinect風の骨格抽出技術を組み合わせるほうがずっと良さそうだ。PlayStation Eyeと既存のオープンソース技術だけでもガレージで作れそう
これは初代Nintendo Power Gloveに入っていた技術と同じではないか? https://www.youtube.com/watch?v=3g8JiGjRQNE
チューブに光を入れてその光を測定し、キー入力をトリガーしていた。だから指や手を曲げると動作が起きていたわけだ。その後の世代ではメカニズムが変わった
センサーが2か所以上で曲がったら何が起きるのか理解できない
冒頭でToFセンサーに触れていたので、曲がりで生じる反射を見てそこまでの距離も測るのかと思ったが、実際にはそうではないようだ。センサーを2か所で曲げると、2つの曲がりで生じた 対数減衰の和 しか得られないように見える。曲がりの「強さ」が減衰を連続的に変えると仮定すると、任意の2つの曲がりの組み合わせを区別するには、間隔位置の数だけストランドが必要に見える
私の読み違いなのか、それとも曲がりが1つしかないと分かっている場合に使うことを想定しているのか気になる
「Realtime Machine Learning on a Microcontroller」の段落によれば、波形を実際の位置に変換するメカニズムは ベイズモデル ベースのように見える