Upgrade to Pro — share decks privately, control downloads, hide ads and more …

WindowsでGenesisに挑戦した話

 WindowsでGenesisに挑戦した話

第51回ロボティクス勉強会の発表資料です。

Avatar for Minoru Natsutani

Minoru Natsutani

May 16, 2025
Tweet

More Decks by Minoru Natsutani

Other Decks in Technology

Transcript

  1. 5 Genesisの紹介 剛体 ソルバー 物理エンジン 流体 ソルバー 連続体 ソルバー 物理エンジンの機能

    ・Simulationの対象物の登録、管理 物理エンジンのループ ・時間を進める ・接触判定 ・接触後の状態を各種ソルバーで求める ・状態更新 物理エンジンとは
  2. 6 Genesisの紹介 剛体 ソルバー 物理エンジン 流体 ソルバー 連続体 ソルバー FK

    IK OMPL (軌道生成ライブラリ) Pytorch PyRender (レンダリング) PD 制御 ロギ ング Gazeboと比べると、各種ソルバーが内蔵されており、Pytorchとの親和性が高い。 一方、ROS対応はこれから。
  3. 7 Windowsで動かす時の事前情報 Windows Native ・サンプルはすんなり動く ・OMPL(軌道生成)が動かない ・カメラ周りで動かないところがある。 WSL2 ・動く ・GPUをレンダリングに使ってくれない。CPU

    でやるので描画させると死ぬほど遅い。 NGの箇所は、主にCUDAとOpenGL周り。 Dockerを使っても動かない。 動くタイミングがあるので、今日全部最新にしたら状況変わっている可能性がある。 今回はWindows+WSL2の組み合わせで動くようにした。
  4. 8 URロボット(ユニバーサルロボット)の配置 URDFをここからダウンロード https://github.com/culurciello/pybullet_ur5_gripper/blob/master/README.md ur = scene.add_entity( gs.morphs.URDF(file='D:/home/myproj/genesis/UR5/asset/ur5/ur5.urdf', fixed=True), )

    URDFを読み込むときに、fixed=Trueが必要。 これが無いと、ロボットが自由に動いてしまう。 URDFで本体をworldに固定する方法は無効。 set_qpos()を使うことでロボットの姿勢を強制できる。 これは実質ワープなのでSimulationには使えない。
  5. 9 PD制御 PD制御に必要なパラメータを指定して、 set_dofs_force_rangeを設定すると、Genesisに組み込ま れているPD制御が使える。Genesis組込のIKの後に、 control_dofs_position()を使う。 for i in range(1000):

    ur.control_dofs_position(qpos) scene.step() # from franka_cube.py kp = np.array([4500, 4500, 3500, 3500, 2000, 2000, 100, 100, 100, 100, 100, 100,]) kv = np.array([450, 450, 350, 350, 200, 200, 10, 10, 10, 10, 10, 10]) 動画では上手く取れるように、移動先を微調整してます。
  6. 11 Windowsで動いた様子 waypoints = ompl_waypoints(start_qpos, goal_qpos, 200) for qpos in

    waypoints: ur.control_dofs_position(qpos[0:6], motors_dof) ur.control_dofs_position(finger_qpos, fingers_dof) scene.step() OMPLに初期姿勢、ゴールの姿勢、ステップ数を与える と軌道が返ってくる。その軌道を使ってPD制御を行う とスムーズに動く。 軌道生成はURロボット本体のみとし、ハンドは無視し ている。PD制御も、ロボット本体とハンドで別の制御 をしている。