addCollision
説明
addCollision(
は、指定したタイプ body
,type
,parameters
)type
と幾何学的パラメーター parameters
の衝突ジオメトリを、指定した剛体 body
に追加します。
addCollision(
は、衝突ジオメトリ オブジェクトを以下のいずれかの衝突オブジェクトとして指定して、剛体 body
,collisionObj
)body
に追加します。
この構文では、指定した衝突オブジェクトの Pose
プロパティを使用して、衝突の頂点を剛体座標系に変換します。
addCollision(___,
は、上記構文の入力引数の任意の組み合わせに加え、ボディ座標系を基準とした衝突ジオメトリの変換を指定します。tform
)
例
衝突メッシュの追加とマニピュレーター ロボット アームの衝突チェック
ロボット モデルを読み込み、衝突メッシュを変更します。既存の衝突メッシュをクリアし、簡易衝突オブジェクトのプリミティブ型を追加して、特定のコンフィギュレーションが競合しているかどうかを確認します。
ロボット モデルの読み込み
関数 loadrobot
を使用して、事前構成済みのロボット モデルをワークスペースに読み込みます。このモデルには、既に各ボディに指定された衝突メッシュがあります。すべての剛体要素を反復し、既存の衝突メッシュをクリアします。既存のメッシュがなくなっていることを確認します。
robot = loadrobot("kukaIiwa7",DataFormat="column"); for i = 1:robot.NumBodies clearCollision(robot.Bodies{i}) end show(robot,Collisions="on",Visuals="off");
衝突シリンダーの追加
衝突シリンダーを各ボディに追加する作業を繰り返します。この特定のモデルに対するボディの一部は、オーバーラップしてエンドエフェクタ (ボディ 10) と常に衝突するため、スキップします。
collisionObj = collisionCylinder(0.05,0.25); for i = 1:robot.NumBodies if i > 6 && i < 10 % Skip these bodies. else addCollision(robot.Bodies{i},collisionObj) end end show(robot,Collisions="on",Visuals="off");
衝突チェック
一連のランダムなコンフィギュレーションを生成します。ロボットが各コンフィギュレーションで競合しているかどうかを確認します。競合している各コンフィギュレーションを可視化します。
figure rng(0) % Set random seed for repeatability. for i = 1:20 config = randomConfiguration(robot); isColliding = checkCollision(robot,config,SkippedSelfCollisions="parent"); if isColliding show(robot,config,Collisions="on",Visuals="off"); title("Collision Detected") else % Skip non-collisions. end end
入力引数
body
— 剛体
rigidBody
オブジェクト
剛体。rigidBody
オブジェクトとして指定します。
type
— 衝突ジオメトリのジオメトリ タイプ
"box"
| "cylinder"
| "capsule"
| "sphere"
| "mesh"
衝突ジオメトリのジオメトリ タイプ。string スカラーとして指定します。指定したタイプによって、parameters
入力の形式が決まります。
"box"
—[x y z]
"cylinder"
—[radius length]
"capsule"
—[radius length]
"sphere"
—radius
"mesh"
— n 行 3 列の頂点の行列、あるいは STL または DAE のファイル名 (string)
データ型: char
| string
parameters
— 衝突ジオメトリのパラメーター
数値ベクトル | 数値行列 | string スカラー
衝突ジオメトリのパラメーター。数値ベクトル、数値行列、または string スカラーとして指定します。type
入力によって、この値の形式が決まります。
"box"
—[x y z]
"cylinder"
—[radius length]
"capsule"
—[radius length]
"sphere"
—radius
"mesh"
— n 行 3 列の頂点の行列、あるいは STL または DAE のファイル名 (string)
データ型: single
| double
| char
| string
collisionObj
— 衝突ジオメトリ オブジェクト
collisionBox
オブジェクト | collisionCylinder
オブジェクト | collisionCapsule
オブジェクト | collisionSphere
オブジェクト | collisionMesh
オブジェクト
衝突ジオメトリ オブジェクト。collisionBox
、collisionCapsule
、collisionCylinder
、collisionSphere
、または collisionMesh
オブジェクトとして指定します。
tform
— 衝突ジオメトリの変換
eye(4)
(既定値) | 4 行 4 列の同次変換
衝突ジオメトリの変換。4 行 4 列の同次変換として指定します。collisionObj
入力の衝突オブジェクトを指定する場合、この関数は指定した変換を、指定した衝突オブジェクトの Pose
プロパティに適用して、衝突の頂点を剛体座標系に変換します。
データ型: single
| double
拡張機能
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。
バージョン履歴
R2020b で導入R2022b: addCollision
がカプセル衝突ジオメトリの追加をサポート
collisionObj
引数で collisionCapsule
オブジェクトが受け入れられるようになりました。
type
引数および parameters
引数は、"capsule"
の値および [radius length]
形式のパラメーターをそれぞれ受け入れます。
参考
addVisual
| checkCollision
| clearCollision
| clearVisual
| show
| rigidBodyTree
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)