时间: 2020-11-22|49次围观|0 条评论

之前看到一个外国人用iPhone做了一个追踪磁铁的Demo感觉不错(参考视频:http://v.youku.com/v_show/id_XODM2MjczNzE2.html),然后我就参考做了一个Android上的,视频如下http://v.youku.com/v_show/id_XODQ3MDgzMTUy.html(这个视频并非最终的效果)。下面是算法的介绍,希望有兴趣的朋友可以参考或者提出意见。

 

1:原理介绍:

现在基本上每一款智能手机都配有磁感应计,所以只要利用磁感应计记录当前手机位置的磁场强度,然后就可以根据磁场强度计算出磁铁的位置进行追踪。因此追踪磁铁就是找出磁场强度和位置的关系。

 

2:磁场强度公式:

因为磁场强度的分布和磁铁的形状等各种因素有关,为了便于计算一般把一块磁铁等价看作为一个"磁偶极子",当手机和磁铁的距离远大于磁铁本身时才可以这么等价。我的理解 "磁偶极子"就是一段电流围绕着一个"轴"做不停地旋转,然后产生的磁场(不知对不对有知道的可以给出意见,但是不理解并不影响最终的效果)。而"磁偶极子"的磁场强度和位置的关系是已经知道的,如下图:图1是磁场强度和位置的关系公式(感兴趣的可以查看推导:http://www.physicsinsights.org/dipole_field_1.html,或者查阅各种论文)。其中利用智能手机(Android)追踪一块磁铁(一)插图为磁场强度,利用智能手机(Android)追踪一块磁铁(一)插图1为对应的空间位置,利用智能手机(Android)追踪一块磁铁(一)插图2为磁偶极矩矢量方向为z轴向上,表示磁铁的北极朝上,是磁铁的属性针对每一块磁铁为常数。利用智能手机(Android)追踪一块磁铁(一)插图3是常数(具体什么忘了,不影响最终结果)。图2位磁铁和位置的空间关系图。

利用智能手机(Android)追踪一块磁铁(一)插图4

图1

利用智能手机(Android)追踪一块磁铁(一)插图5

图2

根据上述的矢量关系可以得出以下的公式,如图3,图4:图4的公式是从图3变换过来的。其中利用智能手机(Android)追踪一块磁铁(一)插图6利用智能手机(Android)追踪一块磁铁(一)插图7为对应的利用智能手机(Android)追踪一块磁铁(一)插图8与z轴正方向的夹角。

利用智能手机(Android)追踪一块磁铁(一)插图9

图3

利用智能手机(Android)追踪一块磁铁(一)插图10

图4

 

3:解方程:

知道了位置和磁场强度的关系,下面就是根据公式解出向量利用智能手机(Android)追踪一块磁铁(一)插图11对应的x,y,z的值。首先根据图4中的公式,利用利用智能手机(Android)追踪一块磁铁(一)插图12利用智能手机(Android)追踪一块磁铁(一)插图13表示利用智能手机(Android)追踪一块磁铁(一)插图14利用智能手机(Android)追踪一块磁铁(一)插图15,然后消去利用智能手机(Android)追踪一块磁铁(一)插图16得到利用智能手机(Android)追踪一块磁铁(一)插图17的值(具体方法可以自行推导,需要注意换元后是一个关于利用智能手机(Android)追踪一块磁铁(一)插图18的一元二次方程有两个解,又因为利用智能手机(Android)追踪一块磁铁(一)插图19是距离大于0,所以只需要取一个正值)。接出来利用智能手机(Android)追踪一块磁铁(一)插图20的值如图5,其中利用智能手机(Android)追踪一块磁铁(一)插图21

利用智能手机(Android)追踪一块磁铁(一)插图22

图5

根据利用智能手机(Android)追踪一块磁铁(一)插图23和图4的公式可以得出利用智能手机(Android)追踪一块磁铁(一)插图24的值(这里假设利用智能手机(Android)追踪一块磁铁(一)插图25,一下会说明为什么),然后根据利用智能手机(Android)追踪一块磁铁(一)插图26利用智能手机(Android)追踪一块磁铁(一)插图27的值可以得出z值,再根据图3的公式可以得出x,y的值。所以最终的结果如图6。其中利用智能手机(Android)追踪一块磁铁(一)插图28为常数,利用智能手机(Android)追踪一块磁铁(一)插图29。根据这个公式就可以计算出磁铁相对于手机(传感器)的位置。

利用智能手机(Android)追踪一块磁铁(一)插图30

图6

 

4:补充说明:

如图7,由于磁铁的磁感应线是轴对称和中心对称的所以A和B两个点的磁感应强度是一样的,即磁感应的方向和大小均相同。所以根据磁感应强度计算的位置应该是两个即A和B的坐标,但是我们只需要一个坐标,所以将设利用智能手机(Android)追踪一块磁铁(一)插图31即可。

假如手机(传感器)只在x轴的正方区域,那么根据磁感应线的方向可以判断利用智能手机(Android)追踪一块磁铁(一)插图32的大小。比如,如果Bx大于0表示利用智能手机(Android)追踪一块磁铁(一)插图33,Bx小于0表示利用智能手机(Android)追踪一块磁铁(一)插图34。从而可以判断利用智能手机(Android)追踪一块磁铁(一)插图35的正负从而得到准确的坐标。

利用智能手机(Android)追踪一块磁铁(一)插图36

图7

 

如图7中的C点在x-y平面上表明C点的磁场强度为(0,0,Bz),即xy轴上的磁场强度均为0。这是从z轴的上方向下看,可以看到图8的情形,叉号磁感应线向下插入。在图8中x-y平面圆上的所有点的磁场强度均相同即为(0,0,Bz),所以磁场强度(0,0,Bz)对应着无数个坐标点,因此在平面x-y上是没办法利用上述公式的!!!。

利用智能手机(Android)追踪一块磁铁(一)插图37

图8

 

5:结论:

按理说依照上述公式就可以定位磁铁的位置了,但是代码阶段还是遇到了一些问题。在下篇博客中将说明遇到的问题和解决办法。有兴趣和问题的可以给出意见。

转载于:https://www.cnblogs.com/amazingyyc/p/4208423.html

原文链接:https://blog.csdn.net/weixin_30342827/article/details/97355667

本站声明:网站内容来源于网络,如有侵权,请联系我们,我们将及时处理。

本博客所有文章如无特别注明均为原创。
复制或转载请以超链接形式注明转自起风了,原文地址《利用智能手机(Android)追踪一块磁铁(一)
   

还没有人抢沙发呢~