Haply SDK 3.5.0
1년 전 API를 전면 개편한 이후 가장 큰 규모의 업데이트입니다. 버전 3.5.0에서는 통합된 3D 수학 계층, Minverse에 대한 완벽한 지원, 유형이 지정된 이벤트 스트림, 포괄적인 매개변수 API, 더욱 간결해진 HTTP 인터페이스가 도입되었으며, 지난 1년 동안의 버그 수정 및 사용 편의성 개선 사항도 포함되어 있습니다.
주요 내용
통합 3D 수학적 레이어 — 프레임, 편집 변환, 작업 공간 변환 및 탐색 변환을 위한 1차 원시 요소를 갖춘 조합 가능한 변환 파이프라인으로, 로컬 공간, 세션 공간, 애플리케이션 공간 및 내부 공간 간의 명시적인 변환 기능을 제공합니다.버블 내비게이션 — 정의된 형태의 영역(SDF 프리미티브)을 통해 넓은 가상 작업 공간을 탐색하며, 속도에 비례하는 유량 제어, 히스테리시스를 고려한 충돌 감지, 커서 쪽으로의 선택적 편향을 지원합니다. HTTP 및 WebSocket을 통해 완전히 구성 가능하며, 애플리케이션 공간 내에서 양방향 통신이 가능합니다.유형별 이벤트 스트림 — 기기 수명 주기, 보안 경고, 보정, 배터리 상태, 점검 주기 알림 및 지원 종료 알림을 위한 전용 WebSocket 이벤트 채널.매개변수 API — HTTP CRUD 작업, 유형 지정, 범위 제약 조건 및 설명을 지원하는 포괄적인 키-값 매개변수 시스템으로, 기존의 중첩된 구성 파일을 대체합니다.기기 간 일관된 구성 — 각 기기에 대해 하나의 HTTP 경로 세트만: 기준, 마운트, 사전 설정, 변환, 필터, 손잡이, 토크 스케일링, 중력 보정, 홈으로 돌아가기.Minverse와 스타일렛의 동기화된 보정 — 이제 기기와 스타일렛이 함께 보정되며, 손잡이가 물리적으로 고정되지 않은 상태에서는 보정 상태가 유지됩니다.HTTP의 사용자 편의성 개선 — 인덱스를 통한 기기 선택기(ID 없이 인덱스로 기기를 지정), WebSocket과 공유되는 통합된 요청 및 응답 구조, 래퍼 {성공, 오류, 데이터} 활성화 (?format=json) 및 제네릭 세션 선택기.새로운 기능
기기
Minverse — 이번 버전에 공식 지원 기능이 포함되었습니다: 감지, 준비 절차, 보안 알림 및 동기화된 보정 워크플로.루코와 킹피셔가 공식 핸들 제품 유형으로 인정받았습니다.기기 시뮬레이터 지원 — 실제 하드웨어와 병행하여 소프트웨어로 시뮬레이션된 기기를 감지하고 통신합니다.연결 루프 방지 — 오류가 발생한 포트는 자동으로 차단되며, 다음 명령어로 재설정할 수 있습니다. POST /ports/{port}/reset.스타일러스 고정 상태 표시 — 핸들의 장착 및 분리 상태를 안정적으로 감지하며, 반동 방지 기능이 적용되어 있습니다.세션, 요청 및 WebSocket
세션 프로필 필터링 및 지속성 — 세션은 프로필 이름과 필요한 SDK 버전을 선언하며, 서비스는 재접속 시마다 이를 기억합니다. 클라이언트와 모니터링 도구는 이 프로필을 기준으로 세션을 필터링하고 대상으로 지정할 수 있습니다.세션별 명령 탬프 — 느린 세션이 다른 세션을 더 이상 차단할 수 없습니다.일회성 명령어를 위한 `configure` 상세 사전 — 기준, 사전 설정, 마운트, 포스 게이트, 감쇠 기기별, 그리고 프로필 et 기준 세션당, 이제 모두 다음 위치에 통합되었습니다. 설정 — 출력 구성 사전과 일치하도록 설정되어 있으므로, 전송하는 내용이 다시 읽어들이는 내용과 일치합니다.사용자 정의 가능한 장치 조립 — 내장된 작업 공간 사전 설정을 선택하세요 (기본값, 팔 앞쪽, 팔 앞쪽 중앙, 전면 LED, led_front_centered) 또는 명시적인 변환을 전송하십시오. 편집 내용을 수동으로 수정하면 프리셋이 자동으로 사용자 지정.명명된 명령 필드 — 위치, 벡터, 각도, 토크 일반 테이블을 대체합니다 가치.각운동량 설정 바꾸다 각운동량 설정 (단수형은 비추천됩니다).세션 프레임 확장 — 세션 프레임 v3.0 및 v3.1에는 이제 확장 가능한 객체가 포함됩니다. 설정, 상태 et 상태; 새로운 출력 필드에는 다음이 포함됩니다. 현재 커서 강제, 현재 커서 위치, 현재 각속도, 현재 각도 위치, 제어 도메인, 제어 모드, 변환, 변환 속도, des config.* 풍요롭게 하고 상태.안전 (기본적으로 숨김).변환에 대한 부분적인 업데이트 — 수정하려는 하위 필드만 보내주십시오 (위치, 회전, 규모) 편집, 작업 공간의 변형 및 탐색 방식에 관하여.HTTP
GET / — 서비스 버전.GET/POST/DELETE /settings et /설정/* — API complète de paramètres clé-valeur.GET /sessions/{session} et GET/POST/DELETE /sessions/{session}/profile.GET /devices?session=<selector> — 특정 세션의 적용 공간 내에서 기기의 좌표를 변환합니다.색인별 기기 선택기 — 기기 식별자를 알 필요 없이, 인덱스를 통해 어떤 기기든 지정할 수 있습니다 (/inverse3/0/... 첫 번째 Inverse3; inverse... (Inverse 제품군의 모든 기기에 적용됩니다).통합된 요청 및 응답 구조 — POST/GET 요청 본문은 동일한 JSON 구조를 사용합니다. 명령 데이터 WebSocket의 경우, 한 전송 프로토콜을 위해 작성된 코드가 다른 전송 프로토콜에서도 작동합니다.선택적 봉투 출처: ?format=json 모든 도로에서; /설정* et GET /home_return utilisent {성공, 오류, 데이터} 기본값. 다음을 사용하십시오. ?format=plain 초기 구조를 얻기 위해.세션 선택자 내의 와일드카드 — * (임의의 문자열) 및 ? 프로필 이름에 (한 글자)만 포함되어야 합니다.백분율로 표시된 선택기 — %2A, %3A, 등등은 라우팅 전에 디코딩됩니다.행사
WebSocket 전용 이벤트 스트림: 커뮤니케이션/행사/항구.기기 수명 주기, 안전(긴급 제동, 이물질 감지, 정지), 보정 오류, 배터리 경고, 세션 경고, 낮은 또는 심각한 명령 빈도, 입력 검증 및 비추천 알림 등 24가지 유형의 이벤트 범주가 포함됩니다.가시성
프로파일링 과정에서 트레이시에게 전송된 로그 메시지. 심각도 수준에 따라 색상이 구분되어 있습니다.각 HTTP 관리자에 대한 트레이시 영역.메인 루프의 시간 통계 이벤트.로깅 디렉터리와 서버 호스트 이름을 구성할 수 있음 (Docker에 최적화됨).버전 3.6에서 제공될 예정
SDF 햅틱 효과(SDF HFX) — 버전 3.5에서 기반이 마련되었으며(모듈, 라이프사이클, 모듈에서 제공하는 명령 및 상태의 직렬화), 공개 API는 버전 3.6에서 완전한 문서와 함께 제공될 예정입니다.개선 사항
힘 진동 필터링 — 축별 진동 감지, 8단계 점진적 복구, 히스테리시스가 적용된 입력 투표 및 비대칭 이완 창.실행 시 강제 게이트 필터 — 다음을 통해 설정 가능 configure.force_gate.gain WebSocket 또는 HTTP를 통해, 지속되는 기본값과 함께.정밀도 요구가 높은 애플리케이션을 위해 메인 루프의 최대 주파수가 32 kHz로 향상되었습니다.WebSocket 유틸리티 요금 인하 — 기본값이 항등 변환인 변환 하위 영역 (위치 = 0, 회전 = 신분 변환, 축척 = 1)는 기본적으로 출력에서 제외되며, 이를 통해 페이로드 크기를 줄이고 이전 Unity 패키지의 메시지 4KB 제한과의 호환성을 회복합니다. 두 가지 고급 설정(직렬화/명시적 필드, 직렬화/변환 강제 완료)는 해당 정보가 필요한 소비자를 위해 모든 필드를 다시 포함합니다.메인 루프의 부하 감소 — JSON 파싱 및 네트워크 전송 중 WebSocket 메시지 처리가 더 이상 메인 루프 사이클을 차단하지 않으며, 세션 사이클 스케줄링이 응답 직렬화 단계보다 앞선 시점에 배치되었습니다.서버는 기본적으로 localhost로 제한됩니다. — 다음 매개변수를 사용하여 네트워크 액세스를 활성화하십시오. 통신/모든 인터페이스 바인딩.기기 선택자의 와일드카드는 접두사 구문을 사용합니다. (예: inverse (Inverse 제품군의 모든 기기에 해당합니다).감가상각 명령어 해당 객체 내로 이동되었습니다 설정, ~ 옆에서 포스 게이트.회전 파일 방식의 저장이 이전 방식을 대체하며, 디렉터리를 사용자 정의할 수 있습니다.모듈에서 제공하는 명령 및 상태 — 모듈은 기본 스키마를 변경하지 않고도 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)에서 전송하는 탐침 위치 더 이상 대기 중인 기본 설정, 사전 설정 또는 프로필 변경 사항을 조용히 덮어쓰지 않습니다.시제품 손잡이 표시 — 시제품 부품이 사용자 지정 손잡이가 아닌 표준 손잡이로 잘못 표시되었습니다.아직 마이그레이션을 완료하지 않은 클라이언트에 대해 `set_basis` 매트릭스 컨벤션이 다시 준수되도록 했습니다. Inverse3 의 세션 종료 시 발생하는 힘의 충격은 더 이상 잔류 힘의 급증을 일으키지 않습니다.빠른 연결 및 연결 해제 주기가 반복되는 동안 연결이 끊어질 때 발생하는 WebSocket 경쟁 조건.WebSocket `session_id` 다음과 같이 연재되었습니다. 0 일부 출하 화물에서.Windows 에서, --로그 수준 이제 다음과 결합될 때 준수됩니다. --dev (이전에는 조용히 다음으로 재설정되었는데 디버그).감가상각
현재는 여전히 작동하지만, 향후 주요 버전 업데이트 시 제거될 예정입니다. 답변에는 입력란이 포함되어 있습니다. 사용 중단 경고 해당하는 경우.
| 구형 | 교체 |
|---|---|
| POST /force_scale | POSTinverse |
| 게시물 /중력_보정 | POST /{device}/{id}/config/gravity_compensation |
| 게시물 /토크_스케일링 | POST /{device}/{id}/config/torque_scaling |
| POST /device_handedness | POST /{device}/{id}/config/handedness |
| POST /serial_enable | POST /settings/communication/serial/enabled |
| POST /experimental/features/grip_dropped_simulation_stopper | 설정 API |
| POST /experimental/features/screensaver_enable | 설정 API |
| WebSocket command_data.values | 위치, 벡터, 각도, 토크 |
| WebSocket 각운동량 설정 | 각운동량 설정 |
| WebSocket 포인터 위치 | 탐침 위치 |
| WebSocket 좌표 원점 설정 | configure.preset |
| WebSocket 기저 설정 세션 차원에서 | configure.basis |
호환성 참고 사항
3.4.19 버전과 비교해 중대한 호환성 문제는 없습니다. 기존 통합 기능과 관련하여 두 가지 사소한 사항이 있습니다:
더 이상 권장되지 않는 HTTP 엔드포인트에는 이제 다음 필드가 포함됩니다. 사용 중단 경고 응답에서 — 응답 스키마를 엄격하게 검증하는 클라이언트는 이 추가 필드를 허용해야 합니다.Le champ 가치 WebSocket 명령 데이터 더 이상 권장되지는 않지만 여전히 분석 대상이므로, 이름이 지정된 필드를 우선적으로 사용하십시오.튜토리얼 및 문서
새로운 튜토리얼: 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 참조 및 하드웨어 관련 페이지의 공개 문서가 업데이트되었습니다.