Информация о движении не соответствует реальному движению устройства

У меня небольшая проблема с проектом танго. Я использую следующие TangoCoordinateFramePair:

framePairs.add(new TangoCoordinateFramePair(TangoPoseData.COORDINATE_FRAME_PREVIOUS_DEVICE_POSE,
                                            TangoPoseData.COORDINATE_FRAME_DEVICE));

Однако у меня есть небольшая проблема. Действительно, при перемещении моего планшета по оси z я могу получить движение по оси z, но после поворота на 90 градусов по оси x при перемещении по оси z я получаю движение по оси z. ось Y, которая не является нормальной.

Эта ошибка не возникает для всех поворотов/переводов, которые я пробовал, но время от времени я получаю эту ошибку. К сожалению, этого достаточно часто, чтобы сделать мою программу нестабильной.

Мне было интересно, случалось ли это с кем-то раньше, и есть ли у вас идеи о том, как решить или хотя бы усилить надежность программы.

Что касается моего кода, я думаю, он довольно прост:

private void setTangoListeners() {
    framePairs.add(new TangoCoordinateFramePair(TangoPoseData.COORDINATE_FRAME_PREVIOUS_DEVICE_POSE,
                                                TangoPoseData.COORDINATE_FRAME_DEVICE));
    mTango.connectListener(framePairs, new OnTangoUpdateListener() {

    @SuppressLint("DefaultLocale")
    @Override
    public void onPoseAvailable(TangoPoseData pose) {
          mView.setRotate(pose.rotation[0],pose.rotation[1],pose.rotation[2], pose.rotation[3]);
          mView.setTranslate(pose.translation[0],pose.translation[1],pose.translation[2]);
    }
}

Заранее спасибо.


person LBes    schedule 21.02.2016    source источник
comment
У Танго серьезные проблемы с ротацией. Они используют изображения, чтобы получить преобразование. Может случиться так, что ICP не сможет произвести хорошее относительное преобразование. Вы перемещаете устройство на быстрое или что-то еще. Обычно вы используете IMU для стабилизации ICP. Но, к сожалению, они не могут использовать магнитометр для коррекции вращения, потому что есть программная ошибка (plus.google.com/+ChuckKnowledge/posts/dVk4ZgVikgT). Я думаю, что они со временем исправляют эти ложные позы с помощью графического удара. Но это только предположение (stackoverflow.com/a/34048913/2941914)   -  person bashbug    schedule 23.02.2016
comment
@bashbug спасибо за понимание. Пока что я пытался избавиться от информации о вращении танго и заменить ее другими датчиками (в моем случае гироскопом), чтобы получить более качественные и надежные данные. Таким образом, моя информация о вращении основана на датчиках, а только перевод основан на изображениях. Однако, даже при медленном вращении танго я получаю неверную информацию о переводе (из-за того, что перевод не на хорошей оси   -  person LBes    schedule 23.02.2016