ProMemo

DynamicControlDemo

最終更新:

yosilove

- view
だれでも歓迎! 編集

DynamicControlDemo



ロボット(TestRig class):MotorDemo.cpp

  • m_rigs (ロボット)
    • m_ownerWorld
    • m_shapes : 0->本体/奇数番目->太もも/偶数番目->すね
    • m_bodies : 0->本体/奇数番目->太もも/偶数番目->すね
    • m_joints:偶数->股関節(本体と太もものジョイント)/奇数->膝(太ももとすねのジョイント)

ロボットの生成(TestRig コンストラクタ)

ロボットを作る
  1. Shape(なんか部品的なの)を作る(m_shapes)
  2. ワールド上に本体を配置する(m_bodies)
  3. ワールド上に足を配置する(m_bodies)
  4. 足と本体をヒンジ(Hinji)で接続(拘束)する(m_joints)


ロボットの削除(~TestRig)

ロボット用に確保した配列や構造体などなどを開放する


シミュレーションループ(MotorDemo class):MotorDemo.cpp

コールバック

描画コールバック(clientMoveAndDisplay):メインのループ

  1. シミュレーションを進める(stepSimulation経由でsetMotorTargetsを呼び出す)
  2. 現在の状態を描画する
  3. ロボットにx,y,z軸を描画

キーバードコールバック(keyboardCallback)

自作のキーバインド + DemoApplication::keyboardCallback

書き換えるときはDemoApplication.cpp内のkeyboardCallbackと被らないように注意すること。

アイドル時の描画(displayCallback)

アイドル時の描画コールバック

”シミュレーションを進めずに”ロボットを描画

ヒンジを動かす(setMotorTargets)

シミュレーションの時間によってモーターの角度を変更する。

  1. ロボット(r)を取得
  2. ロボットの足のヒンジ(i)を取得
  3. ヒンジ(i)の角度を設定
    • 時間に応じて可動域の何パーセント曲げるか決める
    • 現在の角度と目標角度の差を計算
    • 角度を計算
    • 回転させる

物理空間の削除(exitPhysics)

後片付け関数

main.cpp

  1. MotorDemoの初期化
  2. MotorDemoの起動



タグ:

Bullet Demo
+ タグ編集
  • タグ:
  • Bullet
  • Demo

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

目安箱バナー