2019年7月24日水曜日

四脚歩行ロボットを作る その1.5 姿勢制御について悩み中

1.姿勢制御の構想中

さて、まだサーボモータがようやく届いたのですが、待ってる間に考えていたことなどを覚書。
4脚制御ロボットの制御方法についていろいろ悩み中です。2足歩行の文献はとても多いのですが、4脚歩行は少ない様です。本流ではないのでしょうか。

2足歩行の文献も全く手におえないものが多く、自分の数学能力の低さに気が遠くなります。
面白いので勉強しようとは思いますが、大学の先生たちと張り合う気にはなれないので、もう少し違う素人ならではアプローチをしたいものです。

2足歩行の重心移動や床反力や加速度云々のあたり、ぱらぱら眺めているだけでも面白い文献が多いのですが、これだけ計算やシミュレーションができるなら、ロボットにムーンウォークさせられるんじゃないでしょうか?
などと思っていたらさすがBoston Dynamicsさん、すでにやってましたね。四脚ですが。。

2.モノマネ開発法

専門的な知識の無い身としては、最新の理論や手法を実装するには超えられない壁がいくつもあります。以前にも述べたように、私が目指すはあくまでもモノマネです。生き物らしい動きをするロボットのモノマネ、まずはSpot miniの動画を観察してどんなところに生き物らしさを感じているのかを探しています。
また、どのようにその制御を実現しているのかを想像し、チープな方法へ置き換えていきたいと考えています。

Spot miniの動きを見てわかるのは、周囲の情報を幅広くセンシングして「理解」しているであろうこと。そしてその状況に対応する方法をいくつも想起して選択し実行しているであろうこと。
前進を始める際には、自分の姿勢を見て周りの障害物を見て、問題がなければ後肢を蹴りだし、前肢を前に繰り出しています。体が動くのは最後の結果であって、目で見て脳で考えるのが先にあるはずです。しかしそこには、高度なセンサーと高速な処理装置と高級な知能が必要で、私にはどれもありません。悩ましいところです。

ところで、どこで読んだか忘れてしまったのですが、人間の脳は意思よりも先に準備を開始しているという話を聞いた気がします。バットでボールを打とうと意図する前に脳の運動野の活動が始まっていると言う話だったかと思います。
脳は無意識の段階で環境へのフィードバックを始めているというのもありそうな話ですが、私はこんな風に妄想しています。
ボールを打つ前には、打つ準備を始めている脳とそうでない脳が量子論的に重ね合わさった状態にある。私は今、「ボールを打った」世界にいるので、観測されるのは「ボールを打つ準備を始めた脳」に収束した姿なのだ。
そう考えると、量子コンピュータが実用化されれば、ロボットの姿勢制御も飛躍的に前進するのかもしれませんね。

3.ロボット三重苦

はじめに神は天と地とを創造されました。これにより重力加速度が彼をとらえ、すきあらば転倒させようと手ぐすね引いて待ち受けています。また、神が「光あれ」と言われたにも関わらず、彼はそれを感知することができません。なぜなら彼には視細胞はおろか、フォトダイオードもCCDもCMOSも実装されていないからです。
彼は、視覚センサはおろか、音センサもスピーカーも持ちません。触覚や味覚や嗅覚も持っていません。三重苦どころの話じゃないですね。

しかし、かろうじてシリアル通信チャンネルは持っているので、音声によらない通信手段を持っています。下手すれば火田七瀬のテレパシー並みの能力です。
また、9軸ジャイロセンサと四肢の荷重を計測する圧力センサを実装したいと思っています。圧力センサの取付け位置は、形状的にも動体と脚の間に挟み込むくらいしかなさそうですが、調整は難しそうです。出来れば肉球センサみたいなものが開発されればうれしいのですが。
小鹿だって立つんだから、ウチのロボットだって立つくらいはできるんでしょう、タブン。目を閉じてたって、手探りで歩くくらいならできそうなので、高度なセンサーはオミットでよいでしょう。いわば目が開くまえに、三半規管と足裏の触覚だけで立ち上がろうとする生まれたての小鹿さんです。

あと、良いフィードバック回路を作るためには適切なフィルタリングが必要だろうなというあたりは想像しています。特に圧力センサの値なんてバラツキまくるだろうからかなりの補正が必要だと思われます。どうすればいいのかまだ想像もつきませんが、FFTで済むか、カルマンフィルタとか相補フィルタとかあれやこれやをごにょごにょする必要があるのでしょう。

4.集中制御よりも分散制御

想像しているだけでも、生き物らしく動かそうとすると、ボデーのスペック以上に脳のスペックが重要なことが判ってきました。しかし、数学的な理解も、コーディングの技術も、優れたハードウェアもないことはすでに述べた通り。どんなふうにゴマ化してモノマネに徹するかが、腕の見せ所になりそうです。

ボデーの重心位置を推定して理想的な四肢の軌跡を計算するのは大変なので、基本となる歩様に対して、加速度センサーの値から転倒防止のための補正を行う程度でなんとかバランスが取れないかと思っています。
そもそもArduinoの計算能力はそれほど高く無さそうですので、計算量を減らすうえでもこの方法がよさそうです。出来上がる動作は小鹿さんというより虫になりそうな気もしますが。
処理をするのはマイコンなのでハード的には集中制御ですが、ソフト的には脚一本ごとの動作修正を独立して判断させると言う意味で分散制御的な姿をイメージしています。

5.次はサーボの動作テスト

サーボモータを待ちがてらロボットの構造の検討などもしていたので、次回は構造概要についてまとめようかと思っていたのですが、目の前にサーボがあって素通り出来るほど大人では無いので、次回は動作テストなどを。


0 件のコメント:

コメントを投稿

ESP32でスマホとシリアル通信 その2 BluetoothでLチカ

1.BluetoothでLチカ制御 前回、Bluetoothでの双方向通信に成功しましたので、ついでに少しスケッチを修正してスマホからESP32のLチカを制御した様子が以下の動画です。 撮影が悪くて画面が良く見えませんが、"1"を送信...