DynamicControlDemo
ロボット(TestRig class):MotorDemo.cpp
- m_rigs (ロボット)
- m_ownerWorld
- m_shapes : 0->本体/奇数番目->太もも/偶数番目->すね
- m_bodies : 0->本体/奇数番目->太もも/偶数番目->すね
- m_joints:偶数->股関節(本体と太もものジョイント)/奇数->膝(太ももとすねのジョイント)
ロボットの生成(TestRig コンストラクタ)
ロボットを作る
- Shape(なんか部品的なの)を作る(m_shapes)
- ワールド上に本体を配置する(m_bodies)
- ワールド上に足を配置する(m_bodies)
- 足と本体をヒンジ(Hinji)で接続(拘束)する(m_joints)
ロボットの削除(~TestRig)
ロボット用に確保した配列や構造体などなどを開放する
シミュレーションループ(MotorDemo class):MotorDemo.cpp
コールバック
描画コールバック(clientMoveAndDisplay):メインのループ
- シミュレーションを進める(stepSimulation経由でsetMotorTargetsを呼び出す)
- 現在の状態を描画する
- ロボットにx,y,z軸を描画
キーバードコールバック(keyboardCallback)
自作のキーバインド + DemoApplication::keyboardCallback
書き換えるときはDemoApplication.cpp内のkeyboardCallbackと被らないように注意すること。
アイドル時の描画(displayCallback)
アイドル時の描画コールバック
”シミュレーションを進めずに”ロボットを描画
ヒンジを動かす(setMotorTargets)
シミュレーションの時間によってモーターの角度を変更する。
- ロボット(r)を取得
- ロボットの足のヒンジ(i)を取得
- ヒンジ(i)の角度を設定
- 時間に応じて可動域の何パーセント曲げるか決める
- 現在の角度と目標角度の差を計算
- 角度を計算
- 回転させる
物理空間の削除(exitPhysics)
後片付け関数
main.cpp
- MotorDemoの初期化
- MotorDemoの起動