URDF/SRDFとロボットモデルの仕様¶
SRDF¶
MoveIt!がURDFに加えて利用するロボットモデルの記述形式です。 グループ、キネマティックチェーン、エンドエフェクタ名、干渉ペアの指定を行います。
詳しい仕様は、以下の外部ドキュメントを参照してください。
SRDFファイルは、MoveIt Setup Assistantを使って生成できます。詳しくは以下の外部ドキュメントを参照してください。
モデルローダー¶
URDFとSRDFファイルをロードするユーティリティクラスです。運動学プラグインのロードにも使われます。
-
class
robot_model_loader::RobotModelLoader¶ パブリック関数
-
const robot_model::RobotModelPtr &
getModel() const¶ planning_models::RobotModelを取得します。
-
const std::string &
getRobotDescription() const¶ ロボットモデルのパラメーター名を取得します。
-
const urdf::ModelInterfaceSharedPtr &
getURDF() const¶ パース済みのURDFモデルを取得します。
-
const srdf::ModelSharedPtr &
getSRDF() const¶ パース済みSRDFモデルを取得します。
-
const rdf_loader::RDFLoaderPtr &
getRDFLoader() const¶ モデルの読み込みに使用されたrdf_loader::RDFLoaderのインスタンスを取得します。
-
const kinematics_plugin_loader::KinematicsPluginLoaderPtr &
getKinematicsPluginLoader() const¶ 運動学ソルバーのプラグインローダーを取得します。
- 注意
このプラグインローダーは変数スコープ内に維持する必要があります。そうしないと、運動学ソルバーがアンロードされる可能性があります。
-
void
loadKinematicsSolvers(const kinematics_plugin_loader::KinematicsPluginLoaderPtr &kloader = kinematics_plugin_loader::KinematicsPluginLoaderPtr())¶ 運動学ソルバーを運動学モデルにロードします。これは、コンストラクターに渡されるオプションによって明示的に無効にされない限り、デフォルトで行われます。
-
struct
Options¶ RobotModelLoaderコンストラクターに渡されるオプション。
公開メンバー
-
std::string
robot_description_¶ URDFがロードされるROSパラメーターに対応する文字列名。パラメータ名に「_planning」サフィックスを使用して、追加の構成を指定できます(追加のジョイント制限など)。パラメータサーバからのロードは、文字列からのロードが失敗した場合にのみ試行されます。
-
std::string
urdf_string_¶ URDFおよびSRDFドキュメントの文字列コンテンツ。文字列からのロードは、XMLからのロードが失敗した場合にのみ試行されます。
-
bool
load_kinematics_solvers_¶ 指定されたROSパラメーターを使用して、キネマティクスソルバーもロードする必要があるかどうかを示すフラグ。
-
std::string
-
const robot_model::RobotModelPtr &
ロボットモデル¶
-
class
moveit::core::RobotModel¶ ロボット運動学モデルの定義。このクラスはスレッドセーフではありませんが、複数のインスタンスを作成できます。
関節モデルへのアクセス
-
const JointModel *
getRootJoint() const¶ ルート関節を取得します。モデルが空でない限り、1つのルート関節が存在します。これはSRDFから抽出されるか、タイプ指定されていない場合は固定関節が想定されます。
-
const std::string &
getRootJointName() const¶ ルート関節の名前を返します。ルート関節がない場合、例外をスローします。
-
bool
hasJointModel(const std::string &name) const¶ 関節が存在するかどうかを確認します。存在する場合はtrueを返します。
-
const JointModel *
getJointModel(const std::string &joint) const¶ 名前を指定して関節を取得します。関節が存在しない場合は、エラーが出力され、NULLが返されます。
-
const JointModel *
getJointModel(int index) const¶ インデックス指定で関節を取得します。関節が存在しない場合は、エラーが出力され、NULLが返されます。
-
JointModel *
getJointModel(const std::string &joint)¶ 名前を指定して関節を取得します。関節が存在しない場合は、エラーが出力され、NULLが返されます。
-
const std::vector<const JointModel *> &
getJointModels() const¶ RobotStateに格納されている順序で、関節のリストを取得します。
-
const std::vector<JointModel *> &
getJointModels()¶ RobotStateに格納されている順序で、関節のリストを取得します。JointModelGroup::getJointModels()とは対照的に、すべてのタイプの関節(mimicおよび固定を含む)が含まれます。
-
const std::vector<std::string> &
getJointModelNames() const¶ RobotStateに格納されている順序で、関節名のリストを取得します。
-
const std::vector<const JointModel *> &
getActiveJointModels() const¶ このモデルのアクティブな(固定やmimicではない)関節のリストを取得します。
-
const std::vector<JointModel *> &
getActiveJointModels()¶ このモデルのアクティブな(固定やmimicではない)関節のリストを取得します。
-
const std::vector<const JointModel *> &
getSingleDOFJointModels() const¶ すべての単一自由度関節(mimic関節を含む)のリストを取得します
-
const std::vector<const JointModel *> &
getMultiDOFJointModels() const¶ すべてのmulti-dof関節のリストを取得します。
-
const std::vector<const JointModel *> &
getContinuousJointModels() const¶ 無限回転する関節のリストを、RobotStateに格納されている順序で取得します。
-
const std::vector<const JointModel *> &
getMimicJointModels() const¶ mimic関節のリストを、RobotStateに格納されている順序で取得します。
リンクモデルへのアクセス
-
const LinkModel *
getRootLink() const¶ ロボットの物理的なルートリンクを取得します。
-
const std::string &
getRootLinkName() const¶ ロボットのルートリンクの名前を取得します。
-
bool
hasLinkModel(const std::string &name) const¶ リンクが存在するかどうかを確認します。存在する場合はtrueを返します。
-
const LinkModel *
getLinkModel(const std::string &link) const¶ 名前指定でリンクを取得します。リンクが見つからない場合は、エラーが出力され、NULLを返します。
-
const LinkModel *
getLinkModel(int index) const¶ インデックス指定でリンクを取得します。リンクが見つからない場合は、エラーが出力され、NULLを返します。
-
LinkModel *
getLinkModel(const std::string &link)¶ 名前指定でリンクを取得します。リンクが見つからない場合は、エラーが出力され、NULLを返します。
-
const std::vector<const LinkModel *> &
getLinkModels() const¶ リンクの配列を取得します。
-
const std::vector<LinkModel *> &
getLinkModels()¶ リンクの配列を取得します。
-
const std::vector<std::string> &
getLinkModelNames() const¶ (すべてのリンクの)リンク名を取得する
-
const std::vector<const LinkModel *> &
getLinkModelsWithCollisionGeometry() const¶ 干渉形状が関連付けられているリンクを取得します。
-
const std::vector<std::string> &
getLinkModelNamesWithCollisionGeometry() const¶ 干渉形状が関連付けられているリンクの名前を取得します。
-
const LinkModel *
getRigidlyConnectedParentLinkModel(const LinkModel *link)¶ 固定関節を介してのみ接続されているキネマティックツリーのもっとも根元にあるリンクを取得します。
updateStateWithLinkAt()を使用してリンクを特定のポーズに向ける必要がある場合に便利に使えます。 updateStateWithLinkAt()は、指定されたリンクとその子孫のみの向きを変えるため、リンクが抽象フレーム名の場合、目的を達成できない可能性があります。次の例を考えてみてください: root -> arm0 -> ... -> armN -> wrist grasp_frame palm -> エンドエフェクタ... ここで、updateStateWithLinkAt(grasp_frame)を呼び出しても、エンドエフェクタの向きは変わりません。代わりに、updateStateWithLinkAt(getRigidlyConnectedParentLinkModel(grasp_frame),...)とすると実際に手首(およびそのすべての子孫)の向きが変わります。
グループへのアクセス
-
bool
hasJointModelGroup(const std::string &group) const¶ JointModelGroupグループが存在するかどうかを確認します。
-
const JointModelGroup *
getJointModelGroup(const std::string &name) const¶ 名前指定でグループを取得します。
-
JointModelGroup *
getJointModelGroup(const std::string &name)¶ 名前指定でグループを取得します。
-
const std::vector<const JointModelGroup *> &
getJointModelGroups() const¶ 定義されたグループのリストを取得します。
-
const std::vector<JointModelGroup *> &
getJointModelGroups()¶ 定義されたグループのリストを取得します。
-
const std::vector<std::string> &
getJointModelGroupNames() const¶ このモデルに定義されているすべてのグループの名前を取得します。
-
bool
hasEndEffector(const std::string &eef) const¶ エンドエフェクタが存在するかどうかを確認します。
-
const JointModelGroup *
getEndEffector(const std::string &name) const¶ 特定のエンドエフェクタ名に対応するグループを取得します。
-
JointModelGroup *
getEndEffector(const std::string &name)¶ 特定のエンドエフェクタ名に対応するグループを取得します。
-
const std::vector<const JointModelGroup *> &
getEndEffectors() const¶ エンドエフェクタ名とそれらが対応するグループ間のマップを取得します。
パブリック関数
パース済みのロボットモデルとグループのリストから運動学モデルを構築します。
-
~RobotModel()¶ デストラクタ。すべてのメモリをクリアします。
-
const std::string &
getName() const¶ モデル名を取得します。
-
const std::string &
getModelFrame() const¶ このモデルの基準座標を取得します(RobotStateを使用する場合)。この基準座標はルート関節に依存します。そのため、基準座標はSRDFから抽出されるか、ルート関節の名前であると想定されます。
-
bool
isEmpty() const¶ モデルが空の場合、trueを返します(ルートリンクも関節もありません)
-
const urdf::ModelInterfaceSharedPtr &
getURDF() const¶ パース済みのURDFモデルを取得します。
-
const srdf::ModelConstSharedPtr &
getSRDF() const¶ パース済みSRDFモデルを取得します。
-
void
printModelInfo(std::ostream &out) const¶ モデルに関する情報を出力します。
-
void
getVariableRandomPositions(random_numbers::RandomNumberGenerator &rng, double *values) const¶ RobotStateのランダム値を計算します。
-
void
getVariableDefaultPositions(double *values) const¶ RobotStateのデフォルト値を計算します。
-
void
getVariableRandomPositions(random_numbers::RandomNumberGenerator &rng, std::vector<double> &values) const¶ RobotStateのランダム値を計算します。
-
void
getVariableDefaultPositions(std::vector<double> &values) const¶ RobotStateのデフォルト値を計算します。
-
void
getVariableRandomPositions(random_numbers::RandomNumberGenerator &rng, std::map<std::string, double> &values) const¶ RobotStateのランダム値を計算します。
-
void
getVariableDefaultPositions(std::map<std::string, double> &values) const¶ RobotStateのデフォルト値を計算します。
-
std::size_t
getVariableCount() const¶ このモデルを記述する変数の数を取得します。
-
const std::vector<std::string> &
getVariableNames() const¶ この状態を記述する関節の変数名を取得します。固定関節には自由度がないため、ここには含まれませんが、mimic関節は含まれます。返される要素の数は常にgetVariableCount()と等しくなります
-
const VariableBounds &
getVariableBounds(const std::string &variable) const¶ 指定された変数の境界値を取得します。変数が見つからない場合、例外をスローします。
-
const JointBoundsVector &
getActiveJointModelsBounds() const¶ すべてのアクティブな関節の境界値を取得します。
-
int
getVariableIndex(const std::string &variable) const¶ ロボット状態の変数名のインデックス値を取得します。
-
const JointModel *
getCommonRoot(const JointModel *a, const JointModel *b) const¶ 引数として渡された2つの関節の共通の親であり、キネマティックツリーで最も深い関節を取得します。
-
void
setKinematicsAllocators(const std::map<std::string, SolverAllocatorFn> &allocators)¶ 運動学ソルバーとグループ名を関連付けたマップを登録する。
-
const JointModel *