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

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

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

chikuta

May 05, 2021
Tweet

More Decks by chikuta

Other Decks in Technology

Transcript

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

    (OP-AmP) → 団体の活動は現在休止中 • JTC ロボット系研究開発職 • ROS、RTM チョットデキル @chikuta Twitter / github
  2. 実行してみな、飛ぶぞ。 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 しか対応していない
  3. 原因と対策 原因 • 2020年に Unity の Forum でも報告されている問題 ◦ PhysX

    4 は ArticulationBody node tree 数 64 (2^6) が最大数 ◦ Valkyrie は 80 ArticulationBody あるモデル。→ 途中で物理演算がされなくなる。 対策 • Rigidbody を間に挟んで node tree を分割する
  4. node tree 分割 物理演算の特性が変わるので注意が必要(根本的な対応方法は存在しない) ② 別 node 化する link を

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

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

    ROS-TCP-Endpoint)の 破壊的変更が定期的に発生するため、アップデートには注意が必要 • 物理演算に特化するなら Bullet / MuJoCo、ROSとの結合に特化するなら gazebo / Ignition という競合 があるので使いどころが非常に難しい。外界認識センサを使うシミュレーション用途かソフトウェアの結合 試験用途が最適?