3. Other Main Functions

前章でmain_sim.mとその内部で実行される5つの種類の関数について述べた.歩行シミュレーションの実行に用られるMain関数はmain_sim.mただ一つである.その代わりに使用するユーザーがそれぞれConfiguration関数を独自に設定することで様々なシミュレーションを同時に開発することができ,これがClimbLabがシミュレーションプラットフォームである所以である.しかし,main_sim.m以外にも,ClimbLabのフォルダ内には単独で実行できる関数が存在する.これらの関数には接頭辞にmain_が付けられており,以下の5つのMain関数が存在する.

  • main_iterative_sim.m

  • main_LP_2D_analysis.m

  • main_LP_3D_analysis.m

  • main_target_detection.m

  • main_iterative_target_detection.m

  • main_grid_map_designer.m

上記の5つの関数の役割について以下で説明する.なお,これらのファイルを実行するためには,実行する際のMATLABの「現在のフォルダ」や,MATLABのパスに注意する必要がある.

main_iterative_sim.mは,宇野らによって実装された,脚型ロボットの関節配置の違いによるトルク消費の比較をおこなうための実行コードである.このコード内ではmain_sim.mに相当するコードがループによって繰り返し実行されるようになっている.ループ内では,ある指定した姿勢で一定時間ロボットの姿勢を保ち,その間のロボットのトルク消費を計算する.姿勢を少しずつ移動させながらループを繰り返して検証していくことで,様々な姿勢におけるロボットのトルク消費を分析することができる.main_iterative_sim.mは,フォルダ/climblab/src/script下に置かれている.

main_LP_2D_analysis.mおよびmain_LP_3D_analysis.mはロボットのリンクパラメータ(LP)から,ロボットの脚先可動範囲をそれぞれ2次元的と3次元的に描画する関数である.ロボットモデルをアップデートして新たなリンクパラメータへと変更する際などに,これらの関数を使うことで広い脚先可動範囲を持つロボットの設計を進めることができる.これらの関数はフォルダ/climblab/src/robot/LP_analysis下に置かれている.

main_target_detection.mは,地形情報データに対して把持可能点検出をおこなう実行ファイルである.main_sim.m内でもtarget_detection.mを実行して把持可能点検出をおこなうこともできるが,予めこのMain関数を用いて,main_sim.m内で実行されるコードと同一のコードによって把持可能点検出だけを試行することができる.この関数を用いて,把持可能点検出の結果を予め確かめたりパラメータを調整したりすることで,地形内の把持点の分布を予め把握してから,実際の歩行シミュレーションに取り組むことができる.main_target_detection.mでは,Configuration関数として,config_target_detection_testing_param.mを読み込んでいるため,このConfig関数に書いたのと同じパラメータを歩行シミュレーションのConfig関数にも記述すれば,同じ把持可能点の出力結果がmain_simでも得られることになる.また把持可能点検出は処理に時間がかかるため,何度も同じ地形マップでの歩行シミュレーションを繰り返して検証する場合,予めmain_target_detection.mを実行して得られた把持点の分布を保存し,main_sim.mでは把持可能点検出アルゴリズムを実行するのではなく保存した把持点分布を読み込むようにすれば,歩行シミュレーションにかかる時間を節約することができる.main_target_detection.mは,フォルダ/climblab/lib/target_detection下に置かれている.

また,main_iterative_target_detection.mは,main_target_detection.mを繰り返し実行するように書かれた関数である.把持可能点検出では,地形情報をボクセル化し,一つの巨大な三次元配列に変換する.そのため,高低差が激しいマップや奥行の広い地形マップの場合,三次元配列の要素数がMATLABで扱えるサイズを超えてしまい,計算できなくなってしまう.この問題を避けるために,ロードした地形情報をxy方向に小さな「セクション」に切り分け,切り分けたセクションをz方向に「ステージ」としてさらに切り分ける.この切り分けた狭い範囲に対して把持可能点検出をおこなっていくことで,広大な地形マップに対しても地形内全体の把持可能点を一気に検出することができる.

最後のmain_grid_map_designer.mは,格子状に把持点を配置したグリッドマップを作成する実行ファイルである.マップのサイズとグリッド幅を指定することで,グリッド状に把持点を配置してマップを生成する.さらに,指定した割合だけ把持点をランダムに間引いたり,指定したエリア内に存在する把持点を消去したりすることで,疎密さを有するようなマップやゴール到達のために迂回を要するようなマップなどを自由に設計することができる.main_grid_map_designer.mはフォルダ/climblab/src/environment/grid_map下に置かれた関数である.

以上が,main_sim.m以外に実行ファイルとしてClimbLabに存在しているMain関数である.