标签: gyroscope

如何从Javascript访问加速度计/陀螺仪数据?

我最近遇到过一些似乎可以访问我的笔记本电脑上的加速度计或陀螺仪的网站,检测方向或运动的变化.

这是怎么做到的?我必须在window对象上订阅某种事件吗?

已知这些设备(笔记本电脑,手机,平板电脑)有效吗?


注意:我实际上已经知道(部分)这个问题的答案,我将立即发布.我在这里张贴问题的原因,是为了让每个人都知道,加速度计数据在Javascript中可用的(在某些设备上),并挑战社会关于这个问题发表新的研究结果.目前,似乎几乎没有这些功能的文档.

javascript accelerometer gyroscope

134
推荐指数
3
解决办法
10万
查看次数

基于陀螺仪和加速度计的室内定位系统

我正在开发一个Android应用程序来跟踪室内位置.我的手机是使用两个传感器的Google Nexus S,第一个是加速度计,第二个是陀螺仪.

我的想法是,从起始参考点(已知的GPS位置),使用2个传感器(用于运动的加速度计和用于方向的陀螺仪)在移动时跟踪手机.并在用户出发时显示在地图上.

但问题是我不知道如何将这两种传感器结合起来给我一个实际位置?

我在互联网上看过一些关于"kalman过滤器"的文章,经过一些研究后我发现那个过滤器对我来说非常复杂/太多了)特别是在java for Android(cpu杀手)中编码

有人有经验可以与我分享使用陀螺仪和加速度计的室内定位系统吗?

android location position accelerometer gyroscope

71
推荐指数
2
解决办法
7万
查看次数

立即检测iOS方向的变化

我有一个游戏,其中设备的方向影响游戏的状态.用户必须在横向,纵向和反向横向方向之间快速切换.到目前为止,我一直在通过以下方式注册游戏以获取方向通知:

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
Run Code Online (Sandbox Code Playgroud)

但它太慢了 - 旋转电话和通知实际被解雇之间似乎有大约第二个延迟.我需要一种方法来立即检测设备方向的变化.我已经尝试过使用陀螺仪进行试验,但我还不熟悉它,以了解它是否是我正在寻找的解决方案.

iphone objective-c orientation ios gyroscope

53
推荐指数
6
解决办法
10万
查看次数

陀螺仪与加速度计?

既然iOS 4不再是NDA,我想知道Gyroscope为开发人员提供的加速度计.API有区别吗?其他事情?

iphone accelerometer ios4 gyroscope

46
推荐指数
2
解决办法
4万
查看次数

如何找到陀螺仪和加速度计的距离?

我想构建一个应用程序,使用陀螺+加速度计计算iPhone(非长距离)的准确行进距离.这里不需要GPS.

我该如何处理这个问题?

iphone distance accelerometer gyroscope

44
推荐指数
4
解决办法
6万
查看次数

iPhone上的陀螺仪

在iPhone上使用陀螺仪需要一些帮助.在特定情况下,我无法理解CMAttitude关于俯仰,翻滚和偏航的读数.

这是我的代码

- (void)handleDeviceMotion:(CMDeviceMotion*)motion {

   NSLog(@"Yaw   %f ",attitude.yaw * 180 / M_PI);
   NSLog(@"Pitch %f ",attitude.pitch * 180 / M_PI);
   NSLog(@"Roll  %f ",attitude.roll * 180 / M_PI);
}
Run Code Online (Sandbox Code Playgroud)

我们假设iPhone正在平面上,如下图所示:

在此输入图像描述

俯仰,滚转和偏航是(几乎)0度,绕轴的任何转弯都会返回可理解的读数.例如,向右转动设备,Yaw减小,Pitch and Roll保持为0.

现在iPhone处于以下位置:

在此输入图像描述

并再次开始测量.

读数为:Yaw = 0,Pitch = 90,Roll = 0

由于设备围绕该轴旋转,因此间距增加.

将iPhone移动到这个位置:

在此输入图像描述

读数为:Yaw = 30,Pitch = 90,Roll = 0

再一次,由于设备围绕偏航轴旋转,因此该值会改变而其他值则不会改变.

围绕Roll轴移动设备:

在此输入图像描述

读数为:Yaw = 0,Pitch = 90,Roll = -20.

现在我无法理解.将iPhone移动到半径为R(R> 0)的圆周,如下图所示:

在此输入图像描述

Yaw改变同时Pitch and Roll没有.

我原以为Yaw保持不变而Roll已经改变了.

如何补偿这一点,因为我对用户制作的偏航轴周围的旋转感兴趣?

我遇到的另一个问题是漂移.iPhone处于第二个图中描述的位置,长时间(1分钟或更长时间)在我的手中拍摄.偏航不断增加.知道如何补偿漂流吗?

先感谢您

