선수 지식과 준비물
경로 계획의 공통 기반은 M17.01 구성 공간·충돌과 M17.06 경로·시간 궤적에서 보충한다. 이 장의 관절 제한·증분 제한은 전체 로봇의 충돌 없는 경로를 보장하지 않는다. 이동 베이스와 팔을 함께 쓰는 경우에는 M18.06 주행-조작 미션의 정지 확인·작업공간·권한 전환 계약을 별도로 적용한다.
E4의 M19.01 Tool·작업 프레임, M19.03 티칭·접근/후퇴, M20.01 영점·스케일·클러치로 보충한다. 기구학 계산·Leader 매핑·기록된 시연·실제 추종 결과는 서로 다른 근거다. M32.02 팔 캡스톤은 제공된 기록으로 기본 보고서를 작성한 뒤 실제 장비 확장을 별도로 선택한다.
M10.02에서 원본 URDF와 변환된 USD의 이름·기본 자세·물리/드라이브 속성 계약을 확인한다. 관절 기록의 시각을 맞추는 방법은 M14.03 시간 정합에서 보충한다. 변환 보고서나 TF가 맞는 것과 실제 장치의 구동·추종이 맞는 것은 별도다.
이 장의 5축 예제를 읽기 전 M06.01 프레임·합성→M06.02 DH·FK→M06.03 IK·Jacobian→M06.04 특이점·해의 연속성을 이어 읽는다. M06.06 영점 보정은 교육용 기하와 실제 장치 명세를 구별하고, M08.05 JointState와 TF는 아래 브리지의 상태·변환 역할을 보충한다.
기초 복귀: M03.01 자유도·관절·기어비, M03.02 구동기·엔코더, M03.06 인터페이스/기계 한계를 먼저 확인한다. 엔코더 수치 하나는 해당 축의 측정이며 말단의 전체 자세를 직접 측정한 값이 아니다. M02.02의 변환 방향·라디안 규약과 M01.01의 장치 권한을 확인한 뒤 아래 구현으로 넘어간다. 그리퍼 구동기를 세는 것과 팔이 독립적으로 조절할 수 있는 말단 자유도를 세는 것은 구분한다.
선수 지식
- Python, NumPy 및 C++17 기초
- 4×4 동차변환행렬과 회전행렬
- ROS 2 노드, 토픽, QoS(Quality of Service)의 기본 개념
- Linux 직렬 장치와 사용자 권한의 기본 개념
기준 환경
- Ubuntu 24.04 LTS
- ROS 2 Jazzy Jalisco
- Python 3.12, NumPy
- C++17,
rclcpp,sensor_msgs - LeRobot: 기준 환경 문서와 설치 릴리스의 공식 SO-101 문서를 대조한 뒤 태그 또는 커밋을 고정한다. CLI와 설정 필드는 릴리스에 따라 바뀔 수 있다.
- 선택: SO-101 Leader/Follower, 각 암의 전원 공급 장치와 USB 직렬 어댑터
- 선택: NVIDIA Isaac Sim과 SO-101 URDF/USD 자산
실물 실습 전 안전 원칙
위험: 텔레오퍼레이션 코드는 사람의 손동작을 즉시 모터 명령으로 바꾼다. 잘못된 관절 부호, 첫 프레임의 큰 점프, 통신 지연은 충돌과 끼임을 일으킬 수 있다.
실물 전원을 넣기 전에 다음을 확인한다.
- 암을 단단한 작업대에 고정하고 예상 작업 공간에서 사람, 케이블, 공구를 치운다.
- 해당 모델·변형의 제조사 권장 동작 전압 범위, 공급 전압의 변동·극성, 드라이버·배선의 연속/순간 전류 조건을 문서로 확인한다. 명목 전압 숫자가 같다는 사실만으로 호환성을 보장하지 않는다. 전원 입력과 통신 논리핀의 전압 정격도 별개이며, 절대 최대 정격을 정상 동작 목표로 삼지 않는다. M03.04와 M03.06의 가상 명세 읽기에서 이 구분을 먼저 연습한다.
- 하드웨어 전원 차단 수단을 조작자의 손이 닿는 곳에 둔다. 소프트웨어의
Ctrl+C는 비상 정지가 아니다. - 최초 시험은 토크 비활성 또는 저속·무부하 조건에서 수행한다.
- 관절별 소프트 리밋(software limit)을 실제 기계 한계보다 안쪽에 둔다.
- Leader와 Follower의 첫 자세가 크게 다르면 즉시 미러링하지 말고 제한된 속도로 정렬한다.
- 명령 스트림이 끊기면 현재 자세 유지 또는 토크 해제 중 장비에 맞는 안전 상태로 전이한다.