본문으로 이동

v3.5.0

1년 전 API를 전면 개편한 이후 가장 중요한 업데이트입니다. 버전 3.5.0에서는 통합된 3D 수학 레이어, Minverse 에 대한 완벽한 지원, 유형이 지정된 이벤트 스트림, 포괄적인 매개변수 API, 그리고 더욱 간결해진 HTTP 인터페이스가 도입되었으며, 이 모든 기능에는 지난 1년 동안의 버그 수정 및 사용 편의성 개선 사항이 반영되어 있습니다.

강점​

  • 통합 3D 수학적 레이어 — 기기 기본 좌표계(프레임), 편집 변환, 작업 공간 변환 및 탐색 변환을 위한 기본 연산자를 갖춘 모듈식 변환 파이프라인으로, 로컬 공간, 세션 공간, 애플리케이션 공간 및 내부 공간 간의 명시적 변환 기능을 제공합니다.
  • 버블 내비게이션 — 속도(velocity)에 연동된 속도 제어, 히스테리시스를 고려한 충돌 감지, 커서 방향으로의 선택적 편향을 통해 정의된 형태의 영역(SDF 프리미티브)을 따라 광활한 가상 작업 공간을 탐색할 수 있습니다. HTTP 및 WebSocket을 통해 완전히 구성 가능하며, 애플리케이션 공간 내에서 양방향 통신이 지원됩니다.
  • 유형별 이벤트 스트림 — 기기 수명 주기, 보안 경고, 보정, 배터리 상태, 점검 주기 알림 및 지원 종료 안내를 위한 전용 WebSocket 이벤트 채널.
  • 매개변수 API — HTTP CRUD 작업, 유형 지정, 범위 제약 조건 및 설명을 지원하는 포괄적인 키-값 매개변수 시스템으로, 기존의 중첩된 구성 파일을 대체합니다.
  • 일관된 기기 구성 — 각 기기에 대해 하나의 HTTP 경로 세트만: basis, mount, preset, transform, filters, handedness, torque_scaling, gravity_compensation, home_return.
  • Minverse 와 스타일렛의 동기화된 보정 — 이제 기기와 스타일렛이 함께 보정되며, 그립이 물리적으로 고정되지 않은 상태에서는 보정 상태가 잠겨 있습니다.
  • HTTP의 인체공학적 개선 사항 — 인덱스를 통한 장치 선택기(식별자 없이 인덱스로 장치를 지정), WebSocket과 공통된 통합된 요청 및 응답 형식, 래퍼 {ok, error, data} 활성화 가능 (?format=json) 및 와일드카드 세션 선택기.

새로운 기능​

기기​

  • Minverse — 이 버전에 공식적으로 지원되는 기능: 감지, 시작 절차, 보안 알림 및 동기화된 보정 흐름.
  • 루코와 킹피셔는 공식 핸들 유형으로 인정받고 있습니다.
  • 기기 시뮬레이터 지원 — 실제 하드웨어와 병행하여 소프트웨어로 시뮬레이션된 기기를 감지하고, 해당 기기와 통신합니다.
  • 연결 루프 방지 — 비정상적으로 작동하는 포트는 자동으로 차단됩니다. 다음 명령을 사용하여 해당 포트를 재설정하십시오. POST /ports/{port}/reset.
  • 스타일러스 고정 상태 표시 — 핸들의 장착 및 분리 상태를 안정적으로 감지하며, 반동 방지 기능이 적용되어 있습니다.

