About a voting mechanism
Why do you want this? Is it to keep the number of calculations low? This could help. Or is it to make the results of the filter better? This will not help, the filter itself has a better way to weight the quality of all the inputs. Or is it to keep non guasian errors out? This is what my filter already does with compass readings it doesn't trust.
mostly because we do only have 2 inputs for the KF. As you wrote, having 3 inputs would make the vector calculation too complicated and too slow.
The voting mechanism has been already established (IIRC) for error redundand space travel computer architectures:
3 independend computers calculate results independently and compare the results. If 1 has a completely different result (because of e.g. particle radiation to the memory), it's dropped.
In our case it's quite similar: if 1 sensors has a completely different result (because of interferences of what kind ever), it's dropped.
If you take the dimensions for a carpet covering your living room, and you get
2 times 5,00 m x 3,50 m
and 1 time 3,00 m x 3,40 m
will you take the average of all 3? Surely not, because at the last one you surely had made a mistake.
So if two values differ only slightly but 1 significantly: the latter probably is a stray bullet.
Dropping the stray bullet and taking the mean of the others or take it as inputs for the KF) is the most likely and most clever approach.
Odometric heading is subject to accumulation of errors, so the filter will ignore this info altogether after a few seconds. Odometric turn rate is not subject to accumulation of errors. So this can be used. But how reliable is this information in comparison to the gyro? I have never run any test so I cannot be sure.
I have no information about comparing odometric with gyro data, but with compass data I got lots of it:
odometric data are estimated 100 times more reliable.
Using a compass addtionally, and trying to increase the odometric reliabiltity: this attempt fails. It's always worse than odometry alone.
Going ahead is almost 100% reliable (5 cm left/right deviation and 1cm distance difference when 5m going ahead), even if the ground changes from wood to carpet.
But when driving 4x90° in a square of 1m edges 4 times each, odometry gives about 20° deviation and 10-20cm distance to the start-stop-point in the end.
Using a compass for turning calculation, I had 40-50° error in heading at the end and missed the target point at the end of up to 50 cm radius.
So still odometry is the "Golden Standard" for navigation: a filter has to make it far better, not far worse.