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

Spot SDK 1.1.0 릴리즈 노트

Spot SDK 1.1.0 릴리즈 노트

배포 라이선스 안내

Spot 1.1.0 SDK 소프트웨어는 새로운 소프트웨어 라이선스 정책이 적용되어 배포됩니다. 관련 세부 사항은 SDK 디렉터리 최상단의 LICENSE 파일에서 확인하실 수 있습니다.

1. 신규 기능 (New Features)

  • ImageService 개선 (Depth Map 지원): Spot의 내장 스테레오 카메라에서 추출된 깊이 맵(Depth map)을 추가 이미지 소스로 제공합니다. ImageType 속성을 통해 깊이 맵과 일반 흑백(Grayscale) 이미지를 구분하여 호출할 수 있습니다.
  • PayloadService 추가: 로봇에 장착 및 인식된 모든 페이로드(Payload)의 목록을 반환하는 신규 서비스가 도입되었습니다.
  • SpotCheckService 추가: 액추에이터(Actuator) 및 카메라 캘리브레이션(Calibration)을 원격 및 프로그래밍 방식으로 실행할 수 있는 신규 서비스가 도입되었습니다.
  • E-Stop 소프트 타임아웃 (Soft Timeouts): 기존에는 E-Stop 엔드포인트의 통신(Check-in)이 끊어질 경우 로봇 모터의 전원이 즉각 차단되어 낙하 등의 위험이 있었습니다. 이번 업데이트를 통해 전원 차단 전 Spot이 안전하게 '앉기(Sit)' 동작을 수행하도록 유예 시간을 구성할 수 있습니다. timeout 파라미터로 앉기 동작의 시작 시점을, cut_power_timeout 파라미터로 실제 전원 차단 시점을 제어합니다.
  • 지형 정보 파라미터 (TerrainParams) 추가: MobilityParams에 지형 정보를 제공하는 TerrainParams가 추가되었습니다. 지면의 마찰 계수(Coefficient of friction)를 직접 설정하거나, 바닥 면이 격자형 금속(Grated metal)인지 여부를 시스템에 전달하여 보행 안정성을 높일 수 있습니다.
  • 대용량 로그 파일 지원: 대용량 바이너리 데이터를 처리하기 위한 신규 Log Annotations 타입인 'Blob'이 추가되었습니다.

2. 샘플 코드 개편 및 추가 (Sample Code)

Python 예제 디렉터리의 구조가 python/examples 하위의 개별 디렉터리 형태로 재편되었습니다. 또한, 각 예제별로 의존성 패키지 설치를 위한 requirements.txt 파일이 포함되었습니다.

  • estop: 로봇의 E-Stop 엔드포인트를 생성하는 데스크톱 GUI 유틸리티로, E-Stop 시스템의 구축 및 연동 방법을 학습할 수 있습니다.
  • follow_fiducial: 내장 카메라로 AprilTag 마커를 인식하고 추적하는 예제입니다. 카메라의 내부/외부 파라미터(Intrinsics/Extrinsics)를 활용한 픽셀-월드 좌표계 변환 및 Trajectory Command 제어법을 제공합니다.
  • get-image: Spot에서 이미지를 수신하여 디스크에 저장하는 ImageService의 기본 사용 예제입니다.
  • get-payload: PayloadService를 통해 로봇의 전체 페이로드 목록을 조회하는 예제입니다.
  • get_robot_state: 로봇의 현재 상태 데이터를 수신 및 확인하는 기본 예제입니다.
  • hello_spot: (기존 유지) Spot SDK의 기본적인 사용법을 다루는 입문용 튜토리얼입니다.
  • logging: Spot의 로그 파일에 사용자 지정 주석(Custom annotations)을 추가하는 예제입니다.
  • spot_check: 현장에서 캘리브레이션을 수행하는 SpotCheck 서비스의 연동 예제입니다.
  • spot_light: 전면 카메라에 플래시 라이트(Flashlight)가 감지될 경우, Spot이 제자리에서 회전하여 빛을 마주보도록 하는 비전 연동 데모입니다.
  • spot_tensorflow_detector: Spot SDK와 TensorFlow 연동하여 이미지 기반 객체 분류(Object classification)를 수행하는 머신러닝 통합 예제입니다.
  • time_sync: 로봇과 클라이언트 간의 시간 동기화를 위한 TimeSync 서비스 사용 예제입니다.
  • wasd: (기존 유지) 키보드로 로봇을 수동 제어하며 다양한 명령어를 테스트할 수 있는 인터랙티브 프로그램입니다.
  • xbox_controller: Xbox 컨트롤러를 활용하여 이동 명령(Mobility commands)의 고급 옵션을 제어하는 예제입니다.