更新 我跟随凯的建议,但没有任何改变.关于我的代码的更多细节.我想仅在用户围绕偏航轴旋转设备时使用Yaw旋转UIImage.这是有效的,但是当用户围绕其自己的垂直轴旋转时,偏转会发生变化.我认为这是不正确的,因为当用户围绕其垂直轴移动时,设备不会围绕其自己的偏航轴旋转.可能是我错了.这是我的原始代码:

- (void)handleDeviceMotion:(CMDeviceMotion*)motion { 

   CMAttitude      *attitude = motion.attitude;

   NSLog(@"Yaw   %f ",attitude.yaw * …
Run Code Online (Sandbox Code Playgroud)

iphone accelerometer ipad ios gyroscope

34
推荐指数
1
解决办法
1万
查看次数

何时在Android上使用加速度计或陀螺仪

可以假设大多数用户设备都有陀螺仪吗?换句话说,我会在我的应用中使用陀螺仪排除相当多的人吗?

我正在制作儿童故事书应用程序,我希望用户能够围绕偏航轴倾斜设备,来回移动摇椅.它只是应用程序的一小部分,并不一定非常精确.我应该使用一个传感器吗?

android accelerometer gyroscope

34
推荐指数
1
解决办法
3万
查看次数

在iPhone 4上使用陀螺仪补偿罗盘延迟

我一直在试验iPhone 4上的指南针和陀螺仪,并希望得到一些我正在解决的问题的帮助.我想通过使用陀螺仪的数据来弥补指南针的缓慢.

使用CMMotionManager和它的CMDeviceMotionobject(motionManager.deviceMotion),我得到了CMAttitude对象.如果我错了(请),请纠正我,但这是我从CMAttitude对象的yaw属性中推断出来的(我不需要pitch也不是roll为了我的目的):

  • yaw范围从0PI当手机正在指向下方(由所指示的deviceMotion.gravity.z)和逆时针方向摆动,并0-PI顺时针方向摆动时
  • 当设备指向上方时,yaw范围分别为-PIto 0PIto0
  • 和从罗盘数据(我使用locationManager.heading.magneticHeading),我看到罗盘给出了从值0360与值顺时针摆动时增加

好吧,所以一起使用所有这些信息,我能够得到一个我称之为的值horizontal,无论设备是向上还是向下,都会给出值0,360并在设备顺时针摆动时增加(尽管我我在deviceManager.gravity.z周围时仍然遇到麻烦0- yaw价值在这个gravity.z价值上变得非常惊人).

在我看来,我可以使用映射到的计算值"同步" horizontalmagneticHeading值,并在我感觉指南针"赶上"时"同步"该值.horizontalmagneticHeadinghorizontalmagneticHeading

所以我的问题:

  • 我是否在正确的轨道上?
  • CMDeviceMotion是否正确使用陀螺仪数据并且上面列出的假设是正确的?
  • 为什么yaw在 …

iphone ios iphone-4 gyroscope compass-geolocation

30
推荐指数
2
解决办法
1万
查看次数

查找iOS设备的法线向量

我想用CMAttitude来了解iPad/iPhone屏幕玻璃的正常向量(相对于地面).因此,我会得到以下矢量:

在此输入图像描述

请注意,这与方向不同,因为我不关心设备如何围绕z轴旋转.因此,如果我把iPad放在我的头顶朝下,它会读取(0,-1,0),即使我将它旋转到我头顶上方(如直升机),它仍将继续读取(0, - 1,0):

在此输入图像描述

我觉得这可能很简单,但由于我是四元数的新手,并且不完全理解设备运动的参考框架选项,所以它一整天都在躲避我.

ios gyroscope core-motion

26
推荐指数
1
解决办法
5220
查看次数

使用Android陀螺仪代替加速度计.我发现很多点点滴滴,但没有完整的代码

传感器融合视频看起来很棒,但没有代码:http://www.youtube.com/watch?v = C7JQ7Rpwn2k&feature = player_detailpage#t = 1315s

这是我的代码,它只使用加速度计和指南针.我还在3个方向值上使用卡尔曼滤波器,但这里显示的代码太多了.最终,这可行,但结果是太过于紧张或太迟,这取决于我对结果的处理方式以及制作滤波因子的程度.

/** Just accelerometer and magnetic sensors */
public abstract class SensorsListener2
    implements
        SensorEventListener
{
    /** The lower this is, the greater the preference which is given to previous values. (slows change) */
    private static final float accelFilteringFactor = 0.1f;
    private static final float magFilteringFactor = 0.01f;

    public abstract boolean getIsLandscape();

    @Override
    public void onSensorChanged(SensorEvent event) {
        Sensor sensor = event.sensor;
        int type = sensor.getType();

        switch (type) {
            case Sensor.TYPE_MAGNETIC_FIELD: …
Run Code Online (Sandbox Code Playgroud)

android accelerometer orientation gyroscope

25
推荐指数
2
解决办法
2万
查看次数