我正在Android上试用Sensor.TYPE_ROTATION_VECTOR.它应该使用磁场传感器,加速度计和陀螺仪始终提供准确的旋转.但是,我注意到Moto G 2nd发生了巨大的漂移.我想知道这是否是特定于设备的问题,或者这种情况发生在很多手机上(我会假设,虽然我很熟悉Moto G 2nd是一个有问题的陀螺仪).
是否有另一种形式的传感器融合,它是无漂移的(使用磁传感器)?我也试过了Google Cardboard的传感器融合,但它使用了偏差估计,因此可能并非完全漂移(因为此时看不到磁场传感器),尽管仍然比TYPE_ROTATION_VECTOR好很多.
我正在学习Android编程的基础知识.
我有一个简单的android测试应用程序,其中我将加速度计,磁力计和方向数据记录到外部文件,同时也显示它.我通过调用方法initLogger来单击Start按钮(相关传感器的registerListener)来启动日志记录过程.
看起来与此类似......
public void initLogger(View view)
{
boolean bFlag = false;
Button btnStart = (Button)findViewById(R.id.btnStartLog);
Button btnStop = (Button)findViewById(R.id.btnStopLog);
btnStart.setEnabled(bFlag);
btnStop.setEnabled(!bFlag);
bEnableLogging = true;
//Start reading the sensor values
sensorManager.registerListener(this, sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD), SensorManager.SENSOR_DELAY_UI);
sensorManager.registerListener(this, sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_UI);
//so on....
Run Code Online (Sandbox Code Playgroud)
还有一个Stop按钮,它将停止记录过程(最后通过为每个传感器调用unregisterListener来取消注册)
数据检索过程发生在onSensorChanged处理程序中,该处理程序将从相关传感器检索数据,将值设置为相应的UI元素,最后将数据记录到外部.csv文件.
onSensorChanged事件处理程序看起来像这样......
public void onSensorChanged(SensorEvent event) {
// TODO Auto-generated method stub
// accelerometer
TextView tAX = (TextView) findViewById(R.id.txtViewAxValue);
TextView tAY = (TextView) findViewById(R.id.txtViewAyValue);
TextView tAZ = (TextView) findViewById(R.id.txtViewAzValue);
// magnetic field
TextView tMX …
Run Code Online (Sandbox Code Playgroud) 我们正在考虑检测手,用户正握着他的移动设备,左手或左手或两者.据我们所知,我们认为使用当前硬件100%准确率是不可能的,我们甚至不认为它的准确度超过90%但是如果你试图通过大多数智能手机具有的可用传感器数据实现这一点今天.您将如何处理这些传感器数据?您将如何决定?
我们最初的想法是,
如果你问为什么要这样做,
随着设备变大(例如三星音符-2,音符-3),触摸屏幕的每一侧都变得越来越难以导致用户体验/人体工程学问题.我们认为,如果我们能够以合理的准确度自动检测到这一点,我们可能会调整布局以提供更好的用户体验.
谢谢大家分享你的想法,
想象一下,您有不同的 OCR 工具来从图像中读取文本,但没有一个工具可以为您提供 100% 准确的输出。然而,综合起来,结果可能非常接近事实——将文本“融合”在一起以获得良好结果的最佳技术是什么?
\n\n例子:
\n\n实际文本
\n\n\xc2\xa7 5.1: The contractor is obliged to announce the delay by 01.01.2019 at the latest. The identification-number to be used is OZ-771LS.\n
Run Code Online (Sandbox Code Playgroud)\n\n光学字符识别工具1
\n\n5 5.1 The contractor is obliged to announce the delay by O1.O1.2019 at the latest. The identification-number to be used is OZ77lLS.\n
Run Code Online (Sandbox Code Playgroud)\n\n光学字符识别工具2
\n\n\xc2\xa75.1: The contract or is obliged to announce theedelay by 01.O1. 2O19 at the latest. The identification number to be …
Run Code Online (Sandbox Code Playgroud) 我在我的应用程序中使用ROTATION_VECTOR类型的传感器数据.
使用我的Nexus 5,我可以从方向[0]获得方位角,并且可以使手机朝向下图所示的范围(这是非常准确的).
由于我在不同的设备上尝试了我的应用程序,我发现传感器值与我的Nexus 5测试设备不同.在我的三星Galaxy Nexus和三星Galaxy S3 Mini上,方位角受到倾斜设备的影响,如图所示.
TYPE_ROTATION_VECTOR正在使用传感器融合,这就是我使用传感器测试应用检查不同设备上的单个传感器值的原因.在Nexus 5上,当倾斜设备时,z轴的方向值保持大致相同,在三星Galaxy Nexus上,z的值在倾斜时变化(从直立到躺着大约90°).我担心传感器融合正在使用这些值,这就是为什么我的方位角在不同的设备上是不同的.
有没有人遇到类似的情况,甚至更重要的是:有没有人有解决方法或不同的方式来接收方位角?
为了确保,我寻找后置摄像头指向的方向......
这是我的代码:
final float[] mRotationMatrix = new float[9];
final float[] mRotationMatrixFromVector = new float[9];
final float[] orientation = new float[3];
Run Code Online (Sandbox Code Playgroud)
...
SensorManager.getRotationMatrixFromVector(mRotationMatrixFromVector,
event.values);
// enables usable range like in picture
SensorManager.remapCoordinateSystem(mRotationMatrixFromVector,
SensorManager.AXIS_X, SensorManager.AXIS_Z,
mRotationMatrix);
SensorManager.getOrientation(mRotationMatrix, orientation);
Run Code Online (Sandbox Code Playgroud) android azimuth device-orientation android-sensors sensor-fusion
我制造了一个由Arduino和Processing控制的机器人,它通过自身旋转(如球体)在房间内移动.
我需要的是能够在地板上移动后获得新位置(假设在一个3米x 3米的房间内).我正在使用9DOF传感器(3轴加速度计数据,3轴陀螺仪和3轴磁数据)来确定其滚转,俯仰和偏航以及它的方向.
如何准确识别机器人在笛卡尔坐标(x,y,z)坐标相对于其起始位置的位置?我不能使用GPS,因为每次旋转运动少于20厘米,机器人将在室内使用.
我找到了一些室内测距和3D定位解决方案,如pozyx或使用固定相机.但是我需要它具有成本效益.
有没有办法转换9DOF数据以获得新位置或任何其他传感器来做到这一点?任何其他解决方案,如算法?
robotics artificial-intelligence arduino sensor sensor-fusion
我有陀螺仪和磁力计的原始数据.根据这些数据,我必须以1Deg的精度计算标题信息.
我想知道,是否有任何算法可以帮助我使用提到的准确度的可用信息获取标题信息?
任何文章或任何链接也会有所帮助.
谢谢
我的问题看似微不足道,但我读到的内容越多-我越困惑……我已经开始了一个小项目,希望大致跟踪旋转物体的运动。(准确地说是篮球)我有一个3轴加速度计(低通滤波)和一个测量°/ s的3轴陀螺仪。我知道陀螺仪的问题,但由于测量仅需几秒钟,并且角度往往很大-我现在不在乎漂移和万向架。
我的陀螺仪给了我所有三个轴的旋转速度。由于我想对加速度进行两次积分以获取每个时间步的位置,因此我想将传感器的坐标系转换为接地系统。第一次尝试,我想使事情保持简单,因此我决定使用大型标准旋转矩阵。但是由于我的结果太糟糕了,我想知道这是否是正确的方法。如果我正确理解-矩阵只是将3个矩阵按一定顺序相乘。由于篮球旋转没有任何“自然”命令,所以这可能不是一个好主意。我的传感器一次测量3个角速度。如果我将它们“逐步”放入系统中,那将是不正确的,因为我的第二个矩阵会计算围绕“新y轴”的旋转,但是我的传感器实际上测量了围绕“旧y轴”的角速度。到目前为止,对吗?
那么如何正确计算3D旋转?我需要去季铵盐吗?但是如何从3个不同的轮换中得到一个?而且我在这里没有同样的问题吗?
我先从一个单位矩阵((1,0,0)(0,1,0)(0,0,1))乘以加速度矢量得出我的第一个动作。然后,我想使用“旋转矩阵”来找出下一个加速度的实际方向,因此我可以将加速度简单地相加。
但是现在我太困惑了,找不到合适的方法。
有什么建议么?顺便说一句 对不起,我的英语不好,我很累,(显然)不是母语人士;)
谢谢亚历克斯
我的项目:
我正在开发一款带3轴加速度计和陀螺仪的老虎车,试图估计汽车姿态(x,y,z,偏航,俯仰),但我的振动噪音有很大问题(当汽车正在运行时,例如,对于加速度计,噪声取值在±4 [g](其中g = 9.81 [m/s ^ 2])之间,因此齿轮引起振动并且轨道也变得更糟.
我知道(因为我观察它),噪音与我的所有传感器相关
在我的第一次尝试中,我试图用卡尔曼滤波器来解决它,但它没有用,因为我的状态向量的值有很大的噪音.
编辑2:在我的第二次尝试中,我在卡尔曼滤波器之前尝试了低通滤波器,但它只是减慢了我的系统并且没有滤除噪声的低分量.在这一点上,我意识到这种噪音可能由低频和高频组成.
我正在学习自适应滤波器(LMS和RLS),但我意识到我没有噪声信号,如果我使用一个加速度计信号来过滤其他轴的加速度计,我没有得到绝对值,所以它不起作用.
编辑:我在尝试寻找自适应滤波器的示例代码时遇到问题.如果有人知道类似的事情,我会非常感激.
这是我的问题:
有没有人知道过滤器或有任何想法如何我可以修复它并正确过滤我的信号?
非常感谢你提前,
XNOR
PD:我为我可能遇到的任何错误道歉,英语不是我的母语
似乎有许多旧的例子表明在Android设备上获得当前的主要方向,但Google提供的官方解决方案似乎并未出现在他们的文档中.
最古老的参考Sensor.TYPE_ORIENTATION
它被废弃了,更近的提及Sensor.TYPE_ACCELEROMETER
和Sensor.TYPE_MAGNETIC_FIELD
(我曾尝试,但收效甚微-准确迅速的变化取决于设备的方向).我一直在尝试使用这两个这样的实现.我甚至见过一些人TYPE.GRAVITY
.
在最近似乎表明 TYPE_ROTATION_VECTOR这显然是一个稠合的传感器(参考),但实例实施方案中似乎并不容易得到.
我需要使用这些位置/运动传感器,而不是GPS,因为在需要进行此测量时,用户不会移动.无论手机是平的还是垂直的(如果你正在拍照),也需要测量稳定
在我们以某种方式拉出度数测量之后,转换到基数方向似乎很容易.(/sf/answers/1774484211/)
以前的方案
java android android-sensors compass-geolocation sensor-fusion
我目前正在开发一个使用多个传感器的android应用程序,我
mSensor= mySensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
在OnCreate
方法中使用来获取传感器,并tv.setText("X: "+ sensorEvent.values[0] + ...);
在onSensorChanged
方法中使用在文本视图中显示加速度计值。
如何添加更多传感器并以相同的方式显示它们的值?当我说时,程序如何知道我指的是哪个传感器sensorEvent.values[0]
?
感谢您提前提供的帮助,Maja
我正在尝试实现卡尔曼滤波器以进行方向检测.就像我在网上发现的大多数其他实现一样,我将使用陀螺仪和加速度计来测量俯仰和滚动,但我打算也添加地平线探测.这将给我一个关于俯仰和翻滚的二读.这意味着我将有两种方法来测量当前状态,加速度计和水平检测,同时陀螺仪将用于控制.
到目前为止,我已根据本教程分别对传感器数据和水平检测实施了滤波器:http://blog.tkjelectronics.dk/2012/09/a-practical-approach-to-kalman-filter-and-how-到实现,它/
我必须修改卡尔曼滤波器的哪一部分,以便算法选择预测状态,加速度计读数和水平检测读数之间的最佳读数?任何帮助,链接到论文或网站将提前感谢您的帮助
sensor-fusion ×13
android ×6
gyroscope ×3
java ×3
magnetometer ×2
robotics ×2
arduino ×1
azimuth ×1
detection ×1
euler-angles ×1
filtering ×1
gps ×1
heading ×1
matrix ×1
mobile ×1
nlp ×1
noise ×1
ocr ×1
orientation ×1
rotation ×1
sensor ×1
sensors ×1
trigonometry ×1