跳转至主要内容

教程

每个教程都是一个独立的程序,用于演示 Inverse Service 的某项功能。教程中并列提供了三种语言版本,以便您比较不同的编程风格,并选择适合您项目的技术栈:

  • Python — 最短、最简单的切入点(websockets + json)
  • C++ (nlohmann/json)— 兼容 C++11,运行时解析 JSON
  • C++ (Glaze)— 现代 C++20,支持编译时反射和无内存分配的分析,推荐用于实时触觉循环

源代码发布在两个公开的示例代码库中:

  • haply — 每个教程一个目录,包含 nlohmann/json(C++11)和 Glaze(C++20)两种变体。编译目标的后缀为 -glz 适用于“Glaze”版本。
  • haply-inverse-python-samples— 每个教程一个目录。

Inverse Service 的每个版本都会在两个代码库中打上相应的标签:请关注该分支 release/<version> 以确保始终使用与本文档对应的版本。

先决条件​

  • 逆向服务 正在运行(通过 Haply Hub ou via le简体中文(大陆) 独立安装程序) 在港口 10001.
  • 已检测到至少一台Haply 设备。每个教程针对特定的设备系列;请参见下表。
  • Python 教程 : pip install websockets (教程 04、05、06、07、08 和 09 还需 keyboard,这在 Linux 上需要较高的权限;教程 08 和 09 同样需要 requests).
  • C++ 教程 : CMake 3.15 及以上版本,以及适用于 nlohmann 变体的 C++11 编译器,适用于 Glaze 变体的 C++20 编译器(-glz). Le CMakeLists.txt 从示例存储库中检出第一级内容 libhv, nlohmann/json et glaze 通过 FetchContent:无需手动配置依赖项。

教程列表​

#Nom设备变体您将学到什么
00设备清单TousPy · C++ · C++ GlazeHTTP 设备发现,请求仅限于当前会话
01显示Inverse3Inverse3Py · C++ · C++ GlazeWebSocket 状态传播、零开销连接维护、首次消息交换
02VerseGrip 展示有线VGPy · C++ · C++ Glaze方向的扩散,与……保持联系 probe_orientation, 四元数转欧拉角
03无线VG显示屏WVGPy · C++ · C++ Glaze按钮、电池、霍尔传感器
04你好,FloorInverse3Py · C++ · C++ Glaze首要触觉效果:罚球弹簧 set_cursor_force
05位置控制Inverse3Py · C++ · C++ Glaze控制 set_cursor_position, 随机目标(C++)或长按WASD键移动(Python)
06CombinéInverse3 WVGPy · C++ · C++ Glaze多设备循环,基于四元数的向量方向控制光标
07底座与安装Inverse3Py · C++ · C++ Glaze运行时替换 configure.basis, configure.preset et configure.mount ; 预设与编辑之间的相互排斥
08HTTP 远程配置Inverse3Py · C++ · C++ Glaze专用于 HTTP 的跨会话配置器:按配置文件发现会话,然后通过 REST 以 POST 方式交互式发送基础数据/预设/剪辑
09WS遥控器Inverse3Py · C++ · C++ Glaze实时工作区浏览器:发现 HTTP 会话和设备,然后分发 set_transform 每个周期通过 WebSocket
10活动—Py · C++ · C++ Glaze监听端口 10020 上的事件流,按级别和名称进行过滤

技巧——测量触觉回路的性能​

教程 10(事件)的设计初衷是可与任何其他教程并行进行。通过 --no-hide-rate 启用后,它会显示该事件 system-rate-report 该服务的参数,其中包括设备的实际循环频率。请比较同一教程中 Python / C++(nlohmann) / C++(Glaze)这几种实现版本之间的该频率,以观察序列化开销对约 4 kHz 控制循环的影响。

# Terminal 1 — pick a tutorial variant
./04-haply-inverse-hello-floor # C++ nlohmann
./04-haply-inverse-hello-floor-glz # C++ Glaze
python 04-haply-inverse-hello-floor.py # Python

# Terminal 2 — watch the rate
./10-haply-inverse-events --no-hide-rate