【发布时间】:2012-08-03 01:52:50
【问题描述】:
有很多关于从加速度计数据、其他传感器数据中去除噪声、计算时空状态以及在 Android 和其他设备中使用卡尔曼滤波器的问题。
显然,最简单的方法是在 Android 上为稳定的移动设备(例如汽车)实施 JKalman 过滤器。
但是看JKalman代码包中的示例实现,并没有多说,其实和其他的Kalman实现有很大的不同。
他们像这样实例化一个 Kalman 类:
JKalman kalman = new JKalman(4, 2);
根据定义在哪里
public JKalman(int dynam_params, int measure_params) throws Exception {
this(dynam_params, measure_params, 0);
}
dynam_params 是“测量向量维数”,measure_params 是“状态向量维数”。
Android中读取的传感器数据应该如何映射到这些?
以下是要查看的加速度计数据,即每 500 毫秒采样一次。在其他听众中,有来自陀螺仪和指南针的数据。我应该如何将这些数据转换为卡尔曼的输入?
@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
}
}
【问题讨论】:
-
Kalman filter and quality of internal state variables 说他们已经实现了 JKalman,这让他们比我更聪明。
-
我受宠若惊:) 你想达到什么目标?您想跟踪方向或位置吗?据我所知,Android 已经有类似卡尔曼滤波器的东西,你为什么要尝试实现自己的?
-
嗨 Ali :) 我想跟踪位置。您是指here 中的“融合”传感器吗?它们不是靠自己的,因为无论如何您都需要对下一步进行累积近似。
-
另一件事是,these guys 使用 pedofilter(据他们的调查显示)和恒定步长完成了这项工作。所以这在某种程度上是可能的,它给了我观看这个视频的勇气。
标签: android accelerometer sensors android-sensors kalman-filter