3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

IsaacSimでLIMO(無人走行UGV)をROS2で動かす

Last updated at Posted at 2024-06-09

1. はじめに

今までIsaac Simで色々遊んできましたが[1][2]、使用したロボットモデルはNVIDIA Carterだけでしたので、少し物足りなくなり他のロボットモデルも試したみたいなと最近考えていました。
そこで最近購入検討してましたLIMOというロボットについてIsaac Sim向けのモデルがgituhbで公開されているのを以下のリンクで見つけましたので、Isaac Simに取り込んでまずは遠隔操作してみたのが本記事の内容になります。

👇LIMOについて説明されているサイトのリンク[3]

👇Isaac Sim向けLIMOモデルを公開しているgithubのリポジトリのリンク[4]

なお、上記のIsaac Sim向けLIMOモデルを公開しているgithubのリポジトリではROS1のみの記載となっております。本記事ではそれを参考にROS2に対応させた上で遠隔操作しましたので、その手順も本記事で紹介したいと思います。

注: よくよく調べてみるとIsaac SimのロボットアセットのラインナップにLimoもありましたが(リンク)、この記事で各種設定を勉強することができたので良かったと思います。

2. 実行環境

  • CPU: CORE i7 7th Gen
  • メモリ: 32GB
  • GPU: GeForce RTX 2070
  • OS: Ubuntu22.04(WSL2ではなくPCに直接インストール)
  • ROS2: Humble
  • Nvidia Driver: 535

3. 手順

基本的には[4]で紹介されている内容を追ってきますが、Isaac SimやROS2の起動については、Ubunutu22.04の環境下においてIsaac Sim+ROS2を試そうとしてハマったところで記載してますので、この部分については本記事では飛ばします。

3.1 リポジトリのクローン

[4]ので紹介されているように以下のコマンドで対象のリポジトリをクローンしてきます。

terminal
git clone https://github.com/agilexrobotics/Limo-Isaac-Sim.git

そして以下のコマンドでクローンしてきたLIMOのモデルを解凍します。

terminal
cd Limo-Isaac-Sim/limo_description
unzip meshes.zip && unzip urdf.zip

3.2 Isaac SimへのURDFのインポート

[4]の3.2節から3.3節で紹介されている方法をそのまま実行しまして、特にハマったところはありませんでした。
ただ、3.3節で記載されていた「Set the Joint Drive Strength to the desired level. Note that this will be imported as the joint’s damping parameter. Joint stiffness are always set to 0 in velocity drive mode.」という部分は、私の勉強不足のためよくわかりせんでしたので、ここはデフォルトの数値のままにしました。

そして私の環境で読み込んだLIMOの様子が以下になります。
Screenshot from 2024-06-02 20-26-30.png

ちなみにデフォルトで用意されている環境のcarter_warehouse_apriltags_worker.usdの中にLIMOを読み込んでみた様子は以下です。フォークリフトとNVIDIA CarterとLIMOの大きさの違いがよく分かります。

warehouse_import.png

3.3 LIMOモデルの保存

独立した節として書くほどではないのですが、LIMOモデルの保存については[4]の4章で紹介されている方法そのままで保存できます。

3.4 Ground Planeの追加

Ground Planeを追加しないとIsaac Simの▶(Playボタン)を押した瞬間にLIMOが自由落下してきます。3.3節で保存したLIMOを読み込んだのちにEnvironment Setup[5]のAdding a Ground Planeを参考にメニューバーのCreate > Physics > Ground Plane からGround Planeを追加しました。追加した後の様子が以下です。追加したGround Planeを赤枠で示しています。
grand plane.png

3.5 Action Graphの構築 (ROS2でメッセージを受け取れるようになるための準備)

[4]ではROS1に対応させていますが、本記事ではROS2で動かせるように以下のように Action Graphを設定しました。
action_graph.png

[4]との違いはROS1 Subscribe TwistをROS2 Subscribe Twistにしたぐらいですが、以下で設定手順や詳細設定を記載してきます。

3.5.1 Action Graphの編集画面の起動

メニューバーからWindow > Visual Scripting > Action Graph を選択します。
actiongraph選択.png

次に以下の図で赤枠で囲んだ"New Action Graph"を選択すると、Action Graphの編集画面が開きますので、👆で示したAction Graphを作成してきます。
actiongraph_new選択.png

3.5.2 Topicの設定

ROS2 Subscribe TwistのTopic名を/cmd_velを設定する必要がありますが、デフォルトで以下の図の赤枠で示したところのように/cmd_velと設定されていましたので、追加設定の必要はありませんでした。
ros2topic.png

3.5.3 Differential Controllerの設定

作成したAction Graphの"Differential Controller"の項目での設定は[4]の6.1節に記載の内容を踏襲し以下の設定を反映しました。

  • Max Linear Speed: 0.22
  • Wheel Distance: 0.16
  • Wheel Radius: 0.025

以下の図の赤枠のところに👆の数値を反映。
Differential Controller.png

3.5.4 Articulation Controllerの設定

作成したAction Graphの"Articulation Controller"の項目での設定は[4]の6.1節に記載の内容を参考に、以下の図で赤枠で囲んだ"targetPrim"のところにLIMOのモデルの"base_footprint"を読み込みました。また"Use Path"のチェックを外すところも忘れがちなのでここも注意が必要です。

Articulation Controller1.png
Articulation Controller2.png

3.5.5 Constant Tokenの設定

作成したAction Graphの"Constant Token"のそれぞれの項目の設定は[4]の6.1節に記載の内容を参考に、以下の図のように設定しました(赤枠で示したところ)。

Constant Token_1.png

Constant Token_2.png

Constant Token_3.png

Constant Token_4.png

3.6 ROS2 topicよりメッセージを投げてLIMOを動かす

Isaac Simの"Play"ボタン▶を押します。
そしてターミナルを新たに開き以下のコマンドを打ちます。

terminal
source /opt/ros/humble/setup.bash
ros2 topic pub /cmd_vel geometry_msgs/Twist '{linear:  {x: 0.2, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0,z: 0.0}}'

そしてこのコマンドを打った時のLIMOの様子がこちらです。

ちなみに以下のコマンドを打たないとLIMOは止まりません。

terminal
ros2 topic pub /cmd_vel geometry_msgs/Twist '{linear:  {x: 0.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0,z: 0.0}}'

おまけ

以下のコマンドを打って回転させようとしたときの動画は以下です。私の設定がうまくいっていないようで、LIMOは頑張っているのですが、回転がうまくできません。

terminal
source /opt/ros/humble/setup.bash
ros2 topic pub /cmd_vel geometry_msgs/Twist '{linear:  {x: 0.0, y: 0.0, z: 0.0}, angular: {x: 0.0 ,y: 0.0, z: 1.0}}'

4. まとめ

[4]の記事の手順を参考に、私の環境でもLIMOのロボットモデルを読み込みros2 topicを投げて動かすことができました。今後はIsaac Sim上でLIMOをROS2により自律走行させることができるのかや、四足歩行ロボットなどの他のロボットモデルを読み込んで動かすことについて取り組んでいきたいと考えています。

参考記事やサイト

[1]IsaacSimのROS2 Navigationを試してみる
[2]IsaacSimでロボット走行用の2D地図を作ってみる
[3]AgileX Robotics LIMO
[4]agilexrobotics/Limo-Isaac-Sim
[5]Environment Setup

3
1
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
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?