addCollision
설명
addCollision(
는 지정된 기하 유형과 파라미터의 충돌 기하 도형을 지정된 강체에 추가합니다.body
,type
,parameters
)
addCollision(
는 충돌 기하 도형 객체를 강체에 추가합니다. collision 객체는 다음 중 하나로 지정됩니다. body
,collisionObj
)
이 구문은 강체 프레임을 기준으로 tform*collisionObj.Pose
의 상대 자세에서 충돌 기하 도형을 연결합니다.
addCollision(___,
은 위에 열거된 구문의 입력 인수 조합 외에 강체 프레임을 기준으로 하는 충돌 기하 도형의 변환을 지정합니다.tform
)
예제
충돌 메시를 추가하고 매니퓰레이터 로봇 팔에 대한 충돌 검사하기
로봇 모델을 불러와서 충돌 메시를 수정합니다. 기존 충돌 메시를 지우고, 단순한 collision 객체 프리미티브를 추가하고, 특정 컨피규레이션이 충돌하는지 확인합니다.
로봇 모델 불러오기
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 행렬 또는 string형의 STL 파일 이름이나 DAE 파일 이름
데이터형: char
| string
parameters
— 충돌 기하 도형 파라미터
숫자형 벡터 | 숫자형 행렬 | string형 스칼라
충돌 기하 도형 파라미터로, 숫자형 벡터, 숫자형 행렬 또는 string형 스칼라로 지정됩니다. type
입력값에 따라 이 값의 형식이 결정됩니다.
"box"
—[x y z]
"cylinder"
—[radius length]
"capsule"
—[radius length]
"sphere"
—radius
"mesh"
— 꼭짓점으로 구성된 n×3 행렬 또는 string형의 STL 파일 이름이나 DAE 파일 이름
데이터형: single
| double
| char
| string
collisionObj
— 충돌 기하 도형 객체
collisionBox
객체 | collisionCylinder
객체 | collisionCapsule
객체 | collisionSphere
객체 | collisionMesh
객체
충돌 기하 도형 객체로, collisionBox
객체, collisionCapsule
객체, collisionCylinder
객체, collisionSphere
객체 또는 collisionMesh
객체로 지정됩니다.
tform
— 바디 프레임을 기준으로 하는 충돌 기하 도형의 변환
eye(4)
(디폴트 값) | 4×4 동차 변환 행렬
바디 프레임을 기준으로 하는 충돌 기하 도형의 변환으로, 4×4 동차 변환 행렬로 지정됩니다. collisionObj
입력을 사용하여 충돌 객체를 지정하는 경우, 이 함수는 강체 프레임을 기준으로 tform*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 명령 창에 입력하십시오. 웹 브라우저는 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)