copy
로봇 모델 복사
설명
예제
로봇 강체 트리 모델 수정하기
기존 rigidBodyTree
객체를 변경합니다. 강체 트리에서 조인트, 바디, 하위 트리를 바꿀 수 있습니다.
예제 로봇을 rigidBodyTree
객체로 불러옵니다.
load exampleRobots.mat
showdetails
를 사용하여 Puma 로봇의 세부 정보를 봅니다.
showdetails(puma1)
-------------------- Robot: (6 bodies) Idx Body Name Joint Name Joint Type Parent Name(Idx) Children Name(s) --- --------- ---------- ---------- ---------------- ---------------- 1 L1 jnt1 revolute base(0) L2(2) 2 L2 jnt2 revolute L1(1) L3(3) 3 L3 jnt3 revolute L2(2) L4(4) 4 L4 jnt4 revolute L3(3) L5(5) 5 L5 jnt5 revolute L4(4) L6(6) 6 L6 jnt6 revolute L5(5) --------------------
속성을 검사하기 위해 특정 바디를 가져옵니다. L3
바디의 자식은 L4
바디뿐입니다. 특정 바디도 복사할 수 있습니다.
body3 = getBody(puma1,'L3');
childBody = body3.Children{1}
childBody = rigidBody with properties: Name: 'L4' Joint: [1x1 rigidBodyJoint] Mass: 1 CenterOfMass: [0 0 0] Inertia: [1 1 1 0 0 0] Parent: [1x1 rigidBody] Children: {[1x1 rigidBody]} Visuals: {} Collisions: {}
body3Copy = copy(body3);
L3
바디의 조인트를 바꿉니다. 다운스트림 바디의 기하 도형이 영향을 받지 않도록 하려면 새 Joint
객체를 만들고 replaceJoint
를 사용해야 합니다. 바디 간의 변환을 정의하기 위해 필요한 경우 디폴트 단위 행렬을 사용하는 대신 setFixedTransform
을 호출합니다.
newJoint = rigidBodyJoint('prismatic'); replaceJoint(puma1,'L3',newJoint); showdetails(puma1)
-------------------- Robot: (6 bodies) Idx Body Name Joint Name Joint Type Parent Name(Idx) Children Name(s) --- --------- ---------- ---------- ---------------- ---------------- 1 L1 jnt1 revolute base(0) L2(2) 2 L2 jnt2 revolute L1(1) L3(3) 3 L3 prismatic fixed L2(2) L4(4) 4 L4 jnt4 revolute L3(3) L5(5) 5 L5 jnt5 revolute L4(4) L6(6) 6 L6 jnt6 revolute L5(5) --------------------
removeBody
를 사용하여 전체 바디를 제거하고, 결과로 생성된 하위 트리를 가져옵니다. 제거된 바디는 하위 트리에 포함됩니다.
subtree = removeBody(puma1,'L4')
subtree = rigidBodyTree with properties: NumBodies: 3 Bodies: {[1x1 rigidBody] [1x1 rigidBody] [1x1 rigidBody]} Base: [1x1 rigidBody] BodyNames: {'L4' 'L5' 'L6'} BaseName: 'L3' Gravity: [0 0 0] DataFormat: 'struct'
수정된 L3
바디를 제거합니다. 복사한 원래 L3
바디를 L2
바디에 추가한 다음 반환된 하위 트리를 추가합니다. 로봇 모델은 동일하게 유지됩니다. 자세한 비교는 showdetails
를 통해 확인하십시오.
removeBody(puma1,'L3'); addBody(puma1,body3Copy,'L2') addSubtree(puma1,'L3',subtree) showdetails(puma1)
-------------------- Robot: (6 bodies) Idx Body Name Joint Name Joint Type Parent Name(Idx) Children Name(s) --- --------- ---------- ---------- ---------------- ---------------- 1 L1 jnt1 revolute base(0) L2(2) 2 L2 jnt2 revolute L1(1) L3(3) 3 L3 jnt3 revolute L2(2) L4(4) 4 L4 jnt4 revolute L3(3) L5(5) 5 L5 jnt5 revolute L4(4) L6(6) 6 L6 jnt6 revolute L5(5) --------------------
입력 인수
robot
— 로봇 모델
rigidBodyTree
객체
로봇 모델로, rigidBodyTree
객체로 지정됩니다.
출력 인수
newrobot
— 로봇 모델
rigidBodyTree
객체
로봇 모델로, rigidBodyTree
객체로 반환됩니다.
확장 기능
C/C++ 코드 생성
MATLAB® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다.
사용법 관련 참고 사항 및 제한 사항:
rigidBodyTree
객체를 만들 때 MaxNumBodies
로 로봇 모델에 추가할 수 있는 바디의 상한을 지정하는 구문을 사용하십시오. 또한 DataFormat
속성을 이름-값 쌍으로 지정해야 합니다. 예를 들면 다음과 같습니다.
robot = rigidBodyTree("MaxNumBodies",15,"DataFormat","row")
데이터 사용량을 최소화하기 위해 모델에서 예상되는 바디 개수에 가까운 수로 상한을 설정하십시오. 코드 생성 시 모든 데이터 형식이 지원됩니다. 동역학 함수를 사용하기 위해 데이터 형식을 "row"
또는 "column"
으로 설정해야 합니다.
show
및 showdetails
는 코드 생성을 지원하지 않습니다.
버전 내역
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)