주요 내용으로 이동

v3.5.1

3.5.1은 안정성과 품질을 중시한 릴리스 버전입니다. 주요 내용은 다음과 같습니다: 1↔1 Inverse3 + 핸들 구성에서의 자동 페어링; WebSocket 세션이 열려 있지 않은 상태에서,GET /devices/{id} 여전히 최신 동작 상태를 반환할 수 있으며, 힘/위치 모드 전환 시 발생하는 삐걱거리는 소음을 제거하고, 지속적인 고부하 상태에서도 자체적으로 조정되는 서비스 틱 스케줄러를 제공합니다.

하이라이트​

  • 1↔1 Inverse3 + 그립 장착 시 자동 페어링. Inverse3 와 그 그립이 모두 준비되면 SDK는 자동으로 페어링 관계를 등록합니다. 다중 기기 환경에서는,pen_attached Minverse 와의 동기화를 통해 잠금 해제 시 더 이상 잘못된 경로로 연결되지 않습니다.
  • 세션을 열지 않고도 최신 정보를 확인할 수 있습니다. GET /devices/{id} 스냅샷. 펌웨어 v7.5 이상 버전의 Inverse3 / Inverse3x / Minverse 는 이제 WebSocket의 활동 상태와 관계없이 20 Hz 간격으로 동작 상태를 폴링합니다. v7.5 이전 펌웨어는 이 폴링을 건너뛰고 경고 메시지를 한 번만 표시합니다.
  • 힘/위치 전환 시 더 이상 삐삐거리는 소리가 나지 않습니다. set_cursor_force ↔ set_cursor_position 전환에는 슬롯 배타 메커니즘이 적용됩니다. 두 틱 사이에는 각 장치마다 가장 최근의 명령어 하나만 유지됩니다.HARP 에 제시된 200ms 유휴 간격에 대한 임시 해결책은 더 이상 유효하지 않습니다.
  • 자동 조정형 틱 스케줄러. 메인 루프는 부하 상황에 따라 배포 속도를 자동으로 조정하여, 단일 틱이 느려지는 경우라도 명령어 큐가 무한정 늘어나는 것을 방지합니다.
  • 고부하 환경에서의 1-in-1-out 스트림 방식 복구. 각 세션에서 WS 메시지당 스트리밍 응답은 1/ms로 제한됩니다. 상한값을 초과하여 응답이 거부되면 이전 버퍼의 내용이 재전송되므로, 시뮬레이션 루프는 절대 recv() 위로.

내부 개선​

장비​

  • 기기별 Inverse3 ↔ VerseGrip 페어링 등록 목록. GET|POST|DELETE /devices/{sel}/paired_with 이는 장치별로 구분된 일대일 매핑입니다.POST 양측의 충돌하는 페어링을 제거합니다;DELETE 선택한 항목을 삭제합니다. 선택기는 고유한 ID로 해석되어야 합니다.
  • 펌웨어 v7.5 이상에서 20 Hz 동작 상태 폴링. GET /devices/{id} 50 ms마다 최신 정보를 반환합니다. cursor_position、cursor_velocity、angular_position、angular_velocity;활동 세션에 영향을 미치지 않습니다.
  • 무선 VerseGrip의 set_extension_data 속도 제어. “오래된 데이터 버리기 / 유휴 시 재전송” 방식의 파이프라인을 채택하고, 서비스 틱에서 데이터를 비워냅니다. 이렇게 하면 전송량이 과다해도 무선 링크가 포화 상태가 되지 않으며, 전송량이 부족해도 만료된 값이 남아 있지 않게 됩니다.

대화​

  • 제어 명령(힘/위치)만 포함된 배치에 대해 WS 수신 빠른 경로가 새로 추가되었으며, 이 경로는 센서 구성(configure) 처리 파이프라인을 건너뜁니다.configure / set_profile / 사용자 정의 명령도 여전히 경합 상태 해결 로직을 거치게 됩니다.

관측 가능성​

  • 로그 출력 빈도는 포트별로 구분되며, 지속 시간도 고려됩니다. 블랙리스트에 등재된 각 포트는 개별적으로 제어되며, 주기적으로 발생하는 "...blacklisted: skipping" 이제 로그 행에는 다음이 포함됩니다. (×N), 두 번의 트리거 사이에 무음 처리된 틱 횟수를 나타냅니다.
  • WVG 기기가 아닌 장치가 감지될 경우, 무선 VerseGrip 감지 기능이 더 이상 로그 화면을 과도하게 채우지 않습니다.