세션, 요청 및 WebSocket​

  • 세션 프로필 필터링 및 지속성 — 세션은 프로필 이름과 필요한 SDK 버전을 선언하며, 서비스는 재접속 시마다 이를 기억합니다. 클라이언트와 모니터링 도구는 이 프로필을 기준으로 세션을 필터링하고 대상으로 지정할 수 있습니다.
  • 세션별 명령 탭 — 느린 세션이 다른 세션을 더 이상 차단할 수 없습니다.
  • 사전 configure 일회성 주문에 한해 명시적으로 — basis, preset, mount, force_gate, damping 기기별, 그리고 profile et basis 세션별로, 이제 모두 다음 위치에 통합되어 있습니다. configure. 이 사전은 출력본과 일치하도록 구성되어 있으므로, 사용자가 입력한 내용이 그대로 출력된 결과물에 반영됩니다.
  • 사용자 정의 가능한 장치 조립 — 내장된 작업 공간 사전 설정을 선택하세요 (defaults, arm_front, arm_front_centered, led_front, led_front_centered) 또는 명시적인 변환을 전송하십시오. 편집 내용을 수동으로 수정하면 프리셋이 자동으로 custom.
  • 명명된 명령 필드 — position, vector, angles et torques 일반 테이블을 대체합니다 values.
  • set_angular_torques 바꾸다 set_angular_torque (단수형은 비하적인 뉘앙스가 있다).
  • 세션 프레임 확장 — v3.0 및 v3.1 세션 프레임은 이제 확장 가능한 객체를 전달합니다. config, state et status; 새로운 출력 필드에는 다음이 포함됩니다. current_cursor_force, current_cursor_position, current_angular_torques, current_angular_position, control_domain, control_mode, transform, transform_velocity, 들판 config.* 풍요롭게 하고 status.safety (기본적으로 숨김).
  • 변환에 대한 부분적인 업데이트 — 수정할 하위 필드만 보내주십시오 (position, rotation, scale) 편집, 작업 공간의 변형 및 탐색 방식에 관하여.

HTTP​

  • GET / — 서비스 버전.
  • GET/POST/DELETE /settings et /settings/* — 키-값 매개변수에 대한 전체 API.
  • GET /sessions/{session} et GET/POST/DELETE /sessions/{session}/profile.
  • GET /devices?session=<selector> — 특정 세션의 적용 공간 내에서 기기의 좌표를 변환합니다.
  • 색인별 기기 선택기 — 기기 식별자를 알 필요 없이, 인덱스를 통해 어떤 기기든 지정할 수 있습니다 (/inverse3/0/... 첫 번째 Inverse3; /inverse*/*/... (Inverse 제품군의 모든 기기에 적용됩니다).
  • 요청 및 응답의 통합 구조 — POST/GET 요청 본문은 동일한 구조를 사용합니다 command_data JSON이든 WebSocket이든, 한 전송 프로토콜을 위해 작성된 코드는 다른 프로토콜에서도 작동합니다.
  • 활성화 가능한 봉투 출처: ?format=json 어떤 도로에서든; /settings* et GET /home_return utilisent {ok, error, data} 기본값. 다음을 사용하십시오. ?format=plain 초기 구조를 얻기 위해.
  • 세션 선택자의 범용 문자 — * (모든 시퀀스) 및 ? 프로필 이름에 (한 글자)만 포함되어야 합니다.
  • 선택기의 백분율 분석 — %2A, %3A, 등등은 라우팅 전에 디코딩됩니다.

행사​

  • 전용 WebSocket 이벤트 스트림, 다음에서 확인하세요: communication/events/port.
  • 24가지 유형의 이벤트 범주, 특히 기기 수명 주기, 안전(전자식 브레이크, 이물질 감지, 잠김), 보정 실패, 배터리 경고, 세션 경고, 낮은 또는 심각한 점검 빈도, 입력 검증 및 감가상각 표시 등이 포함됩니다.

가시성​

  • 프로파일링 시 심각도 수준에 따라 색상이 지정된 로그 메시지가 트레이시에게 전송되었습니다.
  • 각 HTTP 관리자에 대한 트레이시 영역.
  • 메인 루프의 시간 통계 이벤트.
  • 로깅 디렉터리와 서버 호스트 이름을 구성할 수 있습니다(Docker 호환).

버전 3.6에서 제공될 예정​

  • SDF 햅틱 효과(SDF HFX) — 버전 3.5에서는 기반 구조(모듈, 라이프사이클, 모듈에서 제공하는 명령 및 상태의 직렬화)가 마련되었으며, 공개 API는 버전 3.6에서 완전한 문서와 함께 제공될 예정입니다.

