Bundle adjustment test fails on aarch64 #289

Open
clalancette opened this Issue Jun 1, 2017 · 4 comments

Comments

Projects
None yet
2 participants

I'm running ceres-solver on Ubuntu 16.04 on an aarch64 machine (a Pine64 board). When I try to run the bundle_adjustment_test on that architecture, the first test (DenseSchurWithAutomaticOrdering) fails with the following:

Running main() from gmock_main.cc
[==========] Running 1 test from 1 test case.
[----------] Global test environment set-up.
[----------] 1 test from BundleAdjustmentTest
[ RUN      ] BundleAdjustmentTest.DenseSchurWithAutomaticOrdering
/home/ubuntu/ceres-tests/ceres-solver/internal/ceres/test_util.h:165: Failure
The difference between final_residuals[i] and expected_final_residuals_[i] is 0.28509468021827222, which exceeds SystemTestProblem::kResidualTolerance, where
final_residuals[i] evaluates to 0.66154853102510147,
expected_final_residuals_[i] evaluates to 0.94664321124337369, and
SystemTestProblem::kResidualTolerance evaluates to 0.0001.
Not close enough residual:0

(there are thousands more errors like that, I just chose the first one).

All of the other tests pass. Let me know if you need more information, I'm happy to provide it (or try patches).

clalancette referenced this issue in ros2/ceres-solver Jun 1, 2017

Merged

Make ceres-solver compatible with ROS2. #1

clalancette changed the title from Bundle adjustment test seems to fail on aarch64 to Bundle adjustment test fails on aarch64 Jun 2, 2017

Contributor

sandwichmaker commented Jun 15, 2017

what version of Eigen are you using? this looks like there is either a correctness or a precision bug in the underlying linear algebra library. I had an earlier report about this and upgrading to the latest version of eigen fixed the problem for them.

It's the version that is in Ubuntu 16.04, so it looks like 3.3~beta1-2 . What's interesting is that the test works just fine on x86_64 with this same version of Eigen; it only fails on aarch64.

So, I just rebuilt ceres-solver with Eigen 3.3.4 on my aarch64 board, and the bundle adjustment tests do seem to be passing now. It might be nice in CMakeLists.txt to detect when it is on aarch64, and require Eigen 3.3.4 or above. That being said, feel free to close this out. Thanks.

Contributor

sandwichmaker commented Jun 15, 2017

@alexsmac WDYT? also @clalancette we will happily take a patch to the effect.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment