0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Isaac Sim入門: シンプルなロボットの作成

Last updated at Posted at 2025-12-02

はじめに

この記事はIsaac Simの入門として,4輪のシンプルなロボットを作成し,駆動することを目標としている.
こちらが参考にした資料である.
https://learn.nvidia.com/courses/course-detail?course_id=course-v1:DLI+S-OV-27+V1
Isaac Simは使用者が少なく記事も少ないが,その分公式ドキュメントが非常に充実している.この記事は公式の上記サイトの日本語版という位置づけでまとめようと思う.上記サイトは英語ではあるが入門から発展まで学べるコース形式となっており,自分で学ぶ分には無料なので,非常におすすめである.

環境

項目 仕様
メモリ 32.0 GiB
CPU Intel i7-14700F @ 5.300GHz
GPU NVIDIA GeForce RTX 5080
OS Ubuntu 22.04.5 LTS 64ビット
Isaac Sim 5.1.0

キューブを追加,Phisicsの理解

Visual meshの作成

Create > Mesh > Cubeから作成

Visual meshは見た目だけの情報なので,物理シミュレートの情報(Phisics)は定義されていない

Screenshot_20251123_144907.png

この状態でPlayボタンを押しても,何も起こらない.

Phisicsを有効化

Create > Physics > Physics Sceneを追加
Screenshot_20251123_145156.png

重力やその他の力学情報を与えるものである
Screenshot_20251123_140936.png

この状態でPlayボタンを押しても,何も起こらない.キューブにPhisicsが追加されていないから

キューブにPhisicsを追加

キューブを右クリックしてAdd > Physics > Rigid Body with Colliders Presetを追加
Screenshot_20251123_144943.png

Collision meshは他のオブジェクトに相互作用する方法や他のオブジェクトに反応する方法を提供する

目のアイコンのShowアイコンを開き,Show by Type > Physics > Colliders > Selectedを選択する.すると,Collision meshとして緑色のメッシュとして表示される.
Screenshot_20251123_145059.png

ここで再生ボタンを押すと,オブジェクトは下に永遠と落ちていく.これは地面が追加されておらず,物理シミュレートを有効化して自由落下が再現されたためである.
1455.gif

地面を追加してシミュレート

Create > Physics > Groundから地面を追加
Screenshot_20251123_145937.png
Screenshot_20251123_150151.png

Cubeを選択して開いたプロパティを見ると,Zに0.5が指定されており,地面に設置しているので,1[m]を設定すると,ちょうど0.5m浮くことになる.
Screenshot_20251123_151841.png

ここでPlayボタンを押すと現実世界通り,地面に落ちる
1525.gif

先程追加したPhisics Sceneのプロパティで,重力のY方向に1を与えてみる
image.png

Y軸方向に動き出す.
1600.gif

キューブを浮かせた分やY軸に設定した重力は戻しておく

Cube
Screenshot_20251123_161341.png

PhisicsScene
Screenshot_20251123_161245.png

4つの車輪を追加

機体の準備

キューブを選択し,座標をWorldの原点である (0, 0, 0) に設定

Scaleを (2.0, 1.0, 0.5) に設定
Screenshot_20251123_162942.png

Stage Panelを右クリックしてCreate > XformからXformを作成.これがロボットの親として機能する.Xformはオブジェクトの座標系のようなものである.
Screenshot_20251123_163800.png

Xframeを「SimpleRobot」とリネームする.
Screenshot_20251123_164438.png

ドラッグアンドドロップでCubeをSimpleRobotに追加する.
1648.gif

SimpleRobot Xframeを選択し,Transformのz軸を1.0に設定する.すると,Xformとともにキューブも上へ移動する.これはXformがコンテナのように機能しており,それに属しているものすべてに適用されるからである.
image 1.png

車輪を作成

ロボットでは,親子関係で各リンクの座標系の関係を設計する.tree形式になり,循環関係のようにはならない.例えば,車輪ロボットでは車体がbase_linkといった名前のframeが親になり,その子としてwheel1, …wheel4といった形でframeが接続されていく.

SimpleRobotを右クリックして, Create > Mesh > Cylinderを選択して,円柱を追加する.
Screenshot_20251123_171436.png

Screenshot_20251123_171618.png

OrientのXを90に設定し,X方向に90度回転

Scaleに (0.75, 0.75, 0.75) を設定する.
Screenshot_20251123_172338.png

Translateには (0.5, 0.75, 0) を設定.これは親リンクである機体のXformに対しての座標変換で設定している.
Screenshot_20251123_172729.png

Cylinderを「Front_Left_Wheel 」とリネームする.
Screenshot_20251123_173256.png

作成した車輪を複製する.複製は右クリックメニューからもできるが,「Ctrl + D」でもできる.
Screenshot_20251123_173536.png

複製した3つの車輪について,Front_Right_WheelRear_Left_WheelRear_Right_Wheelとリネームする.
Screenshot_20251123_173746.png

それぞれの車輪について,機体のXformからの位置関係を考えながら,座標の値を設定

Front_Right_Wheel
Screenshot_20251123_174050.png

Rear_Left_Wheel
Screenshot_20251123_174146.png

Rear_Right_Wheel
Screenshot_20251123_174249.png

車輪らしい形になった.
Screenshot_20251123_174325.png

ただ,車輪に関してはまだVisual meshしか持っていないので,Physicsを追加する必要がある.すべての車輪を選択し,Add > Physics > Rigid Body with Colliders Presetから追加する.
Screenshot_20251123_174652.png

ここでPlayボタンを押すと,機体とともに車輪が落下する.座標的な位置関係は設定したが,機体との接続情報等(joint)が設定されていないため,再生するとバラバラになる.
1750.gif

jointの準備

jointによってロボットの関節や車輪といったものを実装できる.

回転ジョイントの作成

回転ジョイント(Revolute Joint)は一つの軸に対して回転するジョイントを作成できる.

まず親リンクであるCubeを選択し,Ctrlキーを押したまま子primであるFront_Left_Wheelを選択し,右クリックからCreate > Physics > Joint > Revolute jointでジョイントを作成する.Ctrlキーを押すことで複数選択をするが,親子の関係を設定するため,先に親,次に子という順番でクリックする必要がある.
Screenshot_20251123_180311.png

回転ジョイントの設定

回転ジョイントをY軸に設定する.
image 2.png

ここで,jointの関係を可視化するために,目玉マークのViewportから,Show By Type > Physics > Jointsを有効化する.
Screenshot_20251123_192221.png

すると,回転の方向を表す,緑色の矢印の円が,水平方向に向いていることがわかる.そのため調整する必要がある.

ここで,以下の項目が重要になる.

local rotation 0: 親リンクに対して,どの方向にジョイントの回転軸が向くか決定する.

local rotation 1: 子リンクのどの方向が joint frame の軸に対応するか を決める.子リンクのメッシュと関節の向きを合わせる

なお,local rotation 1のわかりにくい点として,車輪を選択して見えている座標系はメッシュの座標系であり,元の座標系とは異なるということである.元の座標系ではZ軸が円柱の高さ方向だったことからもわかると思う.

よって,local rotation 1として以下のような変換が必要になる.
Screenshot_20251123_204048.png

親リンク(機体)のy軸に対して,子リンク(車輪)のy軸を向かせたいので,座標変換はいらず,local rotation 0を(0, 0, 0)に設定する.また,local rotation 1を(-90, 0, 0)に設定する.
Screenshot_20251123_192022.png

ジョイントをFront_Left_Jointとリネーム

Ctrlで親子の順番で選択するのを忘れずに,同じように他のジョイントも作成.名前も車輪に合わせる.回転軸も同じY軸である.
Screenshot_20251123_190737.png

後輪に駆動力を与える

後輪のジョイントを右クリックし,Add > Physics > Angular Driveを選択する.
Screenshot_20251123_190945.png

プロパティの下の方へスクロールし,Driveのなかのamping という項目を10000に設定する.正確な速度制御を実現し,振動を減らし,安定性を確保するために,後輪の減衰値として 10,000 が選択された.

Target Velocityに50**[degrees / second]**を設定する.
Screenshot_20251123_191400.png

もう片方の後輪にも同じように設定する.

Playボタンを押してシミュレーションを動かすと,車輪ロボットとして動かすことができた.
1937.gif

次回

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?