标签: sensor

Android - SensorManager getOrientation的奇怪行为

我需要检索手机的方向.目前我写了这个:

public void onSensorChanged(SensorEvent event) {
  switch (event.sensor.getType()){
  case Sensor.TYPE_MAGNETIC_FIELD:
    this.mag_vals = event.values.clone();
    this.sensorReady = true;
    break;
  case Sensor.TYPE_ACCELEROMETER:
    this.acc_vals = event.values.clone();
    break;
  }
  if (this.mag_vals != null && this.acc_vals != null && this.sensorReady) {
    this.sensorReady = false;
    float[] R = new float[ProjectConstants.SIZE_MATRIX];
    float[] I = new float[ProjectConstants.SIZE_MATRIX];
    SensorManager.getRotationMatrix(R, I, this.acc_vals, this.mag_vals);

    SensorManager.getOrientation(R, this.actual_orientation);
    ...  
Run Code Online (Sandbox Code Playgroud)

如果我将手机放在平面上并将其旋转到表面上,此代码可让我获取手机的方向.

我不明白的是,如果我向上移动手机的值this.actual_orientation[0],即[此处] [1]所述的zed轴上的旋转,虽然没有旋转,但值会增加.

有人知道会发生什么吗?

编辑

另一件奇怪的事......

我在办公室里尝试了我的应用程序,它有我之前描述的奇怪的行为..我在同一个办公室(同样的情况)尝试了一个指南针应用程序,我从市场上取得它与我的相同的行为..当我我把电话向上移动了一致的价值变化..我在同一个办公室(同样的情况)尝试了i-phone罗盘,它没有那种奇怪的行为!

然后,当我到家时,我尝试了两个,我的应用程序和我的Android手机的指南针应用程序,他们工作!!即使我向上移动手机价值稳定...

非常感谢.

[1]:http://developer.android.com/reference/android/hardware/SensorManager.html#getOrientation(float [],float [])

android sensor accelerometer orientation magnetometer

5
推荐指数
1
解决办法
3804
查看次数

卡尔曼滤波器与指数滤波器

我想知道卡尔曼滤波器指数滤波器有哪些优点和缺点?我有一个多传感器融合问题,我正在尝试决定选择哪种方法.

我认为,卡尔曼滤波器在计算上更复杂,但它具有系统的更详细的模型,从而更准确的(?)在多传感器融合.

而指数滤波器是一个简单的等式,但它是由阿尔法的选择(过滤器的较高级α-=>少"记忆",从而较小的平滑的,但多个权重对测量的,而较低的α具有更高程度的平滑化,但突然的变化的限制没有正确反映.

当存在抖动等时,指数滤波器在噪声消除中更有用,而卡尔曼滤波器对于实际的多传感器融合是有用的.它是否正确?

此外,遗传算法对传感器融合有多大用处?我正在尝试将磁罗盘和陀螺仪结合起来估算真实的方向.

谢谢!

sensor filter exponential genetic-algorithm kalman-filter

5
推荐指数
1
解决办法
4281
查看次数

如何从传感器类中的方法获取机器人的方向?

我正在使用LRV(最近访问过的最少)算法制作一个程序.基本上,我设计了一个机器人遍历网格(这是一个2D字符数组)的算法.机器人在穿过网格时检查每个单元是EMPTY(由'O' OCCUPIED定义),(由'S' BLOCKED定义)还是(由'X'定义).单元格只能被称为Sensor的对象占用(这有自己的类).BLOCKED细胞无法遍历.每次机器人必须移动时,它接收来自传感器的方向.因此,在开始时,机器人将被放置在网格上并且它将丢弃传感器并从其获得方向,或者从预先存在的传感器获得方向.

现在我已经解释了我的程序,我的具体问题是,我有一个类Sensor,它有一个getVisitingDirection返回INT 的方法.我有一个每个方向的计数器(INT类型的北,南,东和西)这是班级.

package ITI1121A;
public class Sensor {

private int cColumns;
private int cRows;
private int North;
private int South;
private int West;
private int East;

public Sensor(int sX, int sY) { 

cColumns = sX;
cRows = sY;
South= -1;
North = -1;
West = -1;
East = -1;

}
/* ADD YOUR CODE HERE */
public int getX ()
{return cColumns;}
public int getY ()
{return cRows;}

public …
Run Code Online (Sandbox Code Playgroud)

java grid robot sensor

5
推荐指数
1
解决办法
1528
查看次数

Arduino自动电子邮件通知

我想开始涉及arduino和电子邮件通知的项目.我不确定以前做过这样的事情,但我猜它有某种形式.让我解释.基本上我想用一些压电传感器或kinect设置arduino,以便当执行动作(或感测到压力)时,将自动发送电子邮件(或推文).我确信这可以做到,但我不知道从哪里开始,我想知道是否有人有想法?提前致谢.

email notifications arduino sensor

5
推荐指数
1
解决办法
4829
查看次数

Android将设备坐标系转换为"用户"坐标系

我的问题类似于在android中更改传感器坐标系

我希望无论设备方向如何,都能够将用户的动作相互比较.因此,当用户以纵向方向拿出电话并弯曲他的手臂时,加速度读数与他在风景中拿出手机然后将手臂向相同方向弯曲时的读数相同.

这就是我所说的"用户"坐标系.它与世界坐标系不同,因为用户面向的风向应该无关紧要.它与设备坐标不同,因为用户如何握住他的设备无关紧要.

在我的应用中,在每次移动之前进行校准步骤是可以接受的,因此可以确定基础/静止方向矩阵.它可能只是将第一个运动的矩阵与第二个运动的倒数相乘(然后是新值?)

提到的问题中的答案似乎是正确的,但我需要一个更具体的解释,实际的代码样本将是理想的.

注意remapCoordinateSystem是不够的,它只接受直角.我需要能够处理小的偏差,因为设备被绑在手腕上,手腕可能并不总是与手臂成直角.

android sensor orientation rotational-matrices android-sensors

5
推荐指数
1
解决办法
1329
查看次数

消除IMU加速度计的重力

我发现了一种从加速度计读数中消除重力的美丽快速方法。但是,我有一个6dof IMU(XYZ陀螺仪,XYZ加速度计,无磁力计),所以我不确定是否可以使用此代码(我尝试过并且无法正常工作)。

有人将如何去除重力分量?这是一个很大的障碍,因为我无法继续进行我的项目。


编辑:

是)我有的:

  • 描述飞机位置的四元数(使用扩展卡尔曼滤波器得到的四元数)
  • 加速度传感器读数(未过滤;轴与平面对齐时对齐;重力也包含在这些读数中)

我想要的是:

  • 消除重力
  • 校正(旋转)加速度计读数,使其轴与参考轴的地球坐标系对齐
  • 读取对地球的加速度(现在是加速度计的Z分量)

基本上,无论飞机如何定向,我都想阅读对地球的加速度!但是第一步,我想是要消除重力。

embedded sensor accelerometer gravity

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

如何充分替换Sensor.TYPE_ORIENTATION(现已弃用)?

我已经尝试了几个在互联网上发现的代码片段SensorManager.getOrientation().没有可靠地给出磁方位角Sensor.TYPE_ORIENTATION.任何人都可以共享Sensor.TYPE_ORIENTATION模拟的工作代码吗?

android sensor orientation magnetometer

5
推荐指数
0
解决办法
3834
查看次数

Android 4.3中android.hardware.SensorManager.registerListener的意外错误返回值

二手LG Nexus 4,Android 4.3

返回值有时是假的,我不明白为什么.文档说:"如果传感器得到支持并成功启用,则为true."

奇怪的是,我见过的没有例子是测试SensorManager.registerListener的返回值.

奇怪的是,如果我忽略了返回错误的值,那么一切都按预期工作!

文档:http: //developer.android.com/reference/android/hardware/SensorManager.html

android.hardware.SensorManager,android.hardware.SystemSensorManager

我的代码:

SensorManager sensorMgr = (SensorManager)_context.getSystemService(Context.SENSOR_SERVICE);
if (sensorMgr == null) {
    Log.w(TAG, "200410::Sensors not supported");
    return false;
}

Sensor sensor = sensorMgr.getDefaultSensor(Sensor.TYPE_PROXIMITY);
result = sensorMgr.registerListener(this, sensor, SensorManager.SENSOR_DELAY_NORMAL);
if( result == false) {
    // Normally something should be done here
    // since the false return value indicated that registration failed.
    // But I found it's better doing nothing since the registration seams to be ok
}
return result;
Run Code Online (Sandbox Code Playgroud)

在Android 4.3之前没有发生奇怪的错误返回值 …

android sensor accelerometer proximity proximitysensor

5
推荐指数
0
解决办法
686
查看次数

DHT22传感器导入Adafruit_DHT错误

因此,我已将DHT22湿度传感器正确地连接到BeagleBone Black RevC。我在MacBook Pro上运行OS Mavericks,并且按照Adafruit提供的说明使用DHT22。

我使用的网站非常清晰:https//learn.adafruit.com/dht-humidity-sensing-on-raspberry-pi-with-gdocs-logging/software-install-updated

这也是我克隆的github文件:https : //github.com/adafruit/Adafruit_Python_DHT

我输入以下行:

git clone https://github.com/adafruit/Adafruit_Python_DHT.git

cd Adafruit_Python_DHT

sudo apt-get upgrade

sudo apt-get install build-essential python-dev

sudo python setup.py install

cd examples

sudo ./AdafruitDHT.py 22 P8_11
Run Code Online (Sandbox Code Playgroud)

我成功到最后一行。输入最后一行(sudo ./AdafruitDHT.py 22 P8_11)后,我收到以下错误消息:

Traceback (most recent call last):
  File "./AdafruitDHT.py", line 23, in <module>
    import Adafruit_DHT
ImportError: No module named Adafruit_DHT
Run Code Online (Sandbox Code Playgroud)

我知道某个地方有一个Adafruit_DHT文件,因为当我在Adafruit_Python_DHT目录中查找时,会得到以下信息:

root@beaglebone:~/Adafruit_Python_DHT# ls
Adafruit_DHT  examples  ez_setup.py  ez_setup.pyc  LICENSE  README.md  setup.py  source
Run Code Online (Sandbox Code Playgroud)

我尝试重新安装setup.py,但结果仍然相同。

我遵循了Adafruit提供的所有指示,但似乎似乎无法超越。有什么想法吗?这似乎是一个简单的问题,但事实证明,这是从DHT22中获取读数的主要障碍。如果需要更多信息来帮助解决此问题,请告诉我。

python terminal import sensor beagleboneblack

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

Swift中的接近传感器(来自Objective-C)

我是一个相对较新的快速用户,现在,我需要利用iPhone的接近传感器.我跟距离无关,但我想知道iPhone附近有什么东西.

所以我在Objective-C中找到了这个代码,但是我在Swift中需要它.我尝试了一些方法,但任何方法都有效.所以这是我需要的代码:

- (void) activateProximitySensor {
    UIDevice *device = [UIDevice currentDevice];
    device.proximityMonitoringEnabled = YES;
    if (device.proximityMonitoringEnabled == YES) {
        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(proximityChanged:) name:@"UIDeviceProximityStateDidChangeNotification" object:device];
    }
}

- (void) proximityChanged:(NSNotification *)notification {
    UIDevice *device = [notification object];
    NSLog(@"Detectat");

    //DO WHATEVER I WANT
}
Run Code Online (Sandbox Code Playgroud)

编辑1:我试过的是这样的:

override func viewDidLoad() {
        super.viewDidLoad()
        UIDevice.currentDevice().proximityMonitoringEnabled = true;

        NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector(proximityStateDidChange()), name:UIDeviceProximityStateDidChangeNotification, object: nil);
}
Run Code Online (Sandbox Code Playgroud)

和功能:

func proximityStateDidChange() {
        //DO WHATEVER I WANT
}
Run Code Online (Sandbox Code Playgroud)

我在执行应用程序时始终执行的功能.

编辑2:尝试Eric D.评论的代码

let sensor = MySensor() //declared in the …
Run Code Online (Sandbox Code Playgroud)

objective-c sensor proximity swift

5
推荐指数
4
解决办法
5591
查看次数