Files
orisys-sdk/examples
2026-09-27 19:21:55 +08:00
..
配置没写的滤波键等于"关",不再回落到会滤波的默认值 - What: DEFAULT_FORCE_MEDIAN_WINDOW 3 -> 1、DEFAULT_FLOW_EMA_ALPHA 0.5 -> 1.0(DEFAULT_FORCE_LOWPASS_HZ 本就是 0.0),并把注释改成"配置文件没写的键就是关,而不是我们觉得合理的那一档"——原因写在注释里:否则设备会去滤一个没人要求滤的测量,而文件里没有任何线索;实测的延迟/降噪数据保留在注释中,作为 balanced/low_noise 预设的依据。docs/filters.md 第 2 节增加"缺省 = 关"这一条并说明没有 filters 段的配置什么都不滤,预设表里 balanced 的用途由"默认建议"改为"建议起步档"(它不再是默认值)。examples/filters/README.md 补一句"整段删掉等价于 off"。tests/test_filter_presets.py 新增 test_a_config_with_no_filters_block_filters_nothing:把 box bundle 的 filters 段整段删掉后构造真实 Sensor,断言 filters_state() 报 ema 1.0 / median 1 / cutoff 0.0 且 any_stage_applied 为 False。 - Why: 上一版只把"非法值"改成回落到关,但"键根本不写"仍会走 DEFAULT_* 从而把 EMA 0.5 + 中值 3 打开——这与"配置自描述、文件说什么就跑什么、出厂默认全关"矛盾,且现实里存在大量没有 filters 段的手写配置(例如 _perf/cfg_res_280x300.json),它们会在无人察觉的情况下继续滤波。缺省开是这条链上最后一个隐藏默认值。 - Verification: 删掉 filters 段后实测 filters_state() = (1.0, 1, 0.0) 且 any_stage_applied=False,出厂 box/mini/finger 三份同样为全关;pytest tests/test_filter_presets.py + tests/test_calibration.py → 33 passed;SDK 全量 336 passed / 15 skipped(唯一失败仍是需要 1200 帧而样例只有 577 帧的 longrun 测试);app 侧 studio 85 项与 shared 142 项测试、ui_check 554 项检查在升级后的 0.5.2 下全绿。 - Not in this change: 出厂 bundle 的三个显式值未动(本来就全关);_perf 的两个校验脚本不在仓库内,已就地补上显式 filters 段(balanced)以保持"开 vs 关"对照仍有意义;app 侧 wrapper/齿轮/CSV 17 列未动。
2026-09-14 10:53:33 +08:00
2026-09-27 19:21:55 +08:00
2026-09-27 19:21:55 +08:00
2026-09-27 19:21:55 +08:00
2026-09-27 19:21:55 +08:00
2026-09-27 19:21:55 +08:00
2026-09-27 19:21:55 +08:00
2026-09-27 19:21:55 +08:00
2026-09-27 19:21:55 +08:00
2026-09-27 19:21:55 +08:00

Examples

Runnable demos live at the examples/ root. Shared helpers stay in pipeline/, viz/, and gui/. Run commands from the repository root.

Product Entry Points

Product Entry Default config
ORY-BOX basic_pipeline.py box
ORY-MINI mini_pipeline.py mini
ORY-FINGER (2D) finger_pipeline.py finger
ORY-FINGER (3D Qt) finger_pipeline_3dview.py finger

finger is the public ORY-FINGER config stem. dd02 remains a compatibility alias for dd02-ov.

Typical Usage

ORY-BOX:

python examples/basic_pipeline.py -v 0 -c box

ORY-MINI:

python examples/mini_pipeline.py -v 0 -c mini

ORY-FINGER 2D:

python examples/finger_pipeline.py --camera_id 0 --config finger

ORY-FINGER video file:

python examples/finger_pipeline.py --video ./data/sample.mp4 --config finger

ORY-FINGER 3D Qt dashboard:

pip install -e ".[gui]"
python examples/finger_pipeline_3dview.py --video 0 --config finger

Other Root Examples

  • plot_data.py — single-sensor OpenCV views plus PyQtGraph force charts
  • two_sensor_pipeline.py — two-sensor multiprocessing demo

Requirements

  • SDK installed from the repository root, for example pip install -e .
  • camera index or test video path
  • matching config names under ./config/ (or packaged orisys/configs/)

Qt / PyQtGraph examples additionally require:

pip install -e ".[gui]"

Notes

  • finger_pipeline_3dview.py is the main interactive finger demo. It uses gui/app_paths.py so the same entry works in editable and packaged runs.
  • Dashboard controls: click 启动 to start acquisition; use Record CSV / Stop CSV and the CSV save-directory browser to log contact/force data; Q quits, R resets, S starts video recording, E stops video recording, and Esc toggles fullscreen.
  • finger_pipeline.py is the leanest finger example if you want to validate UV unroll + force/contact processing without the full dashboard.