标签: sensor

通过NDK访问Android传感器

我需要在Android上以加速度计读取大约100个样本,并且采用固定的采样率.目前的传感器管理员既不提供也不提供.

我读过需要非常快速地阅读android传感器

他似乎可以访问使他的生活更轻松的驱动程序代码.

我很好奇是否有人能够通过NDK做这样的事情而没有那种知识.

提前致谢!

android sensor accelerometer android-ndk

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

Android方向传感器的奇怪行为

目前,我正在尝试使用方向传感器值使用getRotation()方法旋转3D立方体.当Android设备旋转到某些边界以上时,会观察到一些意外行为.例如,如果我让设备'站起来','roll'的价值就变得疯狂了.

此外,我正在经历类似于所谓的万向节锁定的现象.唯一的区别是,即使在将传感器值应用于3D旋转之前,我也遇到了这个问题.当我尝试通过仅围绕"俯仰"轴旋转设备来改变"俯仰"值时,"偏航"值也会根据俯仰的旋转而改变.这对我来说似乎完全不合理.

有人能帮帮我吗?我在这个问题上坚持了一个月.

android rotation sensor accelerometer orientation

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

传感器融合在Android上实现?

我听了这个演讲:http: //www.youtube.com/watch?v = C7JQ7Rpwn2k

这是Invensense公司为其"传感器融合"系统进行原型设计,该系统将Android中的陀螺仪,加速度计,罗盘测量结合起来,以获得更好的效果.

这是当前在任何版本的Android中实现的吗?我问的原因是,传感器融合的一部分是"重力"传感器和"线性加速"传感器,自从API级别9以来在Android中实现...让我认为1)传感器融合实现2)传感器融合没有实现,但这些只是添加到Android API中,以期在未来广泛增加的sensorfusion实现.

有人知道吗?

谢谢

android sensor accelerometer gravity gyroscope

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

将来自设备的磁场X,Y,Z值转换为全局参考系

使用TYPE_MAGNETOMETER传感器时,可获得与器件方向相关的磁场强度的X,Y,Z值.我想要得到的是将这些值转换为全局参考框架,澄清:用户接受设备,测量这些值,而不是将设备旋转任何轴周围一定程度并获得相同的值.请在下面找到类似的问题: 在全局坐标中获取磁场值 如何获得磁场矢量,与设备旋转无关? 在这个答案中描述了样本解决方案(它用于线性加速,但我认为没关系):https://stackoverflow.com/a/11614404/2152255 我使用它并且我得到3个值,X总是非常小(不要认为它是正确的),Y和Z都可以,但是当我旋转设备时它们仍然有点变化.怎么可以调整?它可以全部解决吗?我使用简单的卡尔曼滤波器来近似测量值,因为即使设备根本没有移动/旋转,我也会得到不同的值.请在下面找到我的代码:

import android.app.Activity;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.opengl.Matrix;
import android.os.Bundle;
import android.view.View;
import android.widget.CheckBox;
import android.widget.TextView;
import com.test.statistics.filter.kalman.KalmanState;
import com.example.R;

/**
 * Activity for gathering magnetic field statistics.
 */
public class MagneticFieldStatisticsGatheringActivity extends Activity implements SensorEventListener {

    public static final int KALMAN_STATE_MAX_SIZE = 80;
    public static final double MEASUREMENT_NOISE = 5;

    /** Sensor manager. */
    private SensorManager mSensorManager;
    /** Magnetometer spec. */
    private TextView vendor;
    private TextView resolution; …
Run Code Online (Sandbox Code Playgroud)

android sensor magnetometer android-sensors

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

需要从Sensor.TYPE_ORIENTATION数据计算旋转矢量

我需要从Sensor.TYPE_ORIENTATION获得的数据中计算出一个旋转矢量.

传感器数据定义如下:

