水域および沼地環境の再現方法の検討

これまでの研究で、6足モデルが平地を歩行するシミュレーションを行ってきた。

リンク:研究メモ>GAシミュレーション
リンク:研究メモ>GAシミュレーション その2

そこで、次のステップとして実際の干潟に含まれている沼地や水域での移動シミュレーションを行うことを考える。

今回は、これらの環境をGazeboで再現する方法として、以下の3つの方法を検討した。
(1)ボールプール(水域および沼地環境の再現)
(2)CFMパラメータの設定(沼地環境の再現)
(3)水中動作を再現(水中環境の再現)


(1)ボールプール(水域および沼地環境の再現)

まず初めに、水域および沼地環境の再現方法として、ボールプールを用いることを検討した。
ここでは、液体と泥を微小な粒子の集合だと考え、以下の図1の様に大量の球オブジェクトによってボールプールを作成し、環境の再現を行った。

図1 Gazeboで作成したボールプール

今回は、ロボットが沼地を歩行することを想定して、モデルの脚の半分以上が埋まるようにボールプールを作成した。

以下にボールプールの詳細を示す。

表1 ボールプールのプロパティ

 

このボールプール内で、静歩行のパラメータを使用した歩行プログラムを10秒間動作させた。
以下に、シミュレーション時の動画を示す。

動画1 沼地環境を想定したボールプールでのシミュレーション(4倍速再生)

しかし、動画からもわかるように処理速度が遅く、歩行プログラムが終了するまでに約36倍の6分間もかかった。

この原因は、ボールプールに使用したオブジェクト数が約1800と膨大な数であり、その1つ1つの運動計算を毎回行っているため、Gazeboにかかる負荷が増大したためだと言える。

そのため、この方法で環境を再現することは難しいと思われる。


(2)CFMパラメータの設定(沼地環境の再現)

次に、CFM(Constraint Force Parameter)というパラメータを設定し、沼地環境の作成を試みた。

CFMとは、オブジェクトに設定したバネ定数、および減衰(ダンパ)定数より決定されるパラメータである。

CFMは0から1の範囲で値を取り、CFM=0でオブジェクトは剛体となり、値が1に近づくほど柔らかいオブジェクトとして定義される。

このCFMを用いて以下の図2のような沼地環境を作成し、歩行シミュレーションを行った。

図2 CFMを設定したオブジェクト(青い床)での歩行

しかし、実際の沼地環境のバネ定数や減衰定数の値について調査を行ったが、沼地に限らず実際に使われているこれらの物性値はほとんど見つからなかった。

そのため、今回のシミュレーションでは下記のゴムの物性値を用いた。
・ks=200,000 [-]
・kd=100 [-]

歩行シミュレーションの結果、弾性のあるゴムの様な地面を歩行させることは可能だとわかった。
しかし、図2のようにモデルの脚が埋まってしまう沼地では、以下の動画のようにモデルが暴走を始めた。

動画2 モデルの暴走

この結果については当然のことであるが、設定したバネ定数が非常に大きく、モデルの脚の動きを処理出来なくなったためである。
したがって、適切な物性値がわからなければ、この方法での沼地環境の再現は難しいと思われる。

また、適切な物性値については現在調査中である。


(3)水中動作を再現(水中環境の再現)

最後に、オブジェクトに浮力、揚力、抗力を設定し、水中での動作を再現することで水中シミュレーションを行う方法を検討した。

その結果、AUVの様な浮体と推進力を持つモデルを作成することは出来た。

動画3 AUVモデルのシミュレーション

しかし、浮力などのパラメータを多足歩行ロボットに設定する場合、揚力および抗力については実機を使って実験により求める必要がある。

そのため、この方法での水中シミュレーションは現段階では難しいと言える

 

(1)から(3)より、Gazeboで水域および沼地環境を再現することは、今回検討した方法では現状困難だと思われる。

しかし、(1)のボールプールについては、ソフトウェアの処理速度の問題を解決できれば、環境の再現方法として使えると思われる。

そのため、現在はより処理速度が速いと考えられるODEとボールプールを用いてシミュレーションを行うことを考えている。

また、ソフトウェアの処理速度を改善する方法として、以下の3点について今後取り組んでいく予定である。
・C++でマルチスレッド化
・並列計算
・GPUによる計算

2017年06月16日