MoveItチュートリアル[16]:URDF and SRDF
3530 ワード
一.URDF MoveItは、まず、ROSでロボットを記述するネイティブ形式であるURDF[汎用ロボット記述形式]について説明する.このチュートリアルでは、URDFのリファレンス、重要なテクニック、MoveItリストの特定のニーズについて説明します.1.URDF Resources URDF ROS Wiki Page:URDF ROS Wikiページは、URDFに関する情報の大部分のソースである. URDF Tutorials:URDFを使用するチュートリアル. SOLIDWORKS URDF Plugin:SOLIDWORKSモデルから直接URDFを生成できるプラグイン.
2.Important Tipsこのセクションには、生成されたURDFがMoveItとともに使用できるようにするためのテクニックのセットが含まれています.MoveItの使用を開始する前に、これらのテクニックがすべて完了していることを確認します.[1]Special Characters in Joint Name joint名には、次の特殊文字は含まれません.-,[,],(,).できるだけ早くjointの制限を取り消してほしい.[2]Safety Limitsは、robotの関節制限に加えて、いくつかのURDFSに安全制限を設けている.これはPandaヘッドディスク関節に指定された安全コントローラの例です.
soft_lower_limitフィールドとsoft_upper_limitフィールドはjointの位置制限を指定します.MoveItは、これらの制限をURDFで指定したjointのハード制限と比較し、より保守的な制限を選択します.説明:safety_コントローラのソフト_lower_limitとsoft_upper_limitを0.0に設定すると、ジョイントは移動できません.MoveItは、正しいrobotモデルを指定することによって異なります.[3]Collision Checking MoveItは、URDFで指定したメッシュを使用して競合チェックを行います.URDFでは、可視化チェックと競合チェックの両方に対して、それぞれ2つのグリッドのセットを指定できます.一般的に、可視化メッシュは詳細できれいですが、衝突メッシュはそれほど詳細ではありません.メッシュ内の三角形の数は、robotリンク衝突チェックに要する時間に影響します.robot全体の三角形の数は数千個ぐらいあるはずです.[4]Test your URDFはURDFをテストし、すべてが正常であることを確保することが重要である.ROS URDFパッケージにはcheck_が用意されていますurdfツール.check_を使用するにはurdfツールはURDFを検証します.ここの説明に従ってください.3.URDF Examples ROSのrobotを使用できるURDFSはたくさんあります.URDF Examples:ROSコミュニティのURDFSリスト.
二.SRDF SRDFまたはセマンティックロボット記述フォーマットはURDFを補完し、結合グループ、デフォルトのロボット構成、追加の衝突チェック情報、および追加の変換を指定します.これらはrobotの姿勢を完全に指定する必要がある場合があります.SRDFを生成するための推奨方法は、MoveItを使用してアシスタントを設定することです.1.Virtual Joints URDFはrobot物理関節に関する情報のみを含む.通常、rootリンクのrobot上の世界座標システムに対する姿勢を指定するために、追加のジョイントを定義する必要があります.この場合、仮想接続を使用して接続を指定します.例えば、PR 2のように平面内を移動する移動robotは、robotの座標系に世界座標系を付加する平面仮想関節を用いて指定される.固定されたrobot[工業ロボットのように]は固定された関節でこの世界に接続しなければならない.2.Passive Joints passive jointは、robot上の非駆動関節、例えば、差動駆動robot上の受動キャスターである.これらはSRDFで個別に指定され、jointが直接制御できないことをモーションプランニングまたは制御パイプの異なるコンポーネントが知っていることを確認します.robotに未起動のホイールがある場合は、パッシブホイールとして指定する必要があります.3.Group Group[連合グループまたは計画グループとも呼ばれることもある]はMoveItの核心概念である.MoveItは常に特定の集団に作用する.MoveItは、移動する関節グループのみを考慮します.これは計画されています.他の関節は静止しています.[すべての関節を含むグループを作成することで、robot内のすべての関節の移動計画を実現できます].グループはjointとlinkの集合にすぎません.各グループは、[1]Collection of Jointsが関節のセットとしてグループを指定できる方法の1つとして指定できます.各ジョイントのすべてのサブリンクが自動的にグループに含まれます.[2]Collection of Linksグループは、リンクの集合として指定することもできる.リンクされたすべての親ノードもこのグループに含まれます.[3]Serial Chainは、ベースチェーンと先端チェーンを使用してシリアルチェーンを指定します.チェーンの先端チェーンリングはチェーン上の最後の関節のサブチェーンリングである.チェーン内のベースチェーンは、チェーン内の最初の関節の親チェーンです.[4]Collection of Sub-Groupグループは、グループの集合であってもよい.たとえばleft_armとright_armは2つのグループとして定義され、both_という名前で定義されます.armsの新しいグループで、この2つのグループが含まれています.4.End-Effectors robotの一部のグループはエンドエフェクタとして指定できます.エンドエフェクタは通常、固定された関節を介して別のグループ(腕など)に接続されます.エンドエフェクタグループを指定する場合は、エンドエフェクタと接続されている親エフェクタグループとの間に共通のリンクがないことを確認してください.5.Self-CollitionsのデフォルトのSelf-Collision Matrix Generator[セットアップアシスタントの一部]ロボット上のリンクペアを検索します.これらのリンクは、衝突チェックによって安全に無効になり、モーションプランニング処理時間を短縮できます.これらのリンクが常に衝突している場合、衝突していない場合、ロボットのデフォルトの位置での衝突、またはリンクが運動チェーン上で互いに隣接している場合、これらのリンクは無効になります.サンプリング密度は、自己衝突をチェックするためにランダムなロボットの位置を指定します.より高い密度はより多くの計算時間を必要とし、より低い密度は、無効にすべきでないペアを無効にする可能性が高い.デフォルトは10000個の競合チェックです.競合チェックは、処理時間を短縮するために並列に行われます.6.Robot Poses SRDFはロボットの固定配置も記憶できます.この例では、SRDFの典型的な例は、ハンドのHOME位置を定義することである.構成は、後で構成を復元するために使用できる文字列idに格納されます.7.SRDF Documentation SRDF構文の詳細は、ROS SRDF Wikiページを参照してください.
参考文献:[1]URDF and SRDF:http://docs.ros.org/kinetic/api/moveit_tutorials/html/doc/urdf_srdf/urdf_srdf_tutorial.html
2.Important Tipsこのセクションには、生成されたURDFがMoveItとともに使用できるようにするためのテクニックのセットが含まれています.MoveItの使用を開始する前に、これらのテクニックがすべて完了していることを確認します.[1]Special Characters in Joint Name joint名には、次の特殊文字は含まれません.-,[,],(,).できるだけ早くjointの制限を取り消してほしい.[2]Safety Limitsは、robotの関節制限に加えて、いくつかのURDFSに安全制限を設けている.これはPandaヘッドディスク関節に指定された安全コントローラの例です.
soft_lower_limitフィールドとsoft_upper_limitフィールドはjointの位置制限を指定します.MoveItは、これらの制限をURDFで指定したjointのハード制限と比較し、より保守的な制限を選択します.説明:safety_コントローラのソフト_lower_limitとsoft_upper_limitを0.0に設定すると、ジョイントは移動できません.MoveItは、正しいrobotモデルを指定することによって異なります.[3]Collision Checking MoveItは、URDFで指定したメッシュを使用して競合チェックを行います.URDFでは、可視化チェックと競合チェックの両方に対して、それぞれ2つのグリッドのセットを指定できます.一般的に、可視化メッシュは詳細できれいですが、衝突メッシュはそれほど詳細ではありません.メッシュ内の三角形の数は、robotリンク衝突チェックに要する時間に影響します.robot全体の三角形の数は数千個ぐらいあるはずです.[4]Test your URDFはURDFをテストし、すべてが正常であることを確保することが重要である.ROS URDFパッケージにはcheck_が用意されていますurdfツール.check_を使用するにはurdfツールはURDFを検証します.ここの説明に従ってください.3.URDF Examples ROSのrobotを使用できるURDFSはたくさんあります.URDF Examples:ROSコミュニティのURDFSリスト.
二.SRDF SRDFまたはセマンティックロボット記述フォーマットはURDFを補完し、結合グループ、デフォルトのロボット構成、追加の衝突チェック情報、および追加の変換を指定します.これらはrobotの姿勢を完全に指定する必要がある場合があります.SRDFを生成するための推奨方法は、MoveItを使用してアシスタントを設定することです.1.Virtual Joints URDFはrobot物理関節に関する情報のみを含む.通常、rootリンクのrobot上の世界座標システムに対する姿勢を指定するために、追加のジョイントを定義する必要があります.この場合、仮想接続を使用して接続を指定します.例えば、PR 2のように平面内を移動する移動robotは、robotの座標系に世界座標系を付加する平面仮想関節を用いて指定される.固定されたrobot[工業ロボットのように]は固定された関節でこの世界に接続しなければならない.2.Passive Joints passive jointは、robot上の非駆動関節、例えば、差動駆動robot上の受動キャスターである.これらはSRDFで個別に指定され、jointが直接制御できないことをモーションプランニングまたは制御パイプの異なるコンポーネントが知っていることを確認します.robotに未起動のホイールがある場合は、パッシブホイールとして指定する必要があります.3.Group Group[連合グループまたは計画グループとも呼ばれることもある]はMoveItの核心概念である.MoveItは常に特定の集団に作用する.MoveItは、移動する関節グループのみを考慮します.これは計画されています.他の関節は静止しています.[すべての関節を含むグループを作成することで、robot内のすべての関節の移動計画を実現できます].グループはjointとlinkの集合にすぎません.各グループは、[1]Collection of Jointsが関節のセットとしてグループを指定できる方法の1つとして指定できます.各ジョイントのすべてのサブリンクが自動的にグループに含まれます.[2]Collection of Linksグループは、リンクの集合として指定することもできる.リンクされたすべての親ノードもこのグループに含まれます.[3]Serial Chainは、ベースチェーンと先端チェーンを使用してシリアルチェーンを指定します.チェーンの先端チェーンリングはチェーン上の最後の関節のサブチェーンリングである.チェーン内のベースチェーンは、チェーン内の最初の関節の親チェーンです.[4]Collection of Sub-Groupグループは、グループの集合であってもよい.たとえばleft_armとright_armは2つのグループとして定義され、both_という名前で定義されます.armsの新しいグループで、この2つのグループが含まれています.4.End-Effectors robotの一部のグループはエンドエフェクタとして指定できます.エンドエフェクタは通常、固定された関節を介して別のグループ(腕など)に接続されます.エンドエフェクタグループを指定する場合は、エンドエフェクタと接続されている親エフェクタグループとの間に共通のリンクがないことを確認してください.5.Self-CollitionsのデフォルトのSelf-Collision Matrix Generator[セットアップアシスタントの一部]ロボット上のリンクペアを検索します.これらのリンクは、衝突チェックによって安全に無効になり、モーションプランニング処理時間を短縮できます.これらのリンクが常に衝突している場合、衝突していない場合、ロボットのデフォルトの位置での衝突、またはリンクが運動チェーン上で互いに隣接している場合、これらのリンクは無効になります.サンプリング密度は、自己衝突をチェックするためにランダムなロボットの位置を指定します.より高い密度はより多くの計算時間を必要とし、より低い密度は、無効にすべきでないペアを無効にする可能性が高い.デフォルトは10000個の競合チェックです.競合チェックは、処理時間を短縮するために並列に行われます.6.Robot Poses SRDFはロボットの固定配置も記憶できます.この例では、SRDFの典型的な例は、ハンドのHOME位置を定義することである.構成は、後で構成を復元するために使用できる文字列idに格納されます.7.SRDF Documentation SRDF構文の詳細は、ROS SRDF Wikiページを参照してください.
参考文献:[1]URDF and SRDF:http://docs.ros.org/kinetic/api/moveit_tutorials/html/doc/urdf_srdf/urdf_srdf_tutorial.html