マニピュレーターの衝突チェック用の衝突データの取得
この例では、衝突データがある rigidBodyTree
モデルを取得する 3 通りの方法を説明します。自己衝突または環境衝突の検知をチェックする詳細な例については、以下に示す他の例を参照してください。
URDF のインポート
多くのロボットでは、付属の衝突メッシュやプリミティブが、Unified Robot Definition Format (URDF) ファイルで指定されています。
KUKA® IIWA ロボットには一連の衝突メッシュが付属しており、これらはビジュアル メッシュを簡略化したバージョンです。関数importrobot
を呼び出して、URDF ファイルからrigidBodyTree
オブジェクトを生成します。コンフィギュレーション用の出力形式を "column"
に設定します。
iiwa = importrobot("iiwa14.urdf"); iiwa.DataFormat = "column";
ロボットの衝突メッシュを視覚的に検査します。
show(iiwa,"Visuals","off","Collisions","on");
指定されたコンフィギュレーションでの自己衝突のチェック
自己衝突しているコンフィギュレーションを指定します。関数 checkCollision
は、ロボットが特定のコンフィギュレーションで自己衝突しているかどうかを示します。コンフィギュレーションを可視化します。
config = [0 -pi/4 pi 0.9*pi 0 -pi/2 0]'; checkCollision(iiwa,config,'SkippedSelfCollisions','parent')
ans = logical
1
show(iiwa,config,"Visuals","off","Collisions","on");
提供されているモデルの読み込み
Robotics System Toolbox™ は、関数loadrobot
を使用してアクセスする衝突データをもつ一般的なロボット モデルを提供します。
kukaIiwa14 = loadrobot("kukaIiwa14","DataFormat","column"); checkCollision(kukaIiwa14,config,'SkippedSelfCollisions','parent')
ans = logical
1
config = [0 -pi/4 pi 0.9*pi 0 -pi/2 0]';
ロボットを可視化し、衝突メッシュを表示します。
show(kukaIiwa14,config,"Visuals","off","Collisions","on");
個別の衝突オブジェクトの追加
関数addCollision
を使用すると、衝突オブジェクトをロボットの任意の剛体に基本形状 (ボックス、球体、円柱) として追加できます。これらの衝突ジオメトリを使用してロボット全体を作成することもできますが、この方法は一般に、高い忠実度のメッシュ定義よりも精度が低くなります。
この例では、読み込まれた IIWA ロボット モデルにグリッパーがありません。衝突プリミティブで作成されているグリッパーを、ロボットの iiwa_link_ee
ボディに追加します。
addCollision(iiwa.Bodies{end},"cylinder",[0.06,0.05]) addCollision(iiwa.Bodies{end},"box",[0.02,0.02,0.15],trvec2tform([0.03,0,0.05])) addCollision(iiwa.Bodies{end},"box",[0.02,0.02,0.15],trvec2tform([-0.03,0,0.05]))
ロボットを可視化します。グリッパーが追加されていることに注目してください。
show(iiwa,"Visuals","off","Collisions","on");