배포 안내
이번 5.1.0 업데이트는 자율 주행의 안정성을 높이는 위험 회피(Hazard Avoidance) 서비스와 사내 출입 통제 시스템(Access Control Systems) 연동 기능이 새롭게 도입되었습니다. 또한 자율 주행 미션 중의 인터럽트(Interrupt) 처리 및 안무(Choreography) 동기화 기능이 강화되어, 보다 유연하고 복잡한 산업 현장의 시나리오를 구현할 수 있습니다.
1. 주요 호환성 변경 (Breaking Changes)
⚠️ 개발자 주의 사항: 기존 애플리케이션 코드를 5.1.0 환경으로 업데이트할 때 아래 사항을 확인하십시오.
- 도킹 타입 상수 제거: DockType 열거형(Enum)에서 DOCK_TYPE_CONTACT_PROTOTYPE 값이 제거되었습니다.
2. 신규 기능 (New Features)
위험 회피 서비스 (Hazard Avoidance Service)
- 로봇 주변의 위험 지형 및 구조물에 대한 관측 데이터를 수집하고 추적하는 API 서비스가 추가되었습니다.
- 포인트 클라우드(Point clouds), 분할된 깊이 이미지(Segmented depth images), 박스, 원 등의 형태로 위험 요소를 지정할 수 있습니다.
- 자율 주행 시 지정된 영역을 Spot이 얼마나 엄격하게 회피할지(Type), 관측 신뢰도(Confidence), 여유 공간(Margin), 시맨틱 라벨 등을 세밀하게 설정할 수 있습니다.
출입 통제 시스템(Access Control Systems) 연동 지원
- Spot이 사내 출입 통제 시스템과 연동하여 보안문을 스스로 인증하고 열고 닫을 수 있는 기능이 추가되었습니다.
- SSL/TLS 인증서를 통한 안전한 API 통신을 지원하며, 인프라 제공업체에 맞춘 커스터마이징이 가능합니다.
- 로봇 기체 없이도 도어 개폐 시스템 연동을 미리 테스트해 볼 수 있도록 전용 예제 스크립트와 설정 파일이 제공됩니다.
미션 및 자율 주행 (Missions / Autowalk)
- 자율 주행 인터럽트(Interrupts) 지원: Autowalk 미션 수행 중 특정 조건이 발생했을 때 로봇의 동작을 동적으로 변경할 수 있는 WalkInterrupt 메시지가 추가되었습니다.
- 마커(Fiducial) 인식, 외부 시스템(예: 날씨 경보) 통신 등에 반응하여 커스텀 동작을 트리거할 수 있습니다.
- '안전한 전원 차단(Safe power off)', '도크 복귀 및 미션 종료'와 같은 사전 정의된 비상 동작이 제공됩니다.
- DataAcquisitionLiveData 미션 노드 추가: 데이터 수집(DAQ) 플러그인 서비스에 실시간 라이브 데이터를 요청할 수 있는 노드가 추가되었습니다. 수집된 결과(CapabilityLiveData)는 미션 블랙보드(Blackboard)에 저장되어 하위 노드에서 유연하게 활용할 수 있습니다.
안무 및 모션 제어 (Choreography)
- UI/UX 고도화: Choreographer 애플리케이션 내에 3D/2D 시각화(Visualization) 도구 및 타임코드(Timecode LTC) 지원이 추가되었습니다.
- 라이선스 미보유 사용자 지원: 안무 라이선스가 없는 사용자의 태블릿 UI에서도 시스템에 사전 로드된 안무 시퀀스를 재생할 수 있도록 권한이 완화되었습니다.
- 다중 로봇 안무 동기화 (Synchronized start times): 미션 내에서 안무의 시작 시간을 동기화할 수 있습니다. prompt_for_start_time을 활성화하면 사용자가 시작 시간(나노초 단위)을 지정할 수 있으며, 이 값이 블랙보드를 통해 공유되어 여러 대의 로봇이 동시에 안무를 시작하도록 제어할 수 있습니다.
3. 버그 수정 및 개선 사항 (Bug Fixes and Improvements)
자율 주행 및 맵 관리 (GraphNav)
- 스냅샷 일괄 업로드 (UploadSnapshots): 단일 RPC 요청으로 다수의 웨이포인트(Waypoint) 및 에지(Edge) 스냅샷을 맵에 업로드하는 기능이 추가되었습니다. 수 메가바이트(MB) 단위로 데이터를 배치(Batch) 전송할 수 있어 통신 오버헤드가 감소하고 안정성이 향상되었습니다.
- 맵 덮어쓰기 옵션: 클라이언트를 통해 맵(Graph) 업로드 시, 기존 데이터를 병합(Add)할지 혹은 완전히 교체(Replace)할지 선택할 수 있습니다.
- 에지(Edge) 구간 시청각(A/V) 동작 동기화: 에지 주석(Edge annotations)의 audio_visual_settings 필드를 통해 로봇이 특정 구간을 통과할 때 수행할 A/V 동작을 직접 지정할 수 있습니다. (기존처럼 콜백을 작성하거나 위치를 별도로 모니터링할 필요가 없습니다.)
- 피드백 개선: NavigationFeedbackResponse에 goal_status 필드가 추가되어, 로봇이 목적지에 도달하는 세부 진행 상태를 모니터링할 수 있습니다.
- 경로 막힘 시 후진(Backtrack) 옵션: RouteGenParams 메시지에 backtrack_to_start_waypoint 속성이 추가되어, 로봇이 막힌 공간에 갇혔을 때 새로운 경로를 탐색하기 전 시작 웨이포인트로 안전하게 후진하도록 설정할 수 있습니다.
안무 제어 (Choreography)
- 타임라인의 기준 단위로 타임코드 및 프레임 번호(Frame number)를 선택할 수 있으며, 붉은색 슬라이더(Red Slider)에 현재 위치 시간이 표기됩니다.
- 로봇 관리 테이블(Robot Management table)에 각 로봇의 통신 불량(Poor Comms) 및 단절(Comms Loss)을 경고하는 알림이 추가되었습니다.
- Settings 메뉴에서 연결된 로봇의 A/V 설정을 직접 조작할 수 있습니다.
- 초보자 모드(Beginner mode)에서도 Animation 이동 타입(Move type)을 활용할 수 있도록 개선되었습니다.
데이터 처리 및 코어 기능 (Image / Logging / State)
- 16-bit 이미지 바이트 스왑 버그 수정: 원격 소스에서 16-bit 이미지를 리틀 엔디안(Little-endian) 기반의 로컬 시스템으로 가져올 때 바이트 스왑이 누락되어 이미지가 깨지던 버그를 수정했습니다. (image.py의 write_pgm_or_ppm 메서드)
- 데이터 수집 캡처 순서 지정: 단일 검사(Inspection) 노드 내에서 데이터 캡처의 우선순위를 명시할 수 있는 order 필드가 추가되었습니다.
- 로깅(Logging) 기능 강화:
- LogStatusService에 실험용 로그보다 가벼운 소용량 동시 로깅 타입이 추가되었습니다.
- DataBufferLoggingProcessor가 추가되어 클라이언트의 모든 Protobuf RPC 송수신 내역을 데이터 버퍼에 쉽게 자동 기록할 수 있습니다. (processors.py의 log_all_rpcs 헬퍼 사용)
- 로봇 상태(Robot State): 시스템 장애(System faults) 메시지에 고장 진단 코드(DTC, Diagnostic Troubleshooting Code)가 추가되었습니다.
- 시간(Time) 함수 프록시 전환: 시뮬레이션 환경 등에서 로봇 타임과 리얼 타임의 동기화 오차를 방지하기 위해, SDK 전반의 time.time() 호출이 bosdyn.util의 프록시 클록(Proxy clock) 기반으로 일괄 변경되었습니다.
로봇 명령어 및 미션 노드 제어 (Missions / Commands)
- 목표 궤적 모니터링: 제어 명령을 직접 내리지 않은 클라이언트라도, RobotCommandFeedbackRequest의 command_id를 비워둔 채 호출하면 현재 활성화된 이동 명령의 목표 궤적 및 속도 정보(request_information)를 조회할 수 있습니다.
- 미션 내 자율화 식별 키 지정: 외부 자율화 시스템이 미션의 Prompt(질문) 노드를 쉽게 판별할 수 있도록 식별 문자열인 autonomy_key 필드가 추가되었습니다.
- Prompt 블랙보드 연동: Prompt 노드의 커스텀 파라미터를 블랙보드에서 동적으로 불러올 수 있습니다. (custom_params_in_blackboard)
4. 샘플 코드 업데이트 (Sample Code)
현장 구축을 돕기 위해 Spot SDK 및 Orbit 예제 코드가 업데이트되었습니다.
Spot SDK 주요 업데이트
- GraphNav Command Line: 신규 UploadSnapshots RPC를 우선 사용하고, 미지원 버전일 경우 하위 호환을 위해 기존 방식(UploadWaypointSnapshot)으로 폴백(Fallback)하도록 수정되었습니다.
- GPS: 연결 단절 시 NTRIP 클라이언트가 재연결 요청을 스팸(Spam)처럼 보내 서버에서 차단당하던 버그가 수정되었습니다. 또한 u-blox F9R 수신기가 GNSS-only 모드로 설정되지 않던 버그도 수정되었습니다.
- Log Status: 신규 소용량 동시 로깅 기능을 사용하는 코드가 추가되었습니다.
- Xbox Controller: E-Stop(비상 정지) 트리거 시 스크립트가 리소스를 정리하고 깔끔하게 종료(Clean exit)되도록 개선되었습니다.
Orbit SDK 주요 업데이트
- Orbit Client: Orbit의 데이터 수집 인프라(Data acquisition)에서 리소스 파일을 직접 가져올 수 있는 get_resource_from_data_acquisition 헬퍼 메서드가 추가되었습니다.