Closed30

Unity + ROS でロボットアームのシミュレーションを動かしてみる

薄田達哉 / tatsuyasusukida薄田達哉 / tatsuyasusukida

このスクラップについて

このスクラップでは Unity + ROS を使ってロボットアームのシミュレーションを実行する手順をまとめていく。

最終的には下記の画像のようなものが表示されれば嬉しい。

参考になりそうなリンクは下記の通り。

https://unity.com/ja/solutions/automotive-transportation-manufacturing/robotics

https://blog.unity.com/ja/technology/robotics-simulation-in-unity-is-as-easy-as-1-2-3

https://github.com/Unity-Technologies/Unity-Robotics-Hub/blob/main/tutorials/

https://zenn.dev/karaage0703/articles/2de654a413049e

薄田達哉 / tatsuyasusukida薄田達哉 / tatsuyasusukida

ROS ワークスペースの作成

Docker を使うかマニュアルかの 2 つの選択肢がある。

簡単なのは Docker だと思うのでまずは Docker で進めていく。

下記のコマンドを実行して Docker イメージをビルドする。

コマンド
cd tutorials/pick_and_place
git submodule update --init --recursive
docker build -t unity-robotics:pick-and-place -f docker/Dockerfile .
薄田達哉 / tatsuyasusukida薄田達哉 / tatsuyasusukida

Unity 2020.3.11f1 (LTS) のインストール

Unity Hub を起動して Installs > Official Releases からダウンロードする。

Unity 2020.3.11f1 (LTS) が見つからない場合は下記でも良い。

  • Unity 2020.3: 2020.3.10f1 or later
  • Unity 2021.1: 2021.1.8f1 or later
  • Unity 2021.2: 2021.2.a16 or later

今回は Unity 2020.3.42f1 LTS をダウンロードする。

Platforms のオプションで WebGL Build Support を追加する。

18 GB もあるのでダウンロードが完了するのにしばらくかかりそう。

ゆっくり待とう。

薄田達哉 / tatsuyasusukida薄田達哉 / tatsuyasusukida

エラーメッセージ

モジュールのインストールが失敗しましたみたいなメッセージが表示されているが何なのだろう。

薄田達哉 / tatsuyasusukida薄田達哉 / tatsuyasusukida

プロジェクトを開く

Unity Hub のプロジェクトタブからプロジェクトを開く。

開くプロジェクトは Unity-Robotics-Hub/tutorials/pick_and_place/PickAndPlaceProject です。

何かメッセージが出たけど無事にプロジェクトを開くことができた。

薄田達哉 / tatsuyasusukida薄田達哉 / tatsuyasusukida

テーブルの追加

Assets > Prefabs から Table を選択して Hierarchy ウィンドウにドラッグ&ドロップする。

Target と TargetPlacement についても同様にドラッグ&ドロップする。

薄田達哉 / tatsuyasusukida薄田達哉 / tatsuyasusukida

Quick Setup

次に URDF-Importer というものを使うらしいがこのプロジェクトには URDF-Importer だが既に入っている。

自分のプロジェクトに追加する場合は Quick Setup を読んで追加してくださいと書いている。

Note: Presumably when you opened this project, the Package Manager automatically checked out and built the URDF-Importer package for you. You can double-check this now by looking for Packages/URDF-Importer in the Project window or by opening the Package Manager window. See the Quick Setup steps for adding this package to your own project.

チュートリアルを始める前に Quick Setup の手順が必要なのかなと心配だったが必要ないみたいだ。

薄田達哉 / tatsuyasusukida薄田達哉 / tatsuyasusukida

Solver Type の確認

Edit > Project Settings > Pyhisics から Solver Type の設定が Temporal Gauss Seidel になっていることを確認する。

Solver Type とは何か気になったので調べたら下記のページを見つけた。

https://docs.unity3d.com/ja/2021.2/Manual/class-PhysicsManager.html

このソルバーは、より良い収束と高質量比のより良い処理を提供し、貫通を修正するときに導入されるエネルギーを最小限に抑え、ジョイントのオーバーストレッチに対する抵抗力を改善します。これは通常、デフォルトのソルバーでシミュレーション中に不安定な動作が発生した場合に役立ちます。

よくわからないけどシミュレーションが安定するようだ。

薄田達哉 / tatsuyasusukida薄田達哉 / tatsuyasusukida

ロボットのインポート

Assets ウィンドウで URDF > niryo_one > niryo_one.urdf をクリックしてからメニュー > Assets > Import Robot from Selected URDF クリックする。

URDF Import Settings ダイアログが表示されたら特に変更せずに Import URDF ボタンを押す。

なんかロボットアームらしきモノが読み込まれた、感動。

薄田達哉 / tatsuyasusukida薄田達哉 / tatsuyasusukida

ロボットアームのパラメータ設定

Hierarchy ウィンドウで niryo_one を選択してから Inspector ウィンドウで Controller のパラメーターを下図のように設定する。

それぞれのパラメーターが何を意味するのかについては下記を読んでくださいとのこと。

https://github.com/Unity-Technologies/Unity-Robotics-Hub/blob/main/tutorials/urdf_importer/urdf_appendix.md#guide-to-write-your-own-controller

薄田達哉 / tatsuyasusukida薄田達哉 / tatsuyasusukida

ベースリンクを不動にする

Hierarchy ウィンドウで niryo_one を展開して world > base_link をクリックしてから Inspector ウィンドウで Immovable にチェックを入れる。

薄田達哉 / tatsuyasusukida薄田達哉 / tatsuyasusukida

これで Play ボタンを押すと動くらしい

動かないと思ったら左右キーで動かす部分を選択してから上下キーで動かせた。

テーブルも貫通したりもしない。

アームがターゲットに当たると転がっていく。

すごい!

薄田達哉 / tatsuyasusukida薄田達哉 / tatsuyasusukida

これが Web で動かせたら面白いが...

File > Build Settings から WebGL に Switch Platform してビルドしようとしたができない。

そもそも Mac 用にビルドするとビルドはできるがアームは表示されない。

道のりは遠そう。

薄田達哉 / tatsuyasusukida薄田達哉 / tatsuyasusukida

このまま続けたいけど

WebGL ビルドができないのであれば目的を果たすのは難しいかも知れない。

一旦クローズして別の方向性を探ってみよう。

このスクラップは2023/03/06にクローズされました