카카오톡 문의 N 공식 블로그 공식 유튜브

SPOT Updates

패치 노트 및 제품 최신 업데이트

Major · 2025. 12.

Spot SDK 5.1.0 릴리즈 노트


배포 안내

이번 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 헬퍼 메서드가 추가되었습니다.