Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Unity-ROS連携を使ってみた話

 Unity-ROS連携を使ってみた話

D5e41f085758da619761b10b6c54e6af?s=128

chikuta

May 05, 2021
Tweet

Transcript

  1. Unity - ROS 連携 を試してみた話 2021/05/05 ROS Japan UG #42

    LT大会 @chikuta
  2. Who ? • 経歴 高専ロボコン → ロボカップSSL (KIKS) → ロボカップ社会人チーム

    (OP-AmP) → 団体の活動は現在休止中 • JTC ロボット系研究開発職 • ROS、RTM チョットデキル @chikuta Twitter / github
  3. 2020/11 某日

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

  5. https://unity.com/ja/solutions/automotive-transportation-manufacturing/robotics 🤔 自由度が少ないのでは? 🤔 本当に使えるの? ロボティクス系エンジニアならヒューマノイドで試してみるしかないですよね!

  6. https://gitlab.com/nasa-jsc-robotics/val_description ※ モデルを修正する必要あり。素のままはエラーがでます。 80 link 手軽に使えるヒューマノイドロボットモデルでお馴染みの valkyrie 先生を利用 NASA Valkyrie

  7. Unity にモデルを読み込む チュートリアル通りにやればできる! やっぱりUnityは初心者にも優しい!! 基本はチュートリアルを参考 1. xacro コマンドを使って valkyrie_description の

    統合されたモデルを作成 2. Unity Project の Assets フォルダにコピー 3. Unity URDF Importer で読み込み
  8. って思うじゃないですか?

  9. 実行してみな、飛ぶぞ。 Error Message: The maximum limit of ArticulationBody hierarchy size

    is reached: hierarchy of articulations can't have more than 64 ArticulationBody nodes! 物理演算に使用されている ArticulationBody は64個以下の node tree しか対応していない
  10. 原因と対策 原因 • 2020年に Unity の Forum でも報告されている問題 ◦ PhysX

    4 は ArticulationBody node tree 数 64 (2^6) が最大数 ◦ Valkyrie は 80 ArticulationBody あるモデル。→ 途中で物理演算がされなくなる。 対策 • Rigidbody を間に挟んで node tree を分割する
  11. 修正方針 とにかくLINK数の多い右左のハンドを切り離して別 node tree 化

  12. node tree 分割 物理演算の特性が変わるので注意が必要(根本的な対応方法は存在しない) ② 別 node 化する link を

    root link 外に移動 ③ connector を作成して Rigidbody を追加 このとき、mass は小さめに程度にする ④ FixedJoint を2つ使って移動したリンクを接続 ① 接続するための dummy link を作成 (ここでは、rightWristConector)
  13. 物理演算の高精度化 Edit > Project Settings > Physics • Default Solver

    Iterations 6 → 100 • Default Velocity Solver Iterations 1 → 50
  14. 修正結果

  15. 外部からの制御対応 • それっぽい位置制御用の UnityScriptを作成 • ROS-TCP-Connector と ROS-TCP-Endpoint を用いてROSとUnityを接続

  16. 所感 -ロボット開発でUnityを使う旨味- • 多リンク(64 ArticulationBody以上)のロボットを使用する場合、モデル更新毎に UnityProjectを修正しな いといけないため、メンテナンスコストが非常に高い • ROS-Unity接続を提供するUtility(ROS-TCP-Connector &

    ROS-TCP-Endpoint)の 破壊的変更が定期的に発生するため、アップデートには注意が必要 • 物理演算に特化するなら Bullet / MuJoCo、ROSとの結合に特化するなら gazebo / Ignition という競合 があるので使いどころが非常に難しい。外界認識センサを使うシミュレーション用途かソフトウェアの結合 試験用途が最適?
  17. 発表したサンプル置き場 READMEが整備されていません。整備しますので少々お待ちください。 • Unity Project (valkyrie_unity) ◦ https://github.com/chikuta/valkyrie_unity • ROS-Unity-Connector

    (val_ros_unity_demo) ◦ https://github.com/chikuta/val_ros_unity_demo • unity docker 連携 ◦ https://github.com/chikuta/chikuta-dockerfile ◦