1.5 Isaac Sim-ROS 2 브리지 설계
1.5.1 경계에서 명시해야 할 네 가지
- 좌표 프레임:
world,base_link,tool0, 카메라 optical frame 사이의 TF 관계 - 단위: radian/degree, metre/millimetre, N/N·m
- 시간: 시뮬레이션 clock과 메시지 timestamp의 소유자
- 명령 소유권: 같은 관절을 그래프, ROS controller, GUI가 동시에 쓰지 않도록 단일 writer 지정
그림 1-4. 관측 경로와 명령 경로를 분리하고 안전 게이트를 시뮬레이터 밖의 독립 Node로 두면 실물 전환 시 같은 계약을 유지하기 쉽다.
1.5.2 권장 인터페이스
/joint_states(sensor_msgs/msg/JointState): 관절 위치·속도·힘/tf,/tf_static: 좌표 프레임 관계- 카메라 영상과
CameraInfo: 영상과 내부 파라미터 /clock: 시뮬레이션 시간- 제어 명령: controller가 요구하는 trajectory 또는 명시적 target message
- 작업 수준: 자체 Action 또는 표준 controller Action
JointState의 name과 각 배열은 인덱스가 대응한다. 빈 velocity를 허용하는지, 모든 관절을 매번 포함하는지 계약을 명시한다. 이름 순서를 고정된 하드코딩 인덱스로 가정하지 말고 map을 구성한다.
1.5.3 단계별 통합 전략
- 시뮬레이터를 정지한 상태에서 Stage 경로와 관절 이름을 확인한다.
/clock,/joint_states,/tf처럼 읽기 전용 관측 경로를 먼저 연결한다.- 단일 관절을 낮은 속도로 명령하고 부호와 단위를 확인한다.
- 명령 만료 watchdog과 범위 제한을 활성화한다.
- reset, pause, bridge 재시작, 구독자 지연을 의도적으로 발생시킨다.
- 정상 경로보다 실패 뒤 복구가 결정적인지 확인한다.