  • 必须重新计算这些值才能成为正确的3d位置:值[0]:方位角,磁北方向和Y轴之间的角度,绕Z轴(0到359).0 =北,90 =东,180 =南,270 =西
  • 1:俯仰,绕X轴旋转(-180到180),当z轴向y轴移动时为正值.
  • 值[2]:滚动,绕Y轴旋转(-90到90),当x轴远离z轴时带正值

我需要所有三个值,如Z轴值(从0到360度).我尝试了很多,但无法弄清楚如何做到这一点:/

(编辑:要查看工作代码背后的想法,请查看DroidAR框架ActionWithSensorProcessing类,您可以看到如何处理不同的事件类型.)

我还尝试使用Sensor.TYPE_ACCELEROMETER和Sensor.TYPE_MAGNETIC_FIELD来自行计算这个3d矢量.这是代码:

final float[] inR = new float[16];
// load inR matrix from current sensor data:
SensorManager.getRotationMatrix(inR, null, gravityValues, geomagneticValues);
float[] orientation = new float[3];
SensorManager.getOrientation(inR, orientation);
mapMagAndAcclDataToVector(orientation); //here i do some *360 stuff
orientetionChanged(orientation); //then the correct values are passed (in theorie)
Run Code Online (Sandbox Code Playgroud)

但这不起作用,我认为这很复杂.所以我打赌有一个简单的解决方案,如何重新计算ensor.TYPE_ORIENTATION的值,使它们成为一个3d旋转矢量,但我只是不知道该怎么做.如果你知道答案,请告诉我.

编辑:我应该添加,我想将值传递给OpenGL,使其与轴对齐,如下所示:

gl.glRotatef(values[1], 1, 0, 0);
gl.glRotatef(values[2], 0, 1, 0);
gl.glRotatef(values[0], 0, 0, 1);
Run Code Online (Sandbox Code Playgroud)

但由于奇怪的价值范围,我显然无法做到这一点.与SensorManager.getOrientation中的值相同的问题,因为当您通过水平线时它们也会翻转.

另一个解决方案是使用inR矩阵计算角度,但我认为必须有一个更简单的解决方案(?)

android opengl-es vector matrix sensor

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

在Android 2.1中使用getRotationMatrix和getOrientation

我长期以来一直遇到这个问题.此代码应输出加速度计的dx,dy,dz以及dx的运行总和.它还应输出方位角,俯仰和滚动.

我已经使用了这里给出的信息,但无济于事.

此代码无法正确输出音高,方位角或滚动.它分别为最后三个文本视图输出0.0,-0.0,-0.0.

switch (event.sensor.getType()) {
    case Sensor.TYPE_ACCELEROMETER:
        accelerometerValues = event.values.clone();
    case Sensor.TYPE_MAGNETIC_FIELD:
        geomagneticMatrix = event.values.clone();
        sensorReady = true;
        break;
    default:
        break;
}   

if (geomagneticMatrix != null && accelerometerValues != null && sensorReady) {
    sensorReady = false;

    float[] R = new float[16];
    float[] I = new float[16];

    SensorManager.getRotationMatrix(R, I, accelerometerValues, geomagneticMatrix);

    float[] actual_orientation = new float[3];
    SensorManager.getOrientation(R, actual_orientation);

    tvXCoordinate.setText(accelerometerValues[0] + "");
    tvYCoordinate.setText(accelerometerValues[1] + "");
    tvZCoordinate.setText(accelerometerValues[2] + "");

    floatXTotal += accelerometerValues[0];
    tvXTotal.setText(floatXTotal + "");

    tvAzimuth.setText(actual_orientation[0] + "");
    tvPitch.setText(actual_orientation[1] + ""); …
Run Code Online (Sandbox Code Playgroud)

java events android matrix sensor

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

打印枚举的名称

我在ubuntu上使用eclipse + Android SDK.

我想打印传感器类型设备的名称,有很多他们,我想自动做.

如果我使用

Log.d("SENSORTYPE","Type: " + tempSensor.getType())
Run Code Online (Sandbox Code Playgroud)

我打印(int)类型,但我想使用枚举的名称.

我怎么能这样做?

提前解冻.

java enums android sensor android-logcat

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

计算Android传感器功耗

getPower()返回传感器在使用时使用的mA功率:

现在,我需要计算传感器配准使用了多少电池.

getPower()返回的值是否表示mAH(每小时mA)或其他?如果是,是否有办法获得电池mAH以计算传感器使用的电池百分比?

java android sensor

8
推荐指数
1
解决办法
3246
查看次数

在Android上实现JKalman

关于从加速度计数据中去除噪声,其他传感器数据,计算时空状态以及在Android和其他设备中使用卡尔曼滤波器存在很多问题.

显然,最简单的方法是在Android上实现JKalman过滤器,以便为汽车提供稳定的移动设备.

但是看看JKalman代码包中的示例实现,它并没有说太多,它实际上与其他Kalman实现非常不同.

他们像这样实例化一个卡尔曼类:

JKalman kalman = new JKalman(4, 2);
Run Code Online (Sandbox Code Playgroud)

根据定义在哪里

public JKalman(int dynam_params, int measure_params) throws Exception {
    this(dynam_params, measure_params, 0);
}
Run Code Online (Sandbox Code Playgroud)

dynam_params"测量向量维数"measure_params"状态向量维数".

如何将Android中读取的传感器数据映射到这些?

下面是加速度计的数据,每500ms采样一次.在其他听众中,有来自陀螺仪和指南针的数据.我该如何将这些数据转换为输入到卡尔曼?

    @Override
    public void onSensorChanged(SensorEvent event) {
        actualTime = System.currentTimeMillis();
        if(actualTime - lastUpdateAcc < 500)
            return;
        else{
            lastUpdateAcc = actualTime;
            //update myPosition
            TextView tv = (TextView)findViewById(R.id.textView3);
            tv.setText(String.format("X: %8.4f -- Y: %8.4f -- Z: %8.4f",
                    event.values[0], event.values[1], event.values[2]));
            //draw on the screen

            //draw new path, if one exists
        } …
Run Code Online (Sandbox Code Playgroud)

android sensor accelerometer android-sensors kalman-filter

8
推荐指数
1
解决办法
5389
查看次数

超声波传感器raspberry pi 2 c#.net

我正在尝试读取超声波传感器(HC-SR04)的距离,但我得到的唯一值是0和265.xx.

我正在使用安装了Windows 10 IoT Core的Raspberry Pi 2.

我用C#编写了代码.

这是超声波传感器类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Diagnostics;
using Windows.Devices.Gpio;

namespace RaspberryPi
{
    class UcSensor
    {
        GpioController gpio = GpioController.GetDefault();

        GpioPin TriggerPin;
        GpioPin EchoPin;

        //Contructor
        public UcSensor(int TriggerPin, int EchoPin)
        {
            //Setting up gpio pin's
            this.TriggerPin = gpio.OpenPin(TriggerPin);
            this.EchoPin = gpio.OpenPin(EchoPin);

            this.TriggerPin.SetDriveMode(GpioPinDriveMode.Output);
            this.EchoPin.SetDriveMode(GpioPinDriveMode.Input);

            this.TriggerPin.Write(GpioPinValue.Low);
        }

        public double GetDistance()
        {
            ManualResetEvent mre = new ManualResetEvent(false);
            mre.WaitOne(500);

            //Send pulse
            this.TriggerPin.Write(GpioPinValue.High);
            mre.WaitOne(TimeSpan.FromMilliseconds(0.01));
            this.TriggerPin.Write(GpioPinValue.Low);

            //Recieve pusle
            while (this.EchoPin.Read() == …
Run Code Online (Sandbox Code Playgroud)

c# sensor iot windows-10 raspberry-pi2

8
推荐指数
1
解决办法
3924
查看次数