shadow1runner/qgroundcontrol

Try out different Kalman-covariance settings

Closed this issue · 2 comments

I have a high suspicion that the covariance measurement matrix gets configured wrongly.

Consider the following scenario:

frame A: inlier ratio = 0.003
frame B: inlier ratio = 0.002 (= worse than A)

The KF gets fed with the following covariance matrices:

frame A: 
R = [ 333 0 \\ 0 333]
frame B:
R = [ 500 0 \\ 0 500] (i.e. better then frame A)

this is off -> try skipping the reciprocal value and instead multiplying each value with e.g. 1000

The following quick results show almost no impact of the choice of the covariance matrix :o

long fisheye

with correct inlier ratio (1000*inlierRatio)

FAIL!  : CollisionAvoidanceTestBoscamLongFisheye::_5mHover() 'frameNumber <= dto.upperFrameNumberBound' returned FALSE. ()

FAIL!  : CollisionAvoidanceTestBoscamLongFisheye::fenceCrash() 'dto.shouldTriggerCollisionImmanent' returned FALSE. ()

FAIL!  : CollisionAvoidanceTestBoscamLongFisheye::fenceHover() 'dto.shouldTriggerCollisionImmanent' returned FALSE. ()

FAIL!  : CollisionAvoidanceTestBoscamLongFisheye::_45deg_fenceCrash() 'dto.shouldTriggerCollisionImmanent' returned FALSE. ()
happens: triggered at frame #109

FAIL!  : CollisionAvoidanceTestBoscamLongFisheye::_45deg_noCaHover() 'dto.shouldTriggerCollisionImmanent' returned FALSE. ()
happens: in both

FAIL!  : CollisionAvoidanceTestBoscamLongFisheye::_45deg_slowFenceOverfly() 'frameNumber >= dto.lowerFrameNumberBound' returned FALSE. ()
happens: 52 >= 55 -> false

with wrong inlier ratio (1/inlierRatio)

FAIL!  : CollisionAvoidanceTestBoscamLongFisheye::_45deg_5mHover() 'dto.shouldTriggerCollisionImmanent' returned FALSE. ()

FAIL!  : CollisionAvoidanceTestBoscamLongFisheye::_45deg_fenceCrash3() 'frameNumber <= dto.upperFrameNumberBound' returned FALSE. ()

FAIL!  : CollisionAvoidanceTestBoscamLongFisheye::_45deg_noCaHover() 'dto.shouldTriggerCollisionImmanent' returned FALSE. ()

cheap fisheye

with correct inlier ratio (1000*inlierRatio)

Totals: 8 passed, 2 failed, 0 skipped, 0 blacklisted

FAIL!  : CollisionAvoidanceTestBoscamCheapFisheye::fenceCrash2() 'frameNumber >= dto.lowerFrameNumberBound' returned FALSE. ()

FAIL!  : CollisionAvoidanceTestBoscamCheapFisheye::fastMetalFence() 'frameNumber >= dto.lowerFrameNumberBound' returned FALSE. ()

with wrong inlier ratio (1/inlierRatio)

Totals: 7 passed, 4 failed, 0 skipped, 0 blacklisted

FAIL!  : CollisionAvoidanceTestBoscamCheapFisheye::fenceCrash() 'frameNumber >= dto.lowerFrameNumberBound' returned FALSE. ()

FAIL!  : CollisionAvoidanceTestBoscamCheapFisheye::fenceCrash2() 'frameNumber >= dto.lowerFrameNumberBound' returned FALSE. ()

FAIL!  : CollisionAvoidanceTestBoscamCheapFisheye::fastFenceFlyOver() 'frameNumber <= dto.upperFrameNumberBound' returned FALSE. ()

1e5 seems to be an ok-ish value, which also has been graphed in #52