3. 버그 수정 및 개선 사항 (Bug Fixes and Improvements)

  • 보안 및 인증 강화: 무차별 대입 공격(Brute-force attack)을 방지하기 위해 잘못된 로그인 시도가 초과될 경우 일정 시간 동안 인증이 잠금 처리됩니다. 이 상태는 GetAuthTokenResponse에서 STATUS_TEMPORARILY_LOCKED_OUT 코드로 반환됩니다.
  • 통신 최적화: 사용자 토큰에 타원 곡선 암호화(ECDSA)를 적용하여 RPC 요청 크기를 수백 바이트 단위로 경량화했습니다.
  • 호환성 개선: Python 3 환경에서 gRPC 예외(Exceptions)가 정상적으로 처리되도록 수정되었습니다.
  • CLI 툴(Command-line tool) 기능 개선: 로봇의 유니코드(Unicode) 닉네임을 정상적으로 인식 및 처리합니다. 로봇 모델 정보(URDF 및 Object files) 조회 기능을 지원합니다. 한 번의 명령으로 다수의 이미지를 동시에 가져올 수 있도록 개선되었습니다.
  • 버전 및 경로 인식 수정: 소프트웨어 버전에 대한 "Strict Version" 검증 및 표기를 지원합니다. 앱 토큰(App Token) 경로에 포함된 틸드(~) 기호가 환경에 맞춰 정상적으로 확장되도록 수정되었습니다.
  • 이동 제어(Mobility Command) 버그 픽스: MobilityParams.vel_limit 속성 지정 시 최소(min) 또는 최대(max) 속도 중 하나만 입력할 경우 로봇이 멈추던 버그를 수정했습니다. BodyControlParams.base_offset_rt_footprint.reference_time의 값이 과거 시점으로 입력된 경우, 모호한 STATUS_INVALID_REQUEST 오류 대신 정확하게 STATUS_EXPIRED 상태 코드를 반환하도록 수정되었습니다. SE2VelocityCommands에서 slew_rate_limit가 지정되지 않았을 때 로봇이 제자리걸음만 하던 현상을 수정했습니다.

4. 지원 중단 및 주요 호환성 변경 (Deprecations and Breaking Changes)

⚠️ 개발자 주의 사항: 기존 애플리케이션을 1.1.0 버전으로 마이그레이션할 때 다음 사항을 반드시 확인하시기 바랍니다.

  • Python 2.7 지원 종료: Python 2의 공식 수명 종료(End-of-Life)에 따라, 이번 SDK부터 Python 3.6 이상의 환경만 지원합니다. (Windows 10, MacOS, Ubuntu LTS 운영체제는 정상 지원됩니다.)
  • HINT_PACE 지원 중단: 물리적인 보행 안정성 문제로 인해 HINT_PACE LocomotionHint 상수 지원이 완전히 제거되었습니다. 시스템으로 HINT_PACE 옵션을 전송할 경우, 내부적으로 HINT_JOG 모드로 강제 치환되어 동작합니다.
  • 보행 힌트 상수명 변경 (Deprecated): 기존 HINT_AUTO_TROT 및 HINT_AUTO_AMBLE 상수의 사용이 중단(Deprecated)되었습니다. 향후 개발 시에는 각각 HINT_SPEED_SELECT_TROT, HINT_SPEED_SELECT_AMBLE 명칭으로 변경하여 적용해야 합니다.
  • Protocol Buffer 구조 변경: 클라이언트 앱에서 프로토콜 버퍼(Protocol Buffer)를 참조할 때, 서비스(Services)와 메시지(Messages)가 물리적으로 분리된 디렉터리로 재배치되었습니다. 기존 코드에서 프로토콜 버퍼를 직접 임포트(Import)하여 사용 중인 경우 1.1.0 버전에 맞춘 경로 수정이 필요합니다.
SPOT Updates 목록으로 돌아가기