문제 해결​

  • 사용 POST /device.config.preset 그리고 지정하고 defaults 또는 arm_front 시,이제 장치의 마운트 설정을 공장 출하 시 기본값으로 재설정합니다(이전에는 아무런 작업도 수행하지 않는 무응답 처리였습니다).basis 유지되므로, 프리셋 변경 후에도 앱에서 설정된 베이스는 계속 유효합니다.
  • 일치하는 configure가 동일한 WS 메시지 내에 포함되어 도착할 때,force_render_full_state 더 이상 누락되지 않음 config 블록 스냅샷——configure 경로는 스냅샷 생성 전에 동기화 처리가 완료됩니다.
  • 세션 간 force_render_full_state 이제 대상 세션의 전체 스냅샷이 반환됩니다. A와 B는 이제 모두 전체 데이터를 수신할 수 있습니다(이전에는 A가 스트리밍 데이터만 수신했습니다).
  • 그때 target_session_id '알 수 없음' 상태에서는 세션 간 명령이 더 이상 요청-응답 루프를 중단시키지 않습니다. 요청자는 자신의 스냅샷과 함께 하나의 session-command-dropped 사건(cross-session-unknown-target).
  • Minverse 다중 장치 보정을 통해 더 이상 잘못된 라우팅이 발생하지 않습니다. Minverse A를 보정해도 더 이상 Minverse B가 잠금 해제되지 않습니다. inkwell-success의 헤딩 브로드캐스트에 대해서도 동일한 수정 사항이 적용되었습니다.
  • HTTP 장치 선택기 수락 #1234 와 1234 장치 ID로; 선택기 클래스(inverse3、verse_grip) 인덱스와 함께 사용할 수 있으며, 404 오류 메시지에서는 원래의 선택자 표현식이 유지됩니다.
  • 무선 VerseGrip의 ready 로고는 이제 초기 기기 정보 교환에 의존합니다.——이전에는 일부 재연결 경로에서, 장치가 아직 자체 정보를 완전히 보고하지 않은 상태에서도 이 플래그가 설정될 수 있었습니다.
  • keyed-rate-gate가 지원하는 설정에 대한 런타임 변경 사항은 이제 다음 히트 시점에 적용됩니다(이전에는 첫 번째 emplace 시점에 고정되어, 새 세션에서만 해당 변경 사항이 적용되었습니다).

잠재적으로 파괴적인 변경 사항​

  • HTTP의 404 오류 메시지가 통일되었습니다., 포함 basis、preset、mount、transform、force_gate:"{type} device #{id} not found" → "no device matches selector '{expr}'"。회화의 404도 마찬가지입니다.
  • 설정 항목 와일드카드 devices/inverse*/... → devices/*inverse/..., 힘 스케일링 이득, 힘 게이트 이득, 제어 타임아웃 및 safeties/expose_in_snapshot。구식 리터럴 경로를 사용하는 3.5.0 설정 파일은 바인딩할 수 없습니다.
  • 설정: 전역 항목의 직렬화 기능이 다음 위치로 이전되었습니다. session/serialization/*(explicit_fields、force_complete_transforms、preview/*). 이전의 serialization/* 이 경로는 더 이상 사용되지 않는 별칭을 통해 여전히 해석될 수 있습니다. 4.0 버전에서 제거될 예정입니다.
  • 동작 변경: 각 메시지에 대한 WS 응답을 틱 동기화 핸드셰이크에 사용하는 클라이언트의 경우, 지속적인 트래픽이 발생하는 상황에서 각 세션당 밀리초당 최대 한 번만 응답을 수신하게 됩니다. 구성 변경 시 생성되는 전체 스냅샷에는 영향을 미치지 않습니다.

사용 중단 항목​

3.5.1 버전에는 비추천 항목이 없습니다. 미리보기 메인 스위치는 곧 출시될 3.6 버전의 “무통보에서 경고로” 파이프라인에서 비추천될 예정인 인프라입니다. 첫 번째 비추천 일정은 3.5.2 버전으로 예정되어 있습니다.