0

I have a small issue with the tango project. I am using the following TangoCoordinateFramePair:

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

However, I have a small issue. Indeed, when translating my tablet along the z-axis, I can get the motion on the z-axis, but after a rotation by 90 degrees on the x-axis, when translating on the z-axis, I get a motion on the y-axis which is not normal.

This error does not happen for all the rotation/translation I have tried but from time to time I get this error. It's unfortunately often enough to make my program unstable.

I was wondering whether this has happened to someone before and if you have ideas on how to solve or at least reinforce the robustness of the program.

As for my code, it is quite simple I guess:

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]);
    }
}

Thanks in advance.

LBes
  • 3,366
  • 1
  • 32
  • 66
  • Tango has serious problems with the rotation. They are using images to get the transformation. It can happen that the ICP can't generate a good relative transformation. You moving the device to fast or something else. Normally you would use the IMU to stabilize the ICP. But unfortunately they can't use the magnetometer to correct the rotation, because there is a software bug (https://plus.google.com/+ChuckKnowledge/posts/dVk4ZgVikgT). I think, they correct those false poses over time with an graph based slam. But that's only a guess (http://stackoverflow.com/a/34048913/2941914) – bashbug Feb 23 '16 at 12:46
  • @bashbug thanks for the insights. Well what I have tried so far is to get rid off the rotation information from the tango and replace it by the other sensors (gyroscope in my case) to get better and more reliable data. Thus, my rotation info is based on sensors while only the translation is based on images. However, even when rotating the tango slowly, I get incorrect translation information (due to the fact that the translation is not on the "good axis" – LBes Feb 23 '16 at 12:51

0 Answers0