이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.
show
Figure에 로봇 모델 표시
설명
show(
은 robot
,configuration
)configuration
에 지정된 조인트 위치를 사용하여 로봇 바디 프레임을 표시합니다.
show(___,Name,Value)
는 위에 열거된 구문의 입력 인수 조합 외에 하나 이상의 이름-값 쌍 인수를 사용하여 옵션을 지정합니다. 예를 들어 'Frames','off'
는 Figure에서 강체 프레임을 숨깁니다.
는 로봇이 플로팅된 axes 핸들을 반환합니다.ax
= show(___)
예제
시각적 기하 도형으로 로봇 모델 표시하기
URDF(Unified Robot Description format) 파일과 연결된 .stl
파일이 있는 로봇을 가져와서 로봇의 시각적 기하 도형을 설명할 수 있습니다. 각 강체에는 개별 시각적 기하 도형이 지정되어 있습니다. importrobot
함수는 URDF 파일을 구문 분석하여 로봇 모델과 시각적 기하 도형을 가져옵니다. 이 함수는 로봇의 시각적 기하 도형과 충돌 기하 도형이 동일하다고 간주하고, 시각적 기하 도형을 대응하는 바디의 충돌 기하 도형으로 할당합니다.
show
함수를 사용하여 Figure에 로봇 모델의 시각적 기하 도형과 충돌 기하 도형을 표시합니다. 그런 다음 구성요소를 클릭하여 검사하고 마우스 오른쪽 버튼으로 클릭하여 가시성을 전환함으로써 모델과 상호 작용할 수 있습니다.
로봇 모델을 URDF 파일로 가져옵니다. .stl
파일 위치는 이 URDF에 올바르게 지정되어 있어야 합니다. 개별 강체에 다른 .stl
파일을 추가하려면 addVisual
항목을 참조하십시오.
robot = importrobot('iiwa14.urdf');
연결된 시각적 모델을 사용하여 로봇을 시각화합니다. 바디 또는 프레임을 검사하려면 마우스 왼쪽 버튼으로 클릭합니다. 각 시각적 기하 도형의 가시성을 전환하려면 바디를 마우스 오른쪽 버튼으로 클릭합니다.
show(robot,'visuals','on','collision','off');
연결된 충돌 기하 도형을 사용하여 로봇을 시각화합니다. 바디 또는 프레임을 검사하려면 마우스 왼쪽 버튼으로 클릭합니다. 각 충돌 기하 도형의 가시성을 전환하려면 바디를 마우스 오른쪽 버튼으로 클릭합니다.
show(robot,'visuals','off','collision','on');
로봇 컨피규레이션 시각화하기
RigidBodyTree
모델을 사용하여 만든 로봇의 여러 다른 컨피규레이션을 표시합니다. homeConfiguration
함수 또는 randomConfiguration
함수를 사용하여 모든 조인트 위치를 정의하는 구조체를 생성합니다.
예제 로봇을 RigidBodyTree
객체로 불러옵니다.
load exampleRobots.mat
Puma 로봇의 홈 컨피규레이션을 위한 구조체를 만듭니다. 구조체는 로봇 모델의 각 바디에 대한 조인트 이름과 위치를 가집니다.
config = homeConfiguration(puma1)
config=1×6 struct array with fields:
JointName
JointPosition
show
를 사용하여 홈 컨피규레이션을 표시합니다. 컨피규레이션 입력값을 지정할 필요는 없습니다.
show(puma1);
컨피규레이션을 수정하고 두 번째 조인트 위치를 pi/2
로 설정합니다. 변경된 로봇 컨피규레이션을 표시합니다.
config(2).JointPosition = pi/2; show(puma1,config);
무작위 컨피규레이션을 만들고 표시합니다.
show(puma1,randomConfiguration(puma1));
Denavit-Hartenberg 파라미터를 사용하여 매니퓰레이터 로봇 빌드하기
Puma560® 로봇의 DH(Denavit-Hartenberg) 파라미터를 사용하여 로봇을 빌드합니다. 각 강체는 한 번에 하나씩 추가되며, joint 객체로 자식-부모 변환이 지정됩니다.
DH 파라미터는 각 강체가 부모에 연결되는 관계를 나타내는 로봇의 기하를 정의합니다. 편의를 위해 Puma560 로봇의 파라미터를 행렬로 설정합니다[1]. Puma 로봇은 직렬 체인 매니퓰레이터입니다. DH 파라미터는 이전 조인트 연결에 해당하는 행렬의 이전 행을 기준으로 합니다.
dhparams = [0 pi/2 0 0; 0.4318 0 0 0 0.0203 -pi/2 0.15005 0; 0 pi/2 0.4318 0; 0 -pi/2 0 0; 0 0 0 0];
로봇을 빌드할 강체 트리 객체를 만듭니다.
robot = rigidBodyTree;
첫 번째 강체를 만들고 로봇에 추가합니다. 강체를 추가하려면 다음을 수행하십시오.
rigidBody
객체를 만들고 고유한 이름을 지정합니다.rigidBodyJoint
객체를 만들고 고유한 이름을 지정합니다.setFixedTransform
으로 DH 파라미터를 사용하여 바디-바디 변환을 지정합니다. DH 파라미터의 마지막 요소인theta
의 경우 이에 해당하는 각도는 조인트 위치에 따라 달라지므로 무시됩니다.addBody
를 호출하여 로봇의 베이스 프레임에 첫 번째 바디 조인트를 연결합니다.
body1 = rigidBody('body1'); jnt1 = rigidBodyJoint('jnt1','revolute'); setFixedTransform(jnt1,dhparams(1,:),'dh'); body1.Joint = jnt1; addBody(robot,body1,'base')
나머지 강체를 만들고 로봇에 추가합니다. addBody
호출하여 연결할 때 이전 바디 이름을 지정합니다. 각 고정 변환은 이전 조인트 좌표 프레임을 기준으로 합니다.
body2 = rigidBody('body2'); jnt2 = rigidBodyJoint('jnt2','revolute'); body3 = rigidBody('body3'); jnt3 = rigidBodyJoint('jnt3','revolute'); body4 = rigidBody('body4'); jnt4 = rigidBodyJoint('jnt4','revolute'); body5 = rigidBody('body5'); jnt5 = rigidBodyJoint('jnt5','revolute'); body6 = rigidBody('body6'); jnt6 = rigidBodyJoint('jnt6','revolute'); setFixedTransform(jnt2,dhparams(2,:),'dh'); setFixedTransform(jnt3,dhparams(3,:),'dh'); setFixedTransform(jnt4,dhparams(4,:),'dh'); setFixedTransform(jnt5,dhparams(5,:),'dh'); setFixedTransform(jnt6,dhparams(6,:),'dh'); body2.Joint = jnt2; body3.Joint = jnt3; body4.Joint = jnt4; body5.Joint = jnt5; body6.Joint = jnt6; addBody(robot,body2,'body1') addBody(robot,body3,'body2') addBody(robot,body4,'body3') addBody(robot,body5,'body4') addBody(robot,body6,'body5')
showdetails
함수 또는 show
함수를 사용하여 로봇이 올바르게 빌드되었는지 확인합니다. showdetails
함수는 MATLAB® 명령 창에 모든 바디를 나열합니다. show
함수는 주어진 컨피규레이션에서의(기본적으로 홈 컨피규레이션) 로봇을 표시합니다. axis
호출로 축 제한을 수정하고 축 레이블을 숨깁니다.
showdetails(robot)
-------------------- Robot: (6 bodies) Idx Body Name Joint Name Joint Type Parent Name(Idx) Children Name(s) --- --------- ---------- ---------- ---------------- ---------------- 1 body1 jnt1 revolute base(0) body2(2) 2 body2 jnt2 revolute body1(1) body3(3) 3 body3 jnt3 revolute body2(2) body4(4) 4 body4 jnt4 revolute body3(3) body5(5) 5 body5 jnt5 revolute body4(4) body6(6) 6 body6 jnt6 revolute body5(5) --------------------
show(robot);
axis([-0.5,0.5,-0.5,0.5,-0.5,0.5])
axis off
참고 문헌
[1] Corke, P. I., and B. Armstrong-Helouvry. “A Search for Consensus among Model Parameters Reported for the PUMA 560 Robot.” Proceedings of the 1994 IEEE International Conference on Robotics and Automation, IEEE Comput. Soc. Press, 1994, pp. 1608–13. DOI.org (Crossref), doi:10.1109/ROBOT.1994.351360.
충돌 메시를 추가하고 매니퓰레이터 로봇 팔에 대한 충돌 검사하기
로봇 모델을 불러와서 충돌 메시를 수정합니다. 기존 충돌 메시를 지우고, 단순한 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
입력 인수
robot
— 로봇 모델
rigidBodyTree
객체
로봇 모델로, rigidBodyTree
객체로 지정됩니다.
configuration
— 로봇 컨피규레이션
벡터 | 구조체
로봇 컨피규레이션으로, 로봇 모델의 모든 바디에 대한 조인트 이름과 위치를 나타내는 구조체 또는 조인트 위치 벡터로 지정됩니다. homeConfiguration(robot)
, randomConfiguration(robot)
을 사용하거나 구조체에 조인트 위치를 직접 지정하여 컨피규레이션을 생성할 수 있습니다. 벡터 형식의 configuration
을 사용하려면 robot
의 DataFormat
속성을 "row"
또는 "column"
으로 설정합니다.
이름-값 인수
선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN
으로 지정합니다. 여기서 Name
은 인수 이름이고 Value
는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.
R2021a 이전 버전에서는 쉼표를 사용하여 각 이름과 값을 구분하고 따옴표로 Name
을 묶으십시오.
예: 'Frames','off'
는 Figure에서 강체 프레임을 숨깁니다.
Parent
— 좌표축의 부모
Axes
객체
좌표축의 부모로, 'Parent'
와 함께 로봇을 그릴 Axes
객체가 쉼표로 구분되어 지정됩니다. 기본적으로 로봇은 활성 좌표축에 플로팅됩니다.
PreservePlot
— 로봇 플롯을 유지하는 옵션
true
또는 1
(디폴트 값) | false
또는 0
로봇 플롯을 유지하는 옵션으로, 'PreservePlot'
과 함께 논리형 1
(true)
또는 0
(false)
이 쉼표로 구분되어 지정됩니다. 이 인수를 true
로 지정하면 함수는 show
를 호출하여 표시한 이전 플롯을 덮어쓰지 않습니다. 이 설정은 표준 MATLAB® Figure의 hold on
과 유사한 기능이지만 로봇 바디 프레임에만 사용됩니다. 이 인수를 false
로 지정하면 함수는 로봇의 이전 플롯을 덮어씁니다.
참고
'PreservePlot'
값이 true
이면 'FastUpdate'
값은 false
여야 합니다.
데이터형: logical
Frames
— 바디 프레임 표시
'on'
(디폴트 값) | 'off'
바디 프레임 표시로, 'Frames'
와 함께 'on'
또는 'off'
가 쉼표로 구분되어 지정됩니다. 이러한 프레임은 강체 트리에서 개별 바디의 좌표 프레임입니다.
데이터형: char
| string
Visuals
— 시각적 기하 도형 표시
'on'
(디폴트 값) | 'off'
시각적 기하 도형 표시로, 'Visuals'
와 함께 'on'
또는 'off'
가 쉼표로 구분되어 지정됩니다. Figure에서 개별 시각적 기하 도형을 마우스 오른쪽 버튼을 클릭하여 끌 수도 있습니다.
addVisual
을 사용하여 개별 시각적 기하 도형을 지정합니다. 메시용 .stl
파일이 있는 URDF 로봇 모델을 가져오려면 importrobot
함수를 참조하십시오.
데이터형: char
| string
Collisions
— 충돌 기하 도형 표시
'off'
(디폴트 값) | 'on'
충돌 기하 도형 표시로, 'Collisions'
와 함께 'on'
또는 'off'
가 쉼표로 구분되어 지정됩니다.
addCollision
함수를 사용하여 로봇 모델의 개별 강체에 충돌 기하 도형을 추가합니다. 메시용 .stl
파일이 있는 URDF 로봇 모델을 가져오려면 importrobot
함수를 참조하십시오.
데이터형: char
| string
Position
— 로봇의 위치
[0 0 0 0]
(디폴트 값) | 요소를 4개 가진 벡터
로봇의 위치로, 'Position'
과 함께 [x y z yaw] 형식의, 요소를 4개 가진 벡터가 쉼표로 구분되어 지정됩니다. x, y, z 요소는 미터 단위로 위치를 지정하고 yaw는 라디안 단위로 요(yaw) 각을 지정합니다.
데이터형: single
| double
FastUpdate
— 기존 플롯에 대한 빠른 업데이트
false
또는 0
(디폴트 값) | true
또는 1
기존 플롯에 대한 빠른 업데이트로, 'FastUpdate'
와 함께 논리형 0
(false)
또는 1
(true)
이 쉼표로 구분되어 지정됩니다. 이 인수로 로봇 모델을 지정하기 전에, 로봇 모델을 처음 표시하기 위해서는 show
객체 함수를 사용해야 합니다.
참고
'FastUpdate'
값이 true
이면 'PreservePlot'
값은 false
여야 합니다.
데이터형: logical
팁
로봇 모델에는 시각적 구성요소가 연결되어 있습니다. 각 rigidBody
객체는 바디 프레임으로 표시되는 좌표 프레임을 포함합니다. 각 바디에는 시각적 메시도 연결되어 있을 수 있습니다. 기본적으로 이러한 구성요소는 모두 자동으로 표시됩니다. 강체 트리 표시의 시각적 구성요소를 검사하거나 수정할 수 있습니다. 바디 프레임 또는 시각적 메시를 클릭하여 노란색으로 강조 표시한 후, 연결된 바디 이름, 인덱스, 조인트 유형을 확인합니다. 개별 구성요소의 가시성을 켜거나 끄려면 마우스 오른쪽 버튼을 클릭합니다.
바디 프레임: 개별 바디 프레임은 3축 좌표 프레임으로 표시됩니다. 고정 프레임은 분홍색 프레임입니다. 움직일 수 있는 조인트 유형은 RGB 좌표축으로 표시됩니다. 바디 프레임을 클릭하면 모션 축을 볼 수 있습니다. 직선 조인트는 모션 축 방향으로 노란색 화살표를 표시하고 회전 조인트는 회전 축을 중심으로 한 원형 화살표를 표시합니다.
시각적 메시: 개별 시각적 기하 도형은
addVisual
을 사용하여 지정되거나importrobot
을 사용하여.stl
파일이 지정된 로봇 모델을 가져오는 방식으로 지정됩니다. Figure의 개별 바디를 마우스 오른쪽 버튼으로 클릭하여 메시를 끄거나Visuals
이름-값 쌍을 지정하여 모든 시각적 기하 도형을 숨길 수 있습니다.
버전 내역
R2016b에 개발됨
참고 항목
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)