Isaac SIMで走るRasPiMouse [2] – ロボットを配置して走らせる

こんにちは。バイトの鍬形です。
前回に引き続き、Isaac Simというロボットシミュレータ上で、Raspberry Pi Mouseを走らせるまでの手順をご紹介します。

前回はIsaac Simの概要とセットアップ手順、サンプルプロジェクトの動作確認まで行いました。今回はRaspberry Pi Mouseをシミュレータ上で走らせます。

Isaac SDK 2019.3について

Isaac SDK 2019.3ではIsaac SimのベースがUnreal EngineからUnityに変更されました。本記事はIsaac SDK 2019.2を使用しているため、ご紹介する手順はIsaac SDK 2019.3以降に対応しておりません。ご了承ください。

使用環境

今回は下記環境を使用しました

  • CPU: Intel i7-7700HQ
  • GPU: Nvidia GeForce GTX 1080
  • Memory: 32GB
  • OS: Ubuntu 18.04.2 LTS
  • Isaac SDK: 2019.2

パッケージのダウンロード

今回使用するパッケージをGitHubに公開しました。内容は主にRaspberry Pi MouseのURDFモデルと、シミュレータ上でRaspberry Pi Mouseを走らせるための各種設定ファイルになっています。下記コマンドでappsディレクトリにリポジトリをクローンしてください。

$ cd ~/isaac/apps
$ git clone https://github.com/rt-net/RaspberryPiMouse_IsaacSIM.git
$ cd RaspberryPiMouse_IsaacSIM

JSONの書き方

Isaac SDKではJSONによってアプリケーションの設定をします。詳細は省きますがここで簡単にご紹介します。

Isaac SDKのJSONは主にgraphとconfigによって構成されています。graphには起動するnodeとnode同士の接続を設定するedgeを記述します。configにはそれぞれのnodeに関する設定を記述します。

例えば今回作成したパッケージではRaspberry Pi Mouseの速度制御を行うnodeと、ジョイスティックで目標速度を指定するnodeがあり、それぞれedgeで接続しています。configには速度制御に必要なRaspberry Pi Mouseのトレッドやタイヤ半径を記述しておくといった具合です。

実際のフォーマット等は公式ドキュメントをご覧ください。

https://docs.nvidia.com/isaac/archive/2019.2/doc/engine/components.html#application-jsons

ロボットの配置

Isaac SIMはROSでお馴染みのURDFを読み込むことができます。読み込みに関する設定方法として、Blueprintと呼ばれるノードベースのインターフェースを使用する方法と、JSONファイルに記述する方法があります。Blueprintの方が操作が直感的かもしれませんが、説明や共有のしやすさから今回はJSONファイルを使用しています。

公式ドキュメントのこちらの手順に沿ってURDFを読み込みます。

https://docs.nvidia.com/isaac/isaac_sim/plugins/robot_builder/urdf.html#configuring-robots-using-json

URDFの準備

マテリアルやアクチュエータの設定は別のファイルに記述するため、LinkとJointだけのシンプルなURDFが必要です。GAZEBO等の要素が入っているとエラーになってしまうためご注意ください。今回はセンサの例としてカメラ映像を取得したいので、RealSenseD435iを搭載したモデルを作成しました。

Isaac Sim用のURDFの置き場所は決まっています。下記コマンドでダウンロードしたパッケージ内にあるURDFをコピーします。

$ cp -r raspimouse_description ~/UnrealEngine/IsaacSimProject/Content/URDF

bridge_configの準備

パッケージ内にbridge_configというディレクトリがあります。その名の通りシミュレータとアプリケーションをつなぐ設定ファイルが置いてあります。前回のサンプルプロジェクト同様、raspimouse_full.jsonにraspimouse_full_graph.jsonとraspimouse_full_config.jsonのパスを記述します。[username]を使用しているユーザー名に書き換えてください。

$ vim bridge_config/raspimouse_full.json
{
  "graphs": ["/home/[username]/isaac/apps/RaspberryPiMouse_IsaacSIM/bridge_config/raspimouse_full_graph.json"],
  "configs": ["/home/[username]/isaac/apps/RaspberryPiMouse_IsaacSIM/bridge_config/raspimouse_full_config.json"]
}

raspimouse_full_config.jsonにはURDFの読み込みと搭載するカメラに関する設定が書かれています。例えばreferenseはURDFのパス、poseはロボットの初期位置です。spawn_configにはどのLinkとJointがホイールに関するものなのか記述しています。その他にも様々な設定項目があるので詳しくは公式ドキュメントをご覧ください。

https://docs.nvidia.com/isaac/isaac_sim/plugins/robot_builder/urdf.html#configuring-robots-using-json

フィールドの作成

Raspberry Pi Mouseが走り回るためのフィールドを作成します。まずはUnreal Engineのエディタを起動します。

