실기 어댑터 (deploy/)¶
ROS 2 패키지. 정책 코드가 바뀌어도 안전 래퍼는 바뀌지 않는다.
| 노드 | 역할 |
|---|---|
| 추론 | ONNX Runtime 으로 policy.onnx 로드, io_spec.json 만 읽어 관측 조립·행동 매핑 |
| 안전 래퍼 | 별도 프로세스. 힘·토크·작업공간·관절 속도 한계, 워치독(정책 출력 지연 2주기 초과 시 정지) |
| 텔레메트리 | 표준 토픽을 rosbag 으로 저장, 시도 종료 시 telemetry/<project>/<policy_ref>/ 업로드 |
io_spec.json¶
{"schema_version": 1,
"obs": [{"name": "joint_pos", "dim": 12, "unit": "rad", "offset": [...], "scale": [...]}],
"action": {"name": "joint_target", "dim": 12, "unit": "rad", "offset": [...], "scale": [...]},
"control_hz": 50, "history_len": 1}
obs 순서 = ONNX 입력 텐서 연결 순서.
표준 토픽¶
/lab/joint_state /lab/joint_cmd /lab/ft /lab/imu /lab/policy_obs /lab/policy_action /lab/safety_event /lab/trial. 관절 순서·프레임·부호는 deploy/frames.yaml. 시뮬 에셋의 관절 순서와 다르면 CI 가 실패한다.
bag 메타데이터¶
metadata.json 필수. trial_id project policy_ref policy_stage robot frames_version calibration_version scenario_id rollout_step result safety_intervention operator started_at ended_at. 인덱서는 규격 위반 시도를 rejected 로 표시하고 통계·보정에서 제외한다.
전체 규격은 명령서 16.2.