개선 사항​

  • 힘 진동 필터링 — 축별 진동 감지, 8단계 점진적 복구, 히스테리시스가 적용된 입력 투표 및 비대칭 릴리스 윈도우.
  • 실행 시 강제 도어 필터 — 다음을 통해 설정 가능 configure.force_gate.gain WebSocket 또는 HTTP를 통해, 지속되는 기본값을 사용하여.
  • 정밀도 요구가 높은 애플리케이션을 위해 메인 루프의 최대 주파수가 32 kHz로 향상되었습니다.
  • WebSocket 유틸리티 요금 인하 — 기본적으로 항등 변환을 수행하는 하위 변환 영역 (position = 0, rotation = identity, scale = 1)는 기본적으로 출력에서 제외되는데, 이를 통해 페이로드 크기를 줄이고 이전 Unity 패키지의 메시지당 4KB 제한과의 호환성을 회복합니다. 두 가지 고급 설정(serialization/explicit_fields, serialization/force_complete_transforms)는 필요한 소비자를 위해 모든 필드를 복원합니다.
  • 메인 루프의 부하 감소 — WebSocket 메시지 처리가 JSON 파싱 및 네트워크 전송 중에 메인 루프 사이클을 더 이상 차단하지 않으며, 세션 사이클 스케줄링이 응답 직렬화 단계보다 앞서 수행되도록 조정되었습니다.
  • 서버는 기본적으로 localhost로 제한됩니다. — 다음 매개변수를 사용하여 네트워크 액세스를 활성화하십시오. communication/bind_all_interfaces.
  • 기기 선택자의 와일드카드는 접두사 구문을 사용합니다. (예: inverse* (Inverse 제품군의 모든 기기에 해당합니다).
  • 감가상각 명령어 사전 내에서 위치가 변경되었습니다 configure, ~ 옆에서 force_gate.
  • 기존 로테이션 파일 로깅 시스템이 새로운 시스템으로 대체되었으며, 이 시스템은 구성 가능한 디렉터리를 지원합니다.
  • 모듈에서 제공하는 명령 및 상태 — 모듈은 기본 스키마를 변경하지 않고도 WebSocket 프레임에 자체 명령, 구성 필드 및 상태 출력을 삽입할 수 있습니다.

정정 사항​

1년 동안의 버그 수정 내역; 그중 가장 중요한 사항들은 다음과 같습니다.

  • 특정 조건에서 세션 속도가 불안정합니다.
  • 시뮬레이션이 실행 중이지 않을 때 GripHook(Verse Grip Stopper) 이 제대로 해제되지 않는 문제가 있었습니다.
  • Inverse3 의 대기 시간이 너무 짧게 설정되어 있어, 부팅 속도가 느린 기기에서는 연결이 끊어지는 현상이 반복적으로 발생했습니다.
  • Windows에서 서비스가 제대로 종료되지 않음 — 종료 시 HTTP 서버가 항상 정리되지는 않았습니다.
  • 서비스가 이전 버전의 펌웨어에 지원되지 않는 명령을 전송할 때 발생하는 재연결 루프.
  • 블루투스 어댑터가 장착된 시스템에서는 블루투스 기기 목록이 로그를 가득 채우고 있었다.
  • 서비스가 연속으로 여러 번 재시작되었을 때 발생하는 오류.
  • Ubuntu 노트북에서 절전 모드 후 다시 깨어났을 때 Verse Grip 무선 동글이 작동하지 않습니다.
  • 이제 Linux 및 macOS에서 Verse Grip의 무선 연결 과정이 첫 번째 감지 시도가 실패할 경우 대체 방식으로 올바르게 전환됩니다.
  • macOS에서 구성 파일의 위치 — 설정이 이제 다음 위치에 저장되었습니다. ~/Library/Application Support/ 예전에는 틀렸던 그 길 대신.
  • Linux 및 macOS에서 SIGSEGV 신호 처리 — 멀티스레드 크래시 캡처가 활성화된 경우, 프로세스가 치명적인 신호로 인해 무한 루프에 빠지지 않습니다.
  • 세션 간 명령어 덮어쓰기 — 한 세션의 구성 명령어가 다른 세션의 명령어로 아무런 경고 없이 덮어쓰일 수 있었으나, 이제 해당 명령어들이 적절하게 필터링되고 병합됩니다.
  • 프로브 명령이 설정을 덮어씁니다 — 모니터링 세션(예: Haply Hub)에서 전송하는 probe_position 더 이상 기본값, 사전 설정 또는 프로필에 대한 대기 중인 변경 사항을 조용히 덮어쓰지 않습니다.
  • 시제품 손잡이 표시 — 시제품 부품이 사용자 지정 손잡이가 아닌 표준 손잡이로 잘못 표시되었습니다.
  • 상속된 행렬 약정 set_basis 아직 마이그레이션을 완료하지 않은 고객을 대상으로 해당 기능이 다시 지원됩니다.
  • Inverse3 의 세션 종료 시 발생하는 충격력은 더 이상 잔류 힘의 급증을 일으키지 않습니다.
  • 빠른 연결 및 연결 해제 주기가 반복되는 동안 WebSocket 연결이 끊어질 때의 실행 조건.
  • 웹소켓 session_id 다음에 연재되었습니다. 0 일부 출하 화물에서.
  • Windows에서는, --log-level 이제 다음과 결합될 때 준수됩니다. --dev (이전에는 조용히 다음으로 재설정되었는데, debug).

구식화​

현재는 여전히 작동하지만, 향후 주요 버전 업데이트에서 제거될 예정입니다. 답변에는 입력란이 포함되어 있습니다. deprecation_warning 해당되는 경우.

구식교체
POST /force_scalePOST /settings/devices/inverse*/filters/force_scale/gain
POST /gravity_compensationPOST /{device}/{id}/config/gravity_compensation
POST /torque_scalingPOST /{device}/{id}/config/torque_scaling
POST /device_handednessPOST /{device}/{id}/config/handedness
POST /serial_enablePOST /settings/communication/serial/enabled
POST /experimental/features/grip_dropped_simulation_stopper매개변수 API
POST /experimental/features/screensaver_enable매개변수 API
웹소켓 command_data.valuesposition, vector, angles, torques
웹소켓 set_angular_torqueset_angular_torques
웹소켓 probe_cursor_positionprobe_position
웹소켓 set_coordinate_originconfigure.preset
웹소켓 set_basis 세션 차원에서configure.basis

호환성 참고 사항​

3.4.19 버전과 비교해 호환성에 중대한 영향을 미치는 변경 사항은 없습니다. 기존 통합 기능과 관련하여 두 가지 사소한 사항이 있습니다:

  1. 더 이상 사용되지 않는 HTTP 엔드포인트에는 이제 다음 필드가 포함됩니다. deprecation_warning 응답에서 — 응답 스키마를 엄격하게 검증하는 클라이언트는 이 추가 필드를 허용해야 합니다.
  2. Le champ values WebSocket에서 command_data 이 필드는 더 이상 사용되지 않지만 여전히 분석 대상에 포함됩니다. 이름이 지정된 필드를 우선적으로 사용하십시오.

튜토리얼 및 문서​

  • 새로운 튜토리얼: 05 위치 제어, 06 복합형(Inverse3 + Verse Grip), 07 기본 및 설치, 08 HTTP 원격 구성 도구, 09 WebSocket 원격 제어, 10 이벤트 스트림 수신기.
  • 글레이즈의 새로운 변형 각 C++ 튜토리얼의 (cpp-glz/), 기존의 nlohmann/json 변형에 추가로.
  • 모든 튜토리얼이 새로 작성되었습니다. API v3.1의 경우 (포트 10001, configure.preset, 지정된 명령 필드, 도움말 기능 print_state()).
  • 기존 ‘Verse Grip Stopper’ 튜토리얼이 삭제되었으며, 새로운 ‘Combiné’ 튜토리얼로 대체되었습니다.
  • SDK 가이드, API 참조 및 하드웨어 관련 페이지의 공개 문서가 업데이트되었습니다.