Реализация JKalman на Android

Есть много вопросов об удалении шума из данных акселерометра, данных других датчиков, расчете пространственного -временного состояния и использовании фильтра Калмана в Android и других устройствах.

Судя по всему, самый простой способ сделать это — реализовать фильтр JKalman на Android для стабильно движущихся устройств, например для автомобилей.

Но глядя на пример реализации в пакете кода JKalman, он мало что говорит и на самом деле сильно отличается от других реализаций 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
        }
    }
8
задан duru 6 August 2012 в 03:59
поделиться