Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
WindowsでGenesisに挑戦した話
Search
Minoru Natsutani
May 16, 2025
Technology
0
150
WindowsでGenesisに挑戦した話
第51回ロボティクス勉強会の発表資料です。
Minoru Natsutani
May 16, 2025
Tweet
Share
More Decks by Minoru Natsutani
See All by Minoru Natsutani
動き検出勉強会資料
natsutan
0
12
辛い仕事をプリキュアで乗り切りHack
natsutan
0
57
論文読み勉強会 RoboGen
natsutan
0
180
プログラミング写経のすすめ
natsutan
0
960
ロボット模倣学習勉強会
natsutan
0
190
スモールデータ勉強会発表資料
natsutan
1
990
Robotics勉強会資料
natsutan
0
65
Human-in-the-loop機械学習社内勉強会
natsutan
0
1.5k
linear.pdf
natsutan
1
280
Other Decks in Technology
See All in Technology
AIにどこまで任せる?実務で使える(かもしれない)AIエージェント設計の考え方
har1101
3
990
Tenstorrent 開発者プログラム
tenstorrent_japan
0
300
20250612_GitHubを使いこなすためにソニーの開発現場が取り組んでいるプラクティス.pdf
osakiy8
1
730
OCI Oracle Database Services新機能アップデート(2025/03-2025/05)
oracle4engineer
PRO
1
140
SFTPコンテナからファイルをダウンロードする
dip
0
110
CIでのgolangci-lintの実行を約90%削減した話
kazukihayase
0
140
新卒3年目の後悔〜機械学習モデルジョブの運用を頑張った話〜
kameitomohiro
0
170
(非公式) AWS Summit Japan と 海浜幕張 の歩き方 2025年版
coosuke
PRO
0
150
IAMのマニアックな話 2025を執筆して、 見えてきたAWSアカウント管理の現在
nrinetcom
PRO
3
520
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
41
23k
kotlin-lsp を Emacs で使えるようにしてみた / use kotlin-lsp in Emacs
nabeo
0
140
工具人的一生: 開發很多 AI 工具讓我 慵懶過一生
line_developers_tw
PRO
0
110
Featured
See All Featured
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
20
1.3k
Why You Should Never Use an ORM
jnunemaker
PRO
56
9.4k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
52
2.8k
Designing for humans not robots
tammielis
253
25k
Fireside Chat
paigeccino
37
3.5k
For a Future-Friendly Web
brad_frost
179
9.8k
Testing 201, or: Great Expectations
jmmastey
42
7.5k
It's Worth the Effort
3n
184
28k
Reflections from 52 weeks, 52 projects
jeffersonlam
349
20k
Rebuilding a faster, lazier Slack
samanthasiow
81
9k
Git: the NoSQL Database
bkeepers
PRO
430
65k
Navigating Team Friction
lara
186
15k
Transcript
WindowsでGenesisに挑戦した話 2025/05/16 @natsutan 1
2 自己紹介 名前:夏谷実 仕事:ピッキングロボットで動くAIの開発 X:@natsutan https://natsutan.hatenablog.com/
3 今日話す事 ・Genesisの紹介 ・ピッキングロボのSimulation ・Windowsで動かす時の技 ・ピッキングのSimulationで気になるところ
4 Genesisの紹介 https://github.com/Genesis-Embodied-AI/Genesis/blob/main/README_JA.md
5 Genesisの紹介 剛体 ソルバー 物理エンジン 流体 ソルバー 連続体 ソルバー 物理エンジンの機能
・Simulationの対象物の登録、管理 物理エンジンのループ ・時間を進める ・接触判定 ・接触後の状態を各種ソルバーで求める ・状態更新 物理エンジンとは
6 Genesisの紹介 剛体 ソルバー 物理エンジン 流体 ソルバー 連続体 ソルバー FK
IK OMPL (軌道生成ライブラリ) Pytorch PyRender (レンダリング) PD 制御 ロギ ング Gazeboと比べると、各種ソルバーが内蔵されており、Pytorchとの親和性が高い。 一方、ROS対応はこれから。
7 Windowsで動かす時の事前情報 Windows Native ・サンプルはすんなり動く ・OMPL(軌道生成)が動かない ・カメラ周りで動かないところがある。 WSL2 ・動く ・GPUをレンダリングに使ってくれない。CPU
でやるので描画させると死ぬほど遅い。 NGの箇所は、主にCUDAとOpenGL周り。 Dockerを使っても動かない。 動くタイミングがあるので、今日全部最新にしたら状況変わっている可能性がある。 今回はWindows+WSL2の組み合わせで動くようにした。
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には使えない。
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]) 動画では上手く取れるように、移動先を微調整してます。
10 Windows環境でやるときのOMPLの追加 OMPLは軌道(waypoint)を作ってくれる。 初期の姿勢とゴールの姿勢、時間を指定すると、上手く trajectoryを作ってくれます。ここからここまで2秒で移動し て、といった制御ができる。 Windows環境だとOMPLが動かない。GenesisがOMPLの Python Bindingを必要としているが、OMPL公式のインスト ール方法ではWindow環境のPython
Bindingが提供されてい ない。 WSL2環境ではOMPLが動くので、WSL2でOMPLだけ動かす。 (WSL2は描画が非常に遅いという課題がある)
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制御も、ロボット本体とハンドで別の制御 をしている。
12 その他 トピックはブログに書いてます。 https://natsutan.hatenablog.com/ ソフトロボティクスのSimulationをすると、物が 単色になってしまったので、色を付けて Simulationする方法。
13 ピッキングのSimulationで気になるところ 軌道生成時の衝突判定ってどう捌くのが良いの?
14 ピッキングのSimulationで気になるところ ・Genesisに組み込まれているinverse_kinematics()は、解を一つしか返さず衝突判定をしてくれな い。 ・OMPLの衝突判定にはIKの結果が必要 ・今はURDFでjointの可動範囲を制限して、衝突判定無しでそれっぽい範囲で動くようにしてます。
15 ピッキングのSimulationで気になるところ 軌道生成時に衝突判定を有効(衝突が発生する軌 道を作らない)にしたら、ピッキングロボットが ピッキングできないじゃ・・。 なんとかピックできたとして、その状態で軌道生 成をしようとすると開始の姿勢で衝突しているか ら、軌道生成できないんじゃ・・・
16 ピッキングのSimulationで気になるところ https://www.youtube.com/watch?v=1Mu6rPPzsFA 過去にやったときは、軌道の生成に衝突判定を入れてないケースだっ た。強化学習絡みだと、ぶつかったらぶつかったでNGにしてそう。 他のやり方 EEは軌道生成時の衝突判定から除外する。 EEがついている手首でIKと軌道生成をする。把持動作中は軌道生成し ない。ただし、ピッキング動作で最後にぶつかるのはグリッパーと壁 なので、EEがぶつかるかぶつからないかは結構大事。
対象物をつかんだ時点でロボットと対象物を合体させる。移動時につ かんだ物を落とすのがSimulationできないのでは。 もし、定番の手法をご存じの方がいらっしゃれば後で教えてください。
17 さいごに ご静聴ありがとうございました。 みんなで趣味のGenesisやりましょう。