Java 使用Android音频和方向传感器的机械安全开裂

Java 使用Android音频和方向传感器的机械安全开裂,java,android,algorithm,android-sensors,Java,Android,Algorithm,Android Sensors,我正在编写一个应用程序,帮助锁匠进行安全操作,主要是通过动态创建他们需要的图表。当试图通过操纵进入保险箱时,需要对“车轮组”进行详细分析,并通过绘制“门”上方“栅栏”的相对深度来完成。如果所有闸门在组件上对齐,围栏杆将落入凸轮闸门,锁将打开。如果有人对更详细的解释感兴趣,你可以在这里找到Matt Blaze的精彩治疗(从3.3开始):www.crypto.com/papers/safelocks.pdf 制作图表很重要,它真正需要的是一遍又一遍地准确测量表盘上的两个位置,并记录两个声音之间的表盘

我正在编写一个应用程序,帮助锁匠进行安全操作,主要是通过动态创建他们需要的图表。当试图通过操纵进入保险箱时,需要对“车轮组”进行详细分析,并通过绘制“门”上方“栅栏”的相对深度来完成。如果所有闸门在组件上对齐,围栏杆将落入凸轮闸门,锁将打开。如果有人对更详细的解释感兴趣,你可以在这里找到Matt Blaze的精彩治疗(从3.3开始):www.crypto.com/papers/safelocks.pdf

制作图表很重要,它真正需要的是一遍又一遍地准确测量表盘上的两个位置,并记录两个声音之间的表盘距离。所以,假设“下降”点在10到15之间,声音事件可能发生在11.5到14.5,或者下一次可能发生在12和15。锁匠绘制了一张这些数字之间的距离图表,并在图表上查找,比如,缩小的数字,或者可能只是图表上的最低位置

我正在通过我的Androids耳机插孔使用一个老式的无线棚屋电话拾音器(吸盘麦克风),来收听声音事件。为了精确测量拨号盘上发生事件的位置,我简单地用velcro将手机安装到拨号盘上,然后使用SensorManager根据手机从音频尖峰事件旋转到尖峰事件的距离来计算声音之间的距离。这很好,但我不想把电话挂在拨号盘上。有几家公司曾经通过网络摄像头查看拨号盘本身来实现这一点,但这似乎比仅仅安装手机要精确得多,因为我可以使用分数旋转度获得更高的精度


一旦你进入下降位置,你总是会敲击一个声音,然后将刻度盘备份到下一个声音,所以我想我可以简单地,听声音事件,然后一旦刻度盘将方向倒转到下一个声音事件,但这需要刻度盘以恒定的速度移动,这在现实生活中不会发生。我想我可以用dynamixel或伺服来为锁匠移动刻度盘,但同样,这不是一个好的解决方案。所以我的问题是,你们这些聪明人中是否有人能想出一种方法,在不将手机安装到拨号盘上的情况下,量化这些相关速率(声音事件之间的距离和拨号位置的变化)?

这不是一个完整的答案,但我可以向你们提出一些想法:

从控制系统工程师的角度来看,我可以告诉你,在不直接接触轴的情况下,准确测量旋转的方法是使用一个传感器

因此,您可以使用读取编码器(通过Arduino)来读取将安装在刻度盘上的编码器(可能在编码器轴上放置一个橡胶盘,并将其与安全刻度盘接触)

这样做只是为了避免将整个手机粘在拨号盘上,从而获得更高的精度


另一种方法是在拨号盘上附加一些其他东西,这些东西会产生
点击
噪音,您可以对声音进行过滤,以区别于安全声音。但这肯定会降低精度。

这不是一个真正的编程问题,因此与主题无关。然而,它在书中获得了“年度最佳问题”奖:)我怀疑一个熟练的锁匠比任何伺服器都能更好地转动安全刻度盘。为什么不让锁匠把数字输入键盘呢?这是不是太分散了锁匠的注意力了?@Gilbert我同意他们可以把刻度盘转得更好,但他们使用视觉辅助工具来帮助他们,比如刻度盘上的一个标签,可以将刻度盘的度数分成四分之一或八分之一。电话传感器可以更精确地测量这些分数度,并为您绘制图表,因此锁匠不需要在刻度盘的每一圈都停止他正在做的事情。不要混淆精度和准确性。Android方位传感器返回的结果非常精确,但我怀疑它的准确度是否接近那么高。你可以将手机安装在拨号盘前面,将声音与拍摄拨号盘的高分辨率照片结合起来。现代手机的摄像头要比旧的网络摄像头好得多,所以你也许可以知道学位在哪里。另外,你可以用一个定制的磁盘来帮助相机,你可以把它粘在刻度盘上,让它有一个清晰的图像来观看。哇,这是两个非常好的主意。编码器可以与手机一起安装在保险箱门上,触摸表盘的侧面而不是正面。正在找我的树莓皮。如果没有人建议只用电话,你一定会得到我的接受。向你致敬,先生。嗯,除了是一名安卓系统开发人员外,我还是一名控制系统工程师,在传感器和控制器方面工作了多年。所以这对我来说容易一点。但谢谢=)编码器的另一个替代方案是类似Trackmate条形码的东西,它可以使用OSS软件检测图像中的旋转。