$ cd ~/UnrealEngine
$ ./Engine/Binaries/Linux/UE4Editor IsaacSimProject -vulkan

チェッカーボードのようなものが配置されただけのフィールドが表示されたと思います。Unreal Engineではこうしたフィールドのことをレベルとよびます。

レベルの編集はIsaac Simと関係なく通常のUnreal Engineと変わりません。建物や家具の3Dオブジェクトなどを自由に配置することができます。レベル上に配置されたオブジェクトのことをUnreal Engineではアクタとよびます。今回はとりあえず走り回ることができればいいので、このシンプルなチェッカーボードのまま使用したいと思います。アクタに興味がある場合はUnreal Engineの公式ドキュメントをご覧ください。

https://docs.unrealengine.com/ja/Engine/Actors/index.html

Game Modeの設定

新規作成したレベルは最初に少しだけ設定が必要になります。
公式ドキュメントだとこちらのページです。

https://docs.nvidia.com/isaac/isaac_sim/content/maps/index.html#adding-new-environments

画面左上のウィンドウをクリックし、ワールドセッティングを開きます。

すると右側にワールドセッティングタブが表示されるので、Game Mode欄のGameMode OverrideからIsaacSimGameModeBaseを選択します。

これでIsaac Sim起動時にJSONファイルが読み込めるようになります。

レベルの保存

Ctrl+sを入力してレベルを保存します。レベルはMapsフォルダ内に保存します。今回はFlatMapというフォルダを作成し、その中にFlatMapという名前でレベルを保存しました。保存ができたら一旦Unreal Engineを終了してください。


シミュレータの起動

下記コマンドでレベルとロボットを指定してUnreal Engineを起動できます。

$ ~/UnrealEngine/Engine/Binaries/Linux/UE4Editor IsaacSimProject FlatMap -vulkan -isaac_sim_config_json="$HOME/isaac/apps/RaspberryPiMouse_IsaacSIM/bridge_config/raspimouse_full.json"

画面上部にある再生ボタンを押すとフィールド上にRaspberry Pi Mouseが配置されます。中央のシミュレータ画面(ビューポートと呼びます)はクリックしながらドラッグすることで視点を回転、W, A, S, Dキーで前後左右移動、Q, Eキーで上下移動ができます。ちょうど初期視点の真下にRaspberry Pi Mouseがあるはずです。

ビューポートからマウスカーソルを外したい場合はShift+F1を入力してください。

ロボットを操作する

それではロボットをブラウザ上のゲームパッドで操作したいと思います。まずは下記コマンドでアプリケーションを実行しましょう。

$ cd ~/isaac
$ bazel run apps/RaspberryPiMouse_IsaacSIM:joystick

次にブラウザからhttp://localhost:3000 にアクセスするとIsaac Sightが起動します。左のChannnelsタブのraspimouseにチェックを入れると搭載されたRealsenseD435iの画像と深度画像を見ることができると思います。

また、WindowsタブのVirtual Gamepadにチェックを入れることでVirtual Gamepadウィンドウが開きます。ウィンドウ内のCONNECT TO BACKENDをクリックし、ウィンドウ下のMousepadを選択します。ウィンド上部に表示される緑の丸をマウスでドラッグすることで、前後移動と左右旋回ができます。

さいごに

2回に渡ってIsaac Simのインストールと、Raspberry Pi Mouseのシミュレーションについてご紹介しました。JSONでセンサや操作インターフェースを簡単に設定でき、Unreal Engineによる綺麗なグラフィックを手軽に得られる…はずだったのですが2019.2を最後にUnreal Engine版の廃止という驚きの結末を迎えることとなりました。

Isaac Simはバージョン2019.3からIsaac Sim for Navigationとしてナビゲーションに特化することとなり、シミュレータはUnityベースになったようです。加えてマニピュレーションに特化したIsaac Sim for Manipulationも開発中とのことで楽しみな要素が盛りだくさんとなっています。詳細は公式ホームページをご覧ください。

https://developer.nvidia.com/isaac-sdk

新しいIsaac Simについて記事を書くか未定ですが、今後も注目していきたいです。

謹賀新年2020

新年明けましておめでとうございます。

旧年中は格別のご厚情を賜り、誠にありがとうございました。

たくさんのお客様と出逢い、支えられ、心より感謝申しあげます。

年明けは、2020年1月6日より業務を開始いたします。
ご不便をおかけいたしますが、どうぞよろしくお願いいたします。

本年も変わらぬお引き立て、一層のご愛顧のほどよろしくお願い申し上げます。

株式会社アールティ ロボットショップ担当一同

年末年始のお知らせ

RT Corp. Logo

年末年始営業のお知らせ

