半球检测
半球检测(Hemisphere Detection)
AMFITRACK 在传感器启动定位时,需要判断传感器位于 EMF Source(电磁场发射器) 的哪一侧,以确定初始位置是否正确。这个过程称为半球检测(Hemisphere Detection)。
选项:Use Plane for Hemisphere Detection(使用平面进行半球检测)
该选项用于定义传感器如何根据参考平面(Reference Plane)确定自己的合法启动位置。
启用此功能后,AMFITRACK 会建立一个参考平面,并根据传感器位于平面的哪一侧(即哪个“半球”)来判断是否允许初始化。
注意:
与 Assume Plane for Hemisphere Detection(假定平面半球检测) 不同,一旦该算法完成初始化,其结果将被锁定,除非:
跟踪丢失(Tracking Lost)
系统重新初始化
否则无法重新覆盖当前的半球判断结果。
Hemisphere Detection Normal Vector(半球检测法向量)
该组参数用于定义参考平面的**法向量(Normal Vector)**方向。
包括三个参数:
Hemisphere detection normal vector X
Hemisphere detection normal vector Y
Hemisphere detection normal vector Z
这三个值共同决定了:
参考平面的朝向。
AMFITRACK 根据法向量方向判断:
法向量所指的一侧即为允许初始化的有效半球(Valid Hemisphere)。
示例:传感器位于 Source 上方
设置:
Hemisphere detection normal vector X = 0 Hemisphere detection normal vector Y = 0 Hemisphere detection normal vector Z = 1
结果:
法向量沿 Z 轴正方向(向上)
系统认为 Source 上方半空间为有效启动区域
当传感器放在 Source 上方时,可以正确初始化
法向量也可以设置为其它方向,例如:
Source 前方
Source 后方
Source 下方
Source 左右两侧
从而改变允许启动的位置。
理解法向量(Normal Vector)
法向量定义了三维空间中的一个方向。
它告诉 AMFITRACK:
哪一侧属于合法启动区域。
坐标定义如下:
X 轴
指向:
Source 后方(USB 接口所在的一侧)
Y 轴
指向:
Source 的右侧
Z 轴
指向:
Source 的正上方
三个数值共同组成一个方向向量。
数值可以是任意浮点数,不要求一定是:
0 1 -1
AMFITRACK 只关心方向,不关心长度。
常见法向量示例
| X | Y | Z | 含义 |
|---|---|---|---|
| 0 | 0 | 1 | 上方(传感器位于 Source 上面) |
| 0 | 0 | -1 | 下方(传感器位于 Source 下面) |
| 1 | 0 | 0 | Source 后方(USB 接口方向) |
| -1 | 0 | 0 | Source 前方(USB 对面) |
| 0 | 1 | 0 | Source 右侧 |
| 0 | -1 | 0 | Source 左侧 |
| -1 | 0 | 1 | 前上方(45°方向) |
例如:
(-1,0,1)
表示:
法向量同时朝:
前方
上方
因此有效半球就是:
Source 前上方约 45° 的半空间。
注意
法向量长度不会影响结果。
例如:
(0,0,1) (0,0,5) (0,0,100)
三者效果完全相同。
系统只计算方向,而不计算长度。
如何选择合适的法向量
官方建议按照以下步骤进行:
① 先考虑实际使用环境
思考:
传感器通常会从 Source 的哪个方向开始工作?
例如:
上方
前方
右前方
同时考虑整个可能的启动空间,而不仅是一个点。
② 手动启动传感器
确认:
系统已经进入
Tracking
状态。
并在多个位置、多种姿态下验证跟踪是否正常。
③ 将传感器放到跟踪区域中心
把 Sensor 放在:
未来最常工作的中心位置。
记录当前:
X
Y
Z
位置。
姿态(Orientation)不用考虑。
④ 将该位置作为 Normal Vector
把记录的位置坐标填入:
Hemisphere Detection Normal Vector
以后系统就会把这个方向作为默认合法启动方向。
Hemisphere Detection Distance Threshold(半球检测距离阈值)
该参数定义:
传感器距离参考平面的最小允许距离。
如果:
Sensor 到参考平面的距离
小于
Distance Threshold
则:
系统不会接受该半球判断。
也就是说:
会在平面附近形成一个:
Dead Zone(死区)
在死区内:
不会执行半球检测。
为什么需要它?
如果:
你的启动区域:
穿过参考平面
非常靠近平面
那么容易发生:
初始化错误
半球判断错误
这时:
可以使用:
Hemisphere Detection Distance Threshold
限制允许启动的位置。
阈值较小时
优点:
允许更多启动位置。
缺点:
错误启动(Incorrect Autostart)概率增加。
阈值较大时
优点:
可靠性更高。
缺点:
用户必须把传感器放得更远离参考平面才能启动。
启动要求更加严格。
选项:Assume Plane for Hemisphere Detection(假定平面半球检测)
该功能与
Use Plane for Hemisphere Detection
采用相同算法。
但增加了一次:
自动验证(Verification)
它的区别在于:
即使:
启动时放错了半球,
系统仍然有机会:
自动修正。
具体过程如下:
① 正常启动
完成初始化。
开始 Tracking。
② 进入
Verifying Hemisphere
(验证半球)
状态。
③ 根据运动重新判断
系统观察:
传感器之后的运动轨迹。
利用这些运动信息:
重新判断:
初始半球是否正确。
④ 必要时修正
如果验证发现:
最初判断错误。
系统会:
覆盖(Overwrite)
之前的 Tracking 结果。
一般来说:
修正后的结果会更加准确。
不过官方说明:
极少数情况下,重新修正也可能出现误判。
⑤ 进入 Tracking
验证结束后:
状态变为:
Tracking
此时:
半球已经锁定。
以后:
除非:
跟踪丢失(Tracking Lost)
否则不会再次修改半球判断。
两种模式对比
| 功能 | Use Plane for Hemisphere Detection | Assume Plane for Hemisphere Detection |
|---|---|---|
| 初始化时判断半球 | ✔ | ✔ |
| 启动后自动验证 | ✘ | ✔ |
| 启动放错位置可自动修正 | ✘ | ✔ |
| 验证阶段 | 无 | Verifying Hemisphere |
| Tracking 后还能修改 | 不能(除非跟踪丢失) | 验证完成后不能(除非跟踪丢失) |
| 可靠性 | 较高,但依赖初始放置正确 | 更高,对错误启动具有一定容错能力 |
总结
半球检测的核心目的是确保传感器在启动时建立正确的空间坐标关系。Use Plane for Hemisphere Detection 要求传感器一开始就位于预设参考平面的正确一侧,初始化完成后结果即固定;而 Assume Plane for Hemisphere Detection 在此基础上增加了一个 Verifying Hemisphere(半球验证) 阶段,即使初始放置位置不理想,也可能根据后续运动自动修正半球判断,因此在实际应用中具有更好的容错性。