이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.
addSubtree
로봇에 하위 트리 추가
설명
addSubtree(
은 robot
,bodyname
,subtreerobot
)bodyname
에 의해 지정된 바디에서 기존 로봇 모델 robot
에 로봇 모델 newSubtree
를 연결합니다. 하위 트리 베이스는 바디로 추가되지 않습니다.
addSubtree(___,
는 ReplaceBase
=MODE)MODE
가 true로 설정되었을 때 하위 트리의 현재 베이스를 bodyname
으로 바꿉니다. MODE
는 기본적으로 true입니다.
예제
기존 rigidBodyTree
객체를 변경합니다. 강체 트리에서 조인트, 바디, 하위 트리를 바꿀 수 있습니다.
Robotics System Toolbox™ loadrobot
함수를 사용하여 ABB IRB-120T 매니퓰레이터를 불러옵니다. 이는 rigidBodyTree
객체로 지정됩니다.
manipulator = loadrobot("abbIrb120T");
show
를 사용해서 로봇을 표시하고 showdetails
를 사용해서 로봇의 세부 정보를 읽어옵니다.
show(manipulator); showdetails(manipulator)
속성을 검사할 바디를 가져옵니다. link_3
바디의 자식은 link_4
바디뿐입니다. 특정 바디를 복사할 수도 있습니다.
body3 = getBody(manipulator,"link_3");
childBody = body3.Children{1}
body3Copy = copy(body3);
link_3
바디의 조인트를 바꿉니다. 다운스트림 바디의 기하 도형이 영향을 받지 않도록 하려면 새 Joint
객체를 만들고 replaceJoint
를 사용해야 합니다. 바디 간의 변환을 정의하기 위해 필요한 경우 디폴트 단위 행렬을 사용하는 대신 setFixedTransform
을 호출합니다.
newJoint = rigidBodyJoint("prismatic"); replaceJoint(manipulator,"link_3",newJoint); showdetails(manipulator)
removeBody
를 사용하여 전체 바디를 제거하고, 결과로 생성된 하위 트리를 가져옵니다. 제거된 바디는 하위 트리에 포함됩니다.
subtree = removeBody(manipulator,"link_4")
show(subtree);
수정된 link_3
바디를 제거합니다. 복사한 원래 link_3
바디를 link_2
바디에 추가한 다음, 반환된 하위 트리를 추가합니다. 로봇 모델은 동일하게 유지됩니다. 자세한 비교는 showdetails
를 통해 확인하십시오.
removeBody(manipulator,"link_3"); addBody(manipulator,body3Copy,"link_2") addSubtree(manipulator,"link_3",subtree) showdetails(manipulator)
Robotics System Toolbox™ loadrobot
함수를 사용하여 UR10 로봇 매니퓰레이터를 불러옵니다. 이는 rigidBodyTree
객체로 지정됩니다.
ur10 = loadrobot("universalUR10");
Robotiq 2F-85 그리퍼를 불러와 매니퓰레이터 팔에 연결합니다.
gripper = loadrobot("robotiq2F85");
그리퍼를 UR10 팔의 끝부분에 연결합니다.
addSubtree(ur10, 'tool0', gripper, ReplaceBase=false);
show
를 사용해서 로봇을 표시하고 showdetails
를 사용해서 로봇의 세부 정보를 읽어와 rigidBodyTree
객체의 수정된 조인트를 봅니다.
show(ur10)
ans = Axes (Primary) with properties: XLim: [-1.5000 1.5000] YLim: [-1.5000 1.5000] XScale: 'linear' YScale: 'linear' GridLineStyle: '-' Position: [0.1300 0.1100 0.7750 0.8150] Units: 'normalized' Use GET to show all properties
showdetails(ur10)
-------------------- Robot: (21 bodies) Idx Body Name Joint Name Joint Type Parent Name(Idx) Children Name(s) --- --------- ---------- ---------- ---------------- ---------------- 1 base_link world_joint fixed world(0) base(2) shoulder_link(3) 2 base base_link-base_fixed_joint fixed base_link(1) 3 shoulder_link shoulder_pan_joint revolute base_link(1) upper_arm_link(4) 4 upper_arm_link shoulder_lift_joint revolute shoulder_link(3) forearm_link(5) 5 forearm_link elbow_joint revolute upper_arm_link(4) wrist_1_link(6) 6 wrist_1_link wrist_1_joint revolute forearm_link(5) wrist_2_link(7) 7 wrist_2_link wrist_2_joint revolute wrist_1_link(6) wrist_3_link(8) 8 wrist_3_link wrist_3_joint revolute wrist_2_link(7) ee_link(9) tool0(10) 9 ee_link ee_fixed_joint fixed wrist_3_link(8) 10 tool0 wrist_3_link-tool0_fixed_joint fixed wrist_3_link(8) robotiq_arg2f_base_link(11) 11 robotiq_arg2f_base_link robotiq_arg2f_base_link_jnt fixed tool0(10) left_outer_knuckle(12) left_inner_knuckle(16) right_inner_knuckle(17) right_outer_knuckle(18) 12 left_outer_knuckle finger_joint revolute robotiq_arg2f_base_link(11) left_outer_finger(13) 13 left_outer_finger left_outer_finger_joint fixed left_outer_knuckle(12) left_inner_finger(14) 14 left_inner_finger left_inner_finger_joint revolute left_outer_finger(13) left_inner_finger_pad(15) 15 left_inner_finger_pad left_inner_finger_pad_joint fixed left_inner_finger(14) 16 left_inner_knuckle left_inner_knuckle_joint revolute robotiq_arg2f_base_link(11) 17 right_inner_knuckle right_inner_knuckle_joint revolute robotiq_arg2f_base_link(11) 18 right_outer_knuckle right_outer_knuckle_joint revolute robotiq_arg2f_base_link(11) right_outer_finger(19) 19 right_outer_finger right_outer_finger_joint fixed right_outer_knuckle(18) right_inner_finger(20) 20 right_inner_finger right_inner_finger_joint revolute right_outer_finger(19) right_inner_finger_pad(21) 21 right_inner_finger_pad right_inner_finger_pad_joint fixed right_inner_finger(20) --------------------
입력 인수
로봇 모델로, rigidBodyTree
객체로 지정됩니다.
부모 바디 이름으로, string형 스칼라 또는 문자형 벡터로 지정됩니다. 부모 바디는 로봇 모델에 이미 존재해야 합니다. 새 바디는 이 부모 바디에 연결됩니다.
데이터형: char
| string
하위 트리 로봇 모델로, rigidBodyTree
객체로 지정됩니다.
MODE
가 true
로 지정되었을 때 하위 트리의 현재 베이스를 bodyname
으로 바꿉니다. MODE
의 디폴트 값은 true
로 설정되어 있습니다
데이터형: logical
확장 기능
사용법 관련 참고 사항 및 제한 사항:
rigidBodyTree
객체를 만들 때 MaxNumBodies
로 로봇 모델에 추가할 수 있는 바디의 상한을 지정하는 구문을 사용하십시오. 또한 DataFormat
속성을 이름-값 쌍으로 지정해야 합니다. 예를 들면 다음과 같습니다.
robot = rigidBodyTree("MaxNumBodies",15,"DataFormat","row")
데이터 사용량을 최소화하기 위해 모델에서 예상되는 바디 개수에 가까운 수로 상한을 설정하십시오. 코드 생성 시 모든 데이터 형식이 지원됩니다. 동역학 함수를 사용하기 위해 데이터 형식을 "row"
또는 "column"
으로 설정해야 합니다.
show
및 showdetails
는 코드 생성을 지원하지 않습니다.
버전 내역
R2016b에 개발됨ReplaceBase
이름-값 인수를 사용하여 하위 트리의 현재 베이스를 bodyname
으로 바꿉니다.
참고 항목
rigidBodyJoint
| rigidBody
| addBody
| removeBody
| replaceBody
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
웹사이트 선택
번역된 콘텐츠를 보고 지역별 이벤트와 혜택을 살펴보려면 웹사이트를 선택하십시오. 현재 계신 지역에 따라 다음 웹사이트를 권장합니다:
또한 다음 목록에서 웹사이트를 선택하실 수도 있습니다.
사이트 성능 최적화 방법
최고의 사이트 성능을 위해 중국 사이트(중국어 또는 영어)를 선택하십시오. 현재 계신 지역에서는 다른 국가의 MathWorks 사이트 방문이 최적화되지 않았습니다.
미주
- América Latina (Español)
- Canada (English)
- United States (English)
유럽
- 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)