いつも弊店をご利用いただきありがとうございます。
2019年も残すところあと僅かになりました。
今年も多くのお客様にご来店いただけたことに感謝しております。
さて、年末年始の休業日と営業時間のお知らせをさせていただきます。

【休業】
2019年12月28日(土)~2020年1月5日(日)
※出荷は27日15時をもって締め切ります。予めご了承ください。

【年始の始業日のお知らせ】
2020年1月6日(月)10:00~

来年も皆様が素敵なロボットライフが送れるよう、スタッフ一同頑張りますのでご愛顧いただけますようお願い申し上げます。

よい新年をお過ごし下さい。

株式会社アールティ ロボットショップ担当一同

Raspberry Pi Mouse + ROS2でのナビゲーションの紹介

こんにちは、sato改めd-satoです。この記事はROS 2 Advent Calendar 2019の19日目の記事です。この記事ではRaspberry Pi Mouse + ROS2でのナビゲーションについて紹介します。

ROS2やRaspberry Pi Mouseのセットアップに必要な情報と、Raspberry Pi Mouse + ROS2で実際にナビゲーションパッケージを使用してみた例を紹介します。

“Raspberry Pi Mouse + ROS2でのナビゲーションの紹介” の続きを読む

MoveIt WorkShop 2019に参加しました。

こんにちはShotaです。この記事はROS 2 Advent Calendar 2019の16日目の記事です。

ROS2 Advent Calendar 2019

お仕事でROSCon2019に参加し、続けてMoveIt Workshopにも参加しました。そこで得た情報を少しでも共有できればいいなと思います。

MoveIt2の話が(チョット)入ってるのでROS2 Advent Calendarに投稿してます。

“MoveIt WorkShop 2019に参加しました。” の続きを読む

Isaac SIMで走るRasPiMouse [1] – セットアップ編

こんにちは。バイトの鍬形です。
Isaac SIMというロボットシミュレータでRaspberry Pi Mouseのモデルを走らせることができたので、その記録をブログに書いていきます。今回はSDKのインストールと、シミュレータのサンプルプロジェクトを動作させるところまでご紹介します。

Isaac SIMについて

Isaac SIMはNVIDIAが提供しているロボットシミュレータです。Isaac SDKというロボット向けプラットフォームの一部で、他にはIsaac Robot EngineとGemsがあります。Isaac Robot EngineはROSのようなフレームワークで、ロボットの動作に必要な様々なプロセスがモジュール形式で管理できます。Gemsはナビゲーションや物体認識など、NVIDIAが提供するパッケージ群の名称です。

今回注目するIsaac SIMはこれらの機能をシミュレーションできるので、ロボットの動作確認や機械学習用のデータセットを作成する際に強力に効果を発揮できそうです。

https://developer.nvidia.com/isaac-sdk

“Isaac SIMで走るRasPiMouse [1] – セットアップ編” の続きを読む

Humanoid Autonomous Challenge

自律2足移動ロボットの競技会のHACですが、参加者不在のため延期します。

Humanoid Autonomous Challenge

2020年3月28(土) プレ大会

次回の予定は、未定です。

フィールドに置いてある複数のオレンジボールを触ってスタートエリアに戻ってくる時間を競います。

競技のルールは以下を参照して下さい。

Humanoid Autonomous Challenge 詳細

CRANE-X7をwebブラウザで動作可能なサンプルプログラムを公開しました

こんにちは、アルバイトの林です。
今回は、CRANE-X7をwebブラウザで動作可能なサンプルプログラムを公開しました。GitHubにて公開しています。crane_x7_js

CRANE-X7はRTで販売している7軸アームロボットです。
現在、c++でのサンプルプログラムとROSパッケージが公開されています。

今回新たに公開したサンプルプログラムは、CRANE-X7をjavascriptとwebブラウザを用いて動作させるものです。
実機がない場合でも、簡易的にCRANE-X7の動作確認をすることも可能です。

“CRANE-X7をwebブラウザで動作可能なサンプルプログラムを公開しました” の続きを読む

Raspberry Pi 4 Model Bが発表されました!

こんにちは、satoです。日本時間の2019年6月24日のお昼過ぎにRaspberry Pi 4 Model Bが発表されましたね!

弊社でもRaspberry Piを組み込んだロボットを発売していますので、新しいRaspberry Piとなれば気になる話題です。今回は

  • Raspberry Pi 4の新機能
  • Raspberry Pi 4 Model BとRaspberry Pi 3 Model B+とスペック上の違い
  • ラズベリーパイ財団のサイトに載っていたFAQの日本語版

の3つについてまとめてみます。
正確な情報については公式サイトをご確認ください 。

以下がラズベリーパイ財団のブログの該当エントリです。

https://www.raspberrypi.org/blog/raspberry-pi-4-on-sale-now-from-35/

“Raspberry Pi 4 Model Bが発表されました!” の続きを読む