直达径被遮挡问题
因为发射端是固定在耳机上的,所以直达径很容易被人的头部遮挡。
解决思路是在环境中部署多个接收端,使得不管发射端再什么位置,都有若干个接收端的直达径没有被遮挡。
多接收端定位问题
因为有多个接收端,而计算发射端位置并不需要这么多接收端。
解决思路是利用GPS的原理,从所有接收端里挑选三个信号最好的用于定位。
信号好坏的判定问题
人眼可以通过观察cir图主峰是否明显来判定直达径是否被遮挡,但是如何程序化地让计算机来判断。
解决思路是设定一个评价标准,用最高峰的强度除以其它所有点信号强度的平均值,如果这个比值超过一定阈值,则认为该接收端信号直达径没有被遮挡。
多径问题
在工位上进行实验时,因为发射端和接收端距离比较近以及工位环境比较复杂,所以多径的影响更严重。
解决多径的一个思路是根据发射端当前的位置计算出每一个接收端信号里主峰的理论位置,然后在这个理论位置左右选择一个比较小的区间,在这个区间内选取新的主峰计算距离。
实验记录
单发射端画了个五角星
数据编号:20210801_114924
戴耳机实验
数据编号:20210801_170052
六个自由度移动
数据编号:20210801_185446
存在的问题
方向向量朝向问题
已解决。初始化大概的朝向,每次都跟上一个向量做点积,如果小于零则取反。
实验环境的布置问题
现在只有六个接收端,而且是三个对应左发射端三个对应右发射端写死的。要想实现360度旋转可能需要八个接收端,工位每一面都布置两个。然后写一个接收端筛选的算法,使得每个发射端每次都选择三个信号质量最好的接收端。
轴点移动问题
把头部绕脖颈旋转的那个点叫做轴点。因为理论上要判断刚体旋转需要三个点的坐标,但是实验只能获得两个发射端(分别大概在左右耳的位置)的坐标,所以就需要推理出第三个点也就是轴点的坐标。
目前的思路是进行动作划分,把头部动作分为旋转、倾斜、俯仰三个转动动作和前后、左右、上下三个移动动作。
可以发现旋转、倾斜、俯仰这三个转动动作基本不会导致轴点移动,而前后、左右、上下三个移动动作基本必定导致轴点移动,更重要的是在只进行移动动作时,轴点与两个发射点的相对位置保持不变。
所以,如果不考虑复杂动作(转动和移动同时发生)只考虑简单动作(只转动或只移动),对于转动动作可以认为轴点不动,对于移动动作可以根据两个发射点的位置不断计算更新轴点位置。
该思路首先需要对动作进行分类,目前还没想到特别好的分类方法,只能通过两个发射端的移动特征来分类,比如如果左发射点向左下移动右发射点向左上移动,那么这个动作很可能是向左倾斜旋转,所以可以把每个动作导致的发射点的变化列出来作为特征,然后用这些特征来判断是哪个动作。这也是接下来要做事情。
但是这个问题的难点是有些动作很难区分,比如低头和前移,这两个动作反应的特征都是两个发射点前移,只不过低头动作的发射点还会下降,但是对于如果动作幅度很小的话可能比较难判断。
动作 特征 旋转(左) 左点向右后,右点向左前,二者上下不变 倾斜(左) 左点向左下,右点向左上,二者前后不变 俯仰(下) 左点向前下,右点向前下,二者左右不变 前后(前) 左点向前,右点向前,二者左右上下不变 左右(左) 左点向左,右点向右,二者前后上下不变 上下(上) 左点向上,右点向上,二者前后左右不变 (反方向动作特征相反)
分析发现,三类移动动作比较简单,或许可以放到一起讨论?如果左右两点动作特征一样那么就是移动动作(或者俯仰动作),(除俯仰动作外)都可以根据两点位置来更新轴点位置;如果左右特征不一样那么就是转动动作,则认为轴点位置保持不变。
流程:
左右点特征是否相同?
- 相同。移动动作或者俯仰动作。根据高度是否改变来判断是否为俯仰动作。
- 高度改变 –> 俯仰
- 高度不变 –> 移动动作
- 不相同。旋转动作。
- 相同。移动动作或者俯仰动作。根据高度是否改变来判断是否为俯仰动作。
旋转动作时,左右点特征特征?
- 左点向右后,右点向左前 –> 左旋转
- 左点向右前,右点向左后 –> 右旋转
- 左点向左下,右点向左上 –> 左倾斜
- 左点向右上,右点向右下 –> 右倾斜
- 左点向前下,右点向前下 –> 下俯仰
- 左点向后上,右点向后上 –> 上俯仰