二足歩行ロボットの学習制御

人間が行う運動、例えば二足歩行を考えましょう。
歩行、と一言でいっても「平らな道を歩く」、「ジャリ道を歩く」、
「坂道を登る/下る」、「階段を登る/下る」など、その環境によって
様々な状況が考えられますが、我々はその状況に応じて転ばず器用に
歩くことができます。
これは我々が長い期間をかけて、環境に
適応して歩く方法を
学習して
体得してきているからであると考えられます。
皆さんもおよそ1歳の頃から、立ち上がって歩くことを学習してきたわけです。
それでは、人間を模倣して作られたロボットはこのように環境に適応して二足歩行することができるでしょうか?
性能によりますが、ロボットにとってあらかじめ想定された環境以外で
動作することは難しいことであり、多くの場合転ぶなどして歩行に失敗します。

ですから、ロボットを様々な環境で動作させたい場合、想定される環境の数だけ
制御則をあらじめ用意しておかなければなりません。それは非常に大変な作業です。
ロボットは人間のように環境に適応して動作することはできないのでしょうか?
そして、ロボットも人間のように学習することによって運動や様々な情報処理を
体得することはできないのでしょうか?
それを考える学問分野がニューラルネットワークや学習理論と呼ばれるものなのです。
そのうち、ここでは特に
強化学習という手法を用い、
人間のように試行錯誤で運動(特に二足歩行)を獲得するモデルの構築を目指しています。
ここで示した図は、Java (上) (→
シミュレータ) や Visual C++ (右) を用いて当研究室で作成した二足歩行モデルのシミュレータです。このアプリケーションでは人間の歩行を
「腰の (x,y) 座標」、「左右の腰の角度」、「左右の膝の角度」の6自由度でモデル化し、運動方程式を数値的に解いてアニメーション表示しています。
このアプリケーション部分は、「どのようにすれば歩行が実現されるか」を考えている
という意味で、ロボットの脳に相当すると言えます。

また、左の図は 2007 年5月〜8月に工学院大学に滞在した
フランス人留学生 Laurent Verdoïa 君が Linux と Qt4 ライブラリを用いて
作成したアプリケーションであり、どのような信号がロボットの歩行に
適切であるかを考察するためのものです。
イギリスの科学者チューリングは「脳は冷めた
オートミール(ポリッジ)の
ようなもの」と表現しました。オートミールのように小さくさえない脳が、
運動を始めとする様々な情報処理を実現していることは皆さん経験している通りです。
この脳の情報処理能力をより深く知ろう、というのがこの研究室で目指していることです。
なお、強化学習による運動制御ついては、教員の金丸が作成した以下の Java によるシミュレータを御参照下さい。
また、用いる CPG としては様々なものが考えられますが、例えば以下の
van der Pol 方程式を使うことができます。
二足歩行ロボットの回路

ロボットの骨格に市販のロボットキットを利用するとは言え、
これをPCから自由に制御するためには、様々な周辺回路が必要になります。
ロボットの関節にはラジコン用のサーボモーターを
用いますが、この制御には PWM 信号が必要となります。
PWM 信号の生成には FPGA の利用など、いくつかの方法が考えられますが、
ここでは PIC マイコンを用いて左の図のような回路を作成しました。
4つの関節用サーボモーターに対し、下図の様な 4 つの PWM 信号を生成しています。
PWM 信号の幅がモーターの目標角になりますが、その目標角をここでは
振動を生成する微分方程式である van der Pol 方程式の解を利用しています。
van der Pol 方程式については、教員の金丸が
Scholarpedia において執筆した記事
van der Pol oscillator を御覧下さい。
このサーボモーターは
近藤科学社製の Red バージョンを用いていますので、
モーターへの角度指令とモーターの角度取得の両方を行うことができます。
オシロスコープの表示は角度指令と角度取得を交替で行っている様子を示しています。
このサーボモーターとマイコンの組合せは、ロボットの筋肉と神経に
相当すると言えるでしょう。