菜鸟教程小白 发表于 2022-12-12 10:16:52

ios - CMMotionManager deviceMotion 姿态值中的 "flickering"过多


                                            <p>我正在记录从 <code>CMMotionManager deviceMotion</code> 获得的“态度”值在 CADisplayLink 回调中(我需要根据设备旋转执行动画)。<br><br>这些值似乎每隔几毫秒就会“抽搐”很大程度(高达 30%)。这似乎很不稳定,让我怀疑是我做错了什么还是设备有问题。<br><br>请在下面找到日志。打印的“Angle”是“attitude”的“roll”分量,换算成度数:<br><code>
<br/>2013-04-10 00:07:12.683 MyApp Angle: -92.91
<br/>2013-04-10 00:07:12.712 MyApp Angle: -70.52
<br/>2013-04-10 00:07:12.714 MyApp Angle: -92.25
<br/>2013-04-10 00:07:12.745 MyApp Angle: -70.03
<br/>2013-04-10 00:07:12.747 MyApp Angle: -91.74
<br/>2013-04-10 00:07:12.779 MyApp Angle: -69.67
<br/>2013-04-10 00:07:12.784 MyApp Angle: -91.23
<br/>2013-04-10 00:07:12.812 MyApp Angle: -69.43
<br/>2013-04-10 00:07:12.815 MyApp Angle: -91.19
<br/>2013-04-10 00:07:12.846 MyApp Angle: -69.53
<br/>2013-04-10 00:07:12.849 MyApp Angle: -91.33
<br/>2013-04-10 00:07:12.879 MyApp Angle: -69.74
<br/>2013-04-10 00:07:12.881 MyApp Angle: -91.57
<br/>2013-04-10 00:07:12.912 MyApp Angle: -70.01
<br/>2013-04-10 00:07:12.915 MyApp Angle: -91.85
<br/>2013-04-10 00:07:12.945 MyApp Angle: -70.13
<br/>2013-04-10 00:07:12.949 MyApp Angle: -91.99
<br/>2013-04-10 00:07:12.979 MyApp Angle: -70.03
<br/>2013-04-10 00:07:12.983 MyApp Angle: -91.93
<br/>2013-04-10 00:07:13.012 MyApp Angle: -69.76
<br/>2013-04-10 00:07:13.016 MyApp Angle: -91.71
<br/>2013-04-10 00:07:13.046 MyApp Angle: -69.34
<br/>2013-04-10 00:07:13.051 MyApp Angle: -91.19
<br/>2013-04-10 00:07:13.079 MyApp Angle: -68.89
<br/>2013-04-10 00:07:13.082 MyApp Angle: -90.94
<br/>2013-04-10 00:07:13.112 MyApp Angle: -68.52
<br/>2013-04-10 00:07:13.114 MyApp Angle: -90.66
<br/>2013-04-10 00:07:13.151 MyApp Angle: -67.85
<br/>2013-04-10 00:07:13.156 MyApp Angle: -89.47
<br/>2013-04-10 00:07:13.179 MyApp Angle: -65.66
<br/>2013-04-10 00:07:13.181 MyApp Angle: -88.10
<br/>2013-04-10 00:07:13.212 MyApp Angle: -63.81
<br/>2013-04-10 00:07:13.216 MyApp Angle: -86.33
<br/>2013-04-10 00:07:13.245 MyApp Angle: -61.07
<br/>2013-04-10 00:07:13.248 MyApp Angle: -83.63
<br/>2013-04-10 00:07:13.279 MyApp Angle: -58.95
<br/>2013-04-10 00:07:13.282 MyApp Angle: -81.46
<br/>2013-04-10 00:07:13.312 MyApp Angle: -56.71
<br/>2013-04-10 00:07:13.314 MyApp Angle: -79.06
<br/>2013-04-10 00:07:13.346 MyApp Angle: -53.29
<br/>2013-04-10 00:07:13.350 MyApp Angle: -75.23
<br/>2013-04-10 00:07:13.380 MyApp Angle: -51.63
<br/>2013-04-10 00:07:13.383 MyApp Angle: -73.37
<br/>2013-04-10 00:07:13.414 MyApp Angle: -50.35
<br/>2013-04-10 00:07:13.418 MyApp Angle: -72.11
<br/>2013-04-10 00:07:13.446 MyApp Angle: -50.08
<br/>2013-04-10 00:07:13.450 MyApp Angle: -72.01
<br/>2013-04-10 00:07:13.479 MyApp Angle: -50.50
<br/>2013-04-10 00:07:13.488 MyApp Angle: -73.51
<br/>2013-04-10 00:07:13.512 MyApp Angle: -51.25
<br/>2013-04-10 00:07:13.514 MyApp Angle: -74.14
<br/>2013-04-10 00:07:13.545 MyApp Angle: -49.98
<br/>2013-04-10 00:07:13.547 MyApp Angle: -72.96
<br/>2013-04-10 00:07:13.579 MyApp Angle: -46.99
<br/>2013-04-10 00:07:13.582 MyApp Angle: -68.58
<br/>2013-04-10 00:07:13.612 MyApp Angle: -43.01
<br/>2013-04-10 00:07:13.616 MyApp Angle: -65.32
<br/>2013-04-10 00:07:13.645 MyApp Angle: -40.92
<br/>2013-04-10 00:07:13.647 MyApp Angle: -62.80
<br/>2013-04-10 00:07:13.680 MyApp Angle: -39.70
<br/>2013-04-10 00:07:13.683 MyApp Angle: -61.30
<br/>2013-04-10 00:07:13.712 MyApp Angle: -40.74
<br/>2013-04-10 00:07:13.714 MyApp Angle: -63.06
<br/>2013-04-10 00:07:13.745 MyApp Angle: -42.29
<br/>2013-04-10 00:07:13.747 MyApp Angle: -65.68
<br/>2013-04-10 00:07:13.779 MyApp Angle: -43.18
<br/>2013-04-10 00:07:13.780 MyApp Angle: -67.58
<br/>2013-04-10 00:07:13.812 MyApp Angle: -42.13
<br/>2013-04-10 00:07:13.815 MyApp Angle: -66.35
<br/>2013-04-10 00:07:13.845 MyApp Angle: -40.95
<br/>2013-04-10 00:07:13.848 MyApp Angle: -64.67
<br/>2013-04-10 00:07:13.879 MyApp Angle: -39.73
<br/>2013-04-10 00:07:13.881 MyApp Angle: -62.90
<br/>2013-04-10 00:07:13.913 MyApp Angle: -40.06
<br/>2013-04-10 00:07:13.916 MyApp Angle: -63.12
<br/>2013-04-10 00:07:13.947 MyApp Angle: -40.78
<br/>2013-04-10 00:07:13.949 MyApp Angle: -63.39
<br/>2013-04-10 00:07:13.979 MyApp Angle: -41.51
<br/>2013-04-10 00:07:13.981 MyApp Angle: -62.78
<br/>2013-04-10 00:07:14.012 MyApp Angle: -42.06
<br/>2013-04-10 00:07:14.014 MyApp Angle: -61.77
<br/>2013-04-10 00:07:14.045 MyApp Angle: -43.89
<br/>2013-04-10 00:07:14.047 MyApp Angle: -61.02
<br/>2013-04-10 00:07:14.079 MyApp Angle: -45.41
<br/>2013-04-10 00:07:14.080 MyApp Angle: -61.20
<br/>2013-04-10 00:07:14.112 MyApp Angle: -46.93
<br/>2013-04-10 00:07:14.114 MyApp Angle: -61.53
<br/>2013-04-10 00:07:14.146 MyApp Angle: -49.21
<br/>2013-04-10 00:07:14.147 MyApp Angle: -62.76
<br/>2013-04-10 00:07:14.179 MyApp Angle: -51.34
<br/>2013-04-10 00:07:14.182 MyApp Angle: -64.51
<br/>2013-04-10 00:07:14.212 MyApp Angle: -53.39
<br/>2013-04-10 00:07:14.214 MyApp Angle: -66.41
<br/>2013-04-10 00:07:14.245 MyApp Angle: -56.29
<br/>2013-04-10 00:07:14.248 MyApp Angle: -69.30
<br/>2013-04-10 00:07:14.279 MyApp Angle: -57.85
<br/>2013-04-10 00:07:14.280 MyApp Angle: -70.88
<br/>2013-04-10 00:07:14.312 MyApp Angle: -60.23
</code><br>测量的角度每几毫秒“闪烁”近 20 度。根据我到目前为止所读到的有关 CoreMotion 的内容,我预计会出现错误,但不在此范围内。<br><br>我可能做错了什么 - 我没有衡量正确的事情吗?<br><br>编辑:下面的代码 - 抱歉格式化。 “代码”和“ block 引用”似乎都不能正常工作。<br><br> <blockquote>
<br/>//I&#39;m letting the user laze around a bit before starting the motion updates.
<br/>//At the moment this is in the form of a naive idle timer which is fired after
<br/>//the first 9 seconds of launching the app (just cause)
<br/>
<br/>
<br/>- (void)didFireIdleTimer:(id)theTimer {
<br/>   
<br/>    ;
<br/>    mReferenceAttitude = [[ attitude] retain];
<br/>   
<br/>    ;
<br/>}
<br/>
<br/>//sSharedMotionManager is an instance of CMMotionManager
<br/>
<br/>//Then, I&#39;m setting up a display link callback wherein the &#34;current&#34; deviceMotion
<br/>//is retrieved every time and the difference between the current &#34;attitude&#34;
<br/>//and reference &#34;attitude&#34; calculated. It is this difference that is
<br/>//converted to degrees and printed
<br/>
<br/>//This is the display link callback, lazily named. :)
<br/>- (void)didRefreshScreen:(id)sender {
<br/>   
<br/>    CMAttitude *thisAttitude = [ attitude];
<br/>    ;
<br/>
<br/>    NSLog(@&#34;Angle: %0.2f&#34;, thisAttitude.roll * 180 / 3.14159);
<br/>
<br/>    //Rest of the code
<br/>    //....
<br/>}
<br/></blockquote></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p>几个小时的测试证实问题是由 <code>deviceMotionUpdateInterval</code> 引起的未在 <code>CMMotionManager</code> 上设置实例。将其设置为 <code>1.0/60.0</code> (或任何其他有效值)修复此“闪烁”并导致值平滑变化。</p>
                                   
                                                <p style="font-size: 20px;">关于ios - CMMotionManager deviceMotion 姿态值中的&#34;flickering&#34;过多,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/15910402/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/15910402/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - CMMotionManager deviceMotion 姿态值中的 &#34;flickering&#34;过多