Example GPS constellation in GPS guide had sub-optimal setup of hosts.
Wojbie opened this issue ยท 5 comments
Explanation of Issue
Example constellation in doc/guides/gps_setup.md GPS guide had sub-optimal setup of hosts. It results in devices on same y level as constellation to get ambiguous positions errors as close as 500 blocks away from it. This is because 3 out of 4 computers have same y level. Issue intermittent depending on exact distances.
Example of issue (Provided by user who discovered it):
2024-01-04_17-46-30v2.mp4
Possible solution 1
Possible solution would be to change from example constellation to one commonly used before this guide was made (yes i know labels in this image as misleading). But it is harder to build and explain.
Possible solution 2
We could brainstorm alternative constellation that would have increased reliability. Also if someone smarter then me was able to math exactly why first picture returned ambiguous position we would have more data what is happening here.
There was a similar issue in #1530 and a doc update in #1542 which I've still not merged (sorry Lupus, I entirely forgot!). I'm not thrilled about how the GPS tutorial reads right now - there's too many asides in it - but maybe it's better to pull that PR in for now anyway.
It is just sufficient to move the hosts further apart from each other. I hadn't actually considered alternative shapes - the one you're proposing will also fail at a certain distance, but I don't know when the drop-off is.
I have completely missed that this issue was reported before.
My goal with the constellation was to have something that was easy to build even for someone who couldn't see the image.
I definitely agree that your shape is simpler to explain and build.. What about increasing example suggested size as noted in #1530 between computers from 4 blocks (and only 3 blocks upward) to be 5 blocks apart in all axis? This would increase the accuracy in common ranges while still keeping it a small build. Even just moving upper computer to 4 block from 3 seems to help with this issue from my test.
Edit: Thinking about this, could it be fixed by moving one of the 3 computers at the bottom to be at the same y level as the computer at the top?
It might also increase accuracy to move one of arm computers upward yea... but i think just increasing proposed size as SquidDev mentioned would solve this while keeping array shape simple to understand.
My goal with the constellation was to have something that was easy to build even for someone who couldn't see the image.
Maybe we should have a note about a more optimised setup?
Edit: Thinking about this, could it be fixed by moving one of the 3 computers at the bottom to be at the same y level as the computer at the top?
I'm not thrilled about how the GPS tutorial reads right now - there's too many asides in it
Yeah, maybe that should be footnotes if they are worth keeping at all.
I would offer to rewrite the guide but life is very busy for me lately and I've not been immersed in CC for a while.
If I can find time and motivation, I'll rewrite the entire guide and probably incorporate #1542 into it.
The real problem lies in the line 42 and 83.
Those are used to prevent division by zero errors which happen when three gps hosts are on one axis.
There are therefore two types of dead zones, 0.1% (L42) and 1% (L83). Describing the distance from the plane formed by three gps hosts.
The simplest solution would be narrowing the error to maybe 0,01%, since that would solve the issue for at least 10.000 blocks even if the hosts are directly next to each other.
The proposed solution would result in a error range of more than one block only outside the world height.
To visualize the error range imagine a widely opened double cone. The small region which is outside of both is where gps problems occour.
The ideal solution would be a composite of:
- Mentioning the error regions in the docs (possibly with a graphic)
- Using only one error detection value
- Make the error detection configurable
- Lower the error detection rate
- Changing the example gps constalation
Further note:
When a result is rounded use should use the same error value, as this is what prevents the error
When relatively near the constalation.