mujocoの基本操作

こちらはmujocoのv3系統についての基本操作の備忘録になります。
mujocoの情報は英語がほとんどなので、英語弱者の筆者としては日本語情報を増やしていきたいところ。
論文の実装済リポジトリなどではインターフェースがmujoco-pyを使用していることも多く、最新バージョンのmujocoを動かす際にどうやって置き換えれば良いかなども残していきたいと思っています。

目次

オブジェクトの情報取得

基本的な情報としてオブジェクトの位置情報を取得したい。
位置情報の取得はmjModel.body_posで出来ます。
mjModel.body_posの戻り値としてはnumpy.arraynbody×3次元で返ってきます。
nbody=4の場合の例としては以下のような感じ。行ごとに各bodyの位置情報、0列目がx, 1列目がy, 2列目がzを表しています。

array([[0.  , 0. , 0. ],
       [0.  , 0. , 0. ],
       [-2. , 2. , 0. ],
       [0.  , 0. , 0.8 ]])

この時に各行のbodyってどれを指してるのか知りたくなりますよね。
そういった時はmujoco.mj_id2nameメソッドを使用します。
mujoco.mj_id2nameはメソッド名通りオブジェクトidからオブジェクト名を返してくれるメソッドになります。
引数はmjModeltypeidmjModelidはいいとしてtypeってなんぞ!?って私はなりました。
そういう時はちゃんとドキュメントを読みましょう(自省)。ドキュメントを読むとmjtObj typeと書いてありますね。
じゃあmjtObj typeってなんぞ!?ってなりますがこれもドキュメントに書いてありました。
丸っとコピペすると以下の通り。bodyについて知りたければtype=1を指定しておけば良いということですね。

typedef enum mjtObj_ {            // type of MujoCo object
  mjOBJ_UNKNOWN       = 0,        // unknown object type
  mjOBJ_BODY,                     // body
  mjOBJ_XBODY,                    // body, used to access regular frame instead of i-frame
  mjOBJ_JOINT,                    // joint
  mjOBJ_DOF,                      // dof
  mjOBJ_GEOM,                     // geom
  mjOBJ_SITE,                     // site
  mjOBJ_CAMERA,                   // camera
  mjOBJ_LIGHT,                    // light
  mjOBJ_FLEX,                     // flex
  mjOBJ_MESH,                     // mesh
  mjOBJ_SKIN,                     // skin
  mjOBJ_HFIELD,                   // heightfield
  mjOBJ_TEXTURE,                  // texture
  mjOBJ_MATERIAL,                 // material for rendering
  mjOBJ_PAIR,                     // geom pair to include
  mjOBJ_EXCLUDE,                  // body pair to exclude
  mjOBJ_EQUALITY,                 // equality constraint
  mjOBJ_TENDON,                   // tendon
  mjOBJ_ACTUATOR,                 // actuator
  mjOBJ_SENSOR,                   // sensor
  mjOBJ_NUMERIC,                  // numeric
  mjOBJ_TEXT,                     // text
  mjOBJ_TUPLE,                    // tuple
  mjOBJ_KEY,                      // keyframe
  mjOBJ_PLUGIN                    // plugin instance
} mjtObj;
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

CAPTCHA


目次