我似乎无法在网上找到任何关于此的文档,我在谷歌搜索的内容给了我很多相互矛盾的信息......
我在每个时间段都有陀螺仪+加速度计数据T.
使用C++,我想计算每次对象的旋转 - 它可以在其轴上旋转.我已经读过,用四元数(不是欧拉角)表示系统的旋转是很方便的.
如何从角速度(从陀螺仪)转换为四元数表示?我认为为了做到这一点,我需要使用数值方法求解微分方程.
我正试图获得手机的倾斜角度,我的这项活动完全适用于我的LG Optimus S上有2.3,但在我的Verizon Galaxy Nexus运行ICS 4.0.2时,TYPE_MAGNETIC_FIELD事件永远不会发生.
因为TYPE_MAGNETIC_FIELD事件永远不会触发,所以我没有获得传递到SensorManager.getRotationMatrix所需的mGravs数组.所以我无法分辨手机的角度.就像我提到的,这个代码在我的其他设备上工作得很好,我可以看到手机的倾斜角度没有问题.
知道为什么我不能用我的Galaxy Nexus获得这个活动吗?SDK是否有任何更改会阻止其工作?
这是我的活动:
package com.rain.united;
import android.app.Activity;
import android.content.pm.ActivityInfo;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;
public class Gameplay extends Activity implements SensorEventListener{
private static final String TAG = "CameraDemo";
private TextView mOrientationData;
private SensorManager mSensMan;
private float mAzimuth;
private float[] mGravs = new float[3];
private float[] mGeoMags = new float[3];
private float[] mOrientation = new float[3];
private float[] mRotationM = new float[9];
private float[] mRemapedRotationM …Run Code Online (Sandbox Code Playgroud) 我正在从Android手机上研究加速度计.我希望过滤加速度计正在返回的可怕噪音,记录手机的动作.
我正在读卡尔曼滤波器,因为低通是不够的.
但我没有转型的典范,从ACCELERATION(k-1)到ACCELERATION(k),因为它是用户的运动.所以我没有状态转移矩阵(H或F在不同的论文中,在公式Xk = H Xk-1 + B命令+噪声中乘以Xk-1 )
我看到有些人在简单的例子中使用了单位矩阵.它如何适用于动态加速?
我知道卡尔曼滤波器,人们总是产生一些H矩阵,我只是不知道在我的情况下如何.
我想在手机静止2秒钟后采取措施。我已经搜索了谷歌周围的年龄和堆栈溢出。我发现“ Accelerometer DidAccelerate”已贬值,而CoreMotion替代了它。我所看到的一切都与“摇动”动作有关。我已经尝试阅读苹果的文档,但这让我感到困惑!
基本上,我希望应用程序能够检测到手机上的重力在一定时间内保持在很小的范围内(建议您将手机放在桌子上或其他物体上)并进行呼叫和实例化或让应用执行某项操作。
任何帮助将不胜感激。
鉴于加速度计具有9 DOF(加速度计,陀螺仪和磁力计),我想在加速度计读数中去除/补偿重力的影响(加速度计可以自由旋转).传感器给出相对于(磁)北,西和上参考系的四元数表示的方向.
我发现这个http://www.varesano.net/blog/fabio/simple-gravity-compensation-9-dom-imus 但是无法理解给定方程的基础.
如何获得上述信息呢?
我是一名计算机科学专业的学生,从事电子项目,需要计算偏航,俯仰,滚动和X,Y,Z位移.我想用一把枪连接IMU并跟踪它的方向和位移.我能够得到Yaw,Pitch和Roll,但遗憾的是无法理解如何计算我的枪的位移或位置.我使用的是包含MPU-6050的10-DOF GY-87传感器.
我得到了g和m/s2格式的值.从我研究过的研究来看,我需要获得加速度/时间2,然后添加所有值.但是我不明白我应该使用什么时差.参考:如何根据手机加速度计算距离
#include "I2Cdev.h"
#include "MPU6050.h"
// Arduino Wire library is required if I2Cdev I2CDEV_ARDUINO_WIRE implementation
// is used in I2Cdev.h
#if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE
#include "Wire.h"
#endif
// class default I2C address is 0x68
// specific I2C addresses may be passed as a parameter here
// AD0 low = 0x68 (default for InvenSense evaluation board)
// AD0 high = 0x69
MPU6050 accelgyro;
//MPU6050 accelgyro(0x69); // <-- use for AD0 high
int16_t ax, ay, az;
float dx, dy, …Run Code Online (Sandbox Code Playgroud) 我可以使用以下代码使用加速度计旋转对象.
transform.rotation = Quaternion.LookRotation(Input.acceleration.normalized, Vector3.up);
Run Code Online (Sandbox Code Playgroud)
但我想旋转对象,例如屏幕旋转 - 0度,90度,180度和360度.我怎么能用Unity 3D做到这一点?
我正在为我的应用程序开发简单的Shake功能,我遇到了一个奇怪的问题.当我在我的Honor5x上测试它时,它就像一个魅力,但当我试图在三星S5上执行它时,它太敏感了.加速度计是否有可能在不同设备上的工作方式不同?如果可以,修改分类可能取决于设备/加速度计的准确度?这是我检测Shake事件的代码:
__CODE__到__CODE__数组?我有矢量,保留了很多单元格,我必须将其转换为__CODE__数组.我可以通过for循环来完成,但需要花费很多时间.
accelerometer ×10
android ×3
gyroscope ×2
ios ×2
iphone ×2
math ×2
quaternions ×2
3d ×1
accelerator ×1
arduino ×1
c++ ×1
core-motion ×1
filter ×1
gravity ×1
objective-c ×1
physics ×1
position ×1
rotation ×1
shake ×1
xcode ×1