Main Content

マニピュレーターの衝突チェック用の衝突データの取得

この例では、衝突データがある 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");

Figure contains an axes object. The axes object with xlabel X, ylabel Y contains 29 objects of type patch, line. These objects represent world, iiwa_link_0, iiwa_link_1, iiwa_link_2, iiwa_link_3, iiwa_link_4, iiwa_link_5, iiwa_link_6, iiwa_link_7, iiwa_link_ee, iiwa_link_ee_kuka, iiwa_link_0_mesh, iiwa_link_1_mesh, iiwa_link_2_mesh, iiwa_link_3_mesh, iiwa_link_4_mesh, iiwa_link_5_mesh, iiwa_link_6_mesh, iiwa_link_7_mesh, iiwa_link_0_coll_mesh, iiwa_link_1_coll_mesh, iiwa_link_2_coll_mesh, iiwa_link_3_coll_mesh, iiwa_link_4_coll_mesh, iiwa_link_5_coll_mesh, iiwa_link_6_coll_mesh, iiwa_link_7_coll_mesh.

指定されたコンフィギュレーションでの自己衝突のチェック

自己衝突しているコンフィギュレーションを指定します。関数 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");

Figure contains an axes object. The axes object with xlabel X, ylabel Y contains 29 objects of type patch, line. These objects represent world, iiwa_link_0, iiwa_link_1, iiwa_link_2, iiwa_link_3, iiwa_link_4, iiwa_link_5, iiwa_link_6, iiwa_link_7, iiwa_link_ee, iiwa_link_ee_kuka, iiwa_link_0_mesh, iiwa_link_1_mesh, iiwa_link_2_mesh, iiwa_link_3_mesh, iiwa_link_4_mesh, iiwa_link_5_mesh, iiwa_link_6_mesh, iiwa_link_7_mesh, iiwa_link_0_coll_mesh, iiwa_link_1_coll_mesh, iiwa_link_2_coll_mesh, iiwa_link_3_coll_mesh, iiwa_link_4_coll_mesh, iiwa_link_5_coll_mesh, iiwa_link_6_coll_mesh, iiwa_link_7_coll_mesh.

提供されているモデルの読み込み

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");

Figure contains an axes object. The axes object with xlabel X, ylabel Y contains 29 objects of type patch, line. These objects represent world, iiwa_link_0, iiwa_link_1, iiwa_link_2, iiwa_link_3, iiwa_link_4, iiwa_link_5, iiwa_link_6, iiwa_link_7, iiwa_link_ee, iiwa_link_ee_kuka, iiwa_link_0_mesh, iiwa_link_1_mesh, iiwa_link_2_mesh, iiwa_link_3_mesh, iiwa_link_4_mesh, iiwa_link_5_mesh, iiwa_link_6_mesh, iiwa_link_7_mesh, iiwa_link_0_coll_mesh, iiwa_link_1_coll_mesh, iiwa_link_2_coll_mesh, iiwa_link_3_coll_mesh, iiwa_link_4_coll_mesh, iiwa_link_5_coll_mesh, iiwa_link_6_coll_mesh, iiwa_link_7_coll_mesh.

個別の衝突オブジェクトの追加

関数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");

Figure contains an axes object. The axes object with xlabel X, ylabel Y contains 32 objects of type patch, line. These objects represent world, iiwa_link_0, iiwa_link_1, iiwa_link_2, iiwa_link_3, iiwa_link_4, iiwa_link_5, iiwa_link_6, iiwa_link_7, iiwa_link_ee, iiwa_link_ee_kuka, iiwa_link_0_mesh, iiwa_link_1_mesh, iiwa_link_2_mesh, iiwa_link_3_mesh, iiwa_link_4_mesh, iiwa_link_5_mesh, iiwa_link_6_mesh, iiwa_link_7_mesh, iiwa_link_0_coll_mesh, iiwa_link_1_coll_mesh, iiwa_link_2_coll_mesh, iiwa_link_3_coll_mesh, iiwa_link_4_coll_mesh, iiwa_link_5_coll_mesh, iiwa_link_6_coll_mesh, iiwa_link_7_coll_mesh, iiwa_link_ee_kuka_coll_mesh.