I've created a working antenna tracker for my hexacopter with a MultiWii controller using a spare Arduino Nano V3 and an XBee Pro 900 pair. MW protocol is decoded and GPS LAT/LON/Speed and ALT and extracted. The issue I have is that the positions are updated with an amount of lag that can become an issue performing close fast passes.
After watching a number of videos of the various trackers out there it is fairly apparent that they all show the same lag. The antenna's all seem to point behind the drone as it is travelling along perpendicular to a zero bearing.
Read quite a few posts and it does appear that a few of you have tried looking at a solution to this.
What I would like to propose is to calculate an estimate of the actual drone position based on the last three positions and the current speed. using three positions can give you the angle of a curve. The distance traveled from the last point along that curve can be estimated from the current speed. In the time between the last GPS pos and the next one to arrive, you could estimate where it should currently be. You could also filter out repeat coordinates based on where you estimate it should be next. In my case, the hexacopter can be speeding along and then come to a stand still at one position. If the last three GPS positions are the same then the curve and distance calculations should resolve to the same position.
The question to put out there is if anyone has come up with any related maths to work this one out?
When you think about it, most GPS car navigation systems would use this method to show your position moving along smoothly on a freeway, so there must be some maths already out there to work this out.
Input greatly appreciated.
I've done some very basic look ahead while playing around with ardustation's antenna tracker functionality. Some thoughts on this
- My lookahead was only on pan since tilt is mostly close enough. I looked at the average of the 2 previous pan movements, calculated the new one and then added 20% of the previous average to the new one to get a pan angle with some look ahead. Playing around with the 20% to suit your pan servo setup is the trick, using velocity instead of a fixed % would be better. It works well enough for me.
- You can build in some fat with antenna choice. I'm using a helical antenna, it has a coverage cone of around 60 degrees, so it is not critical to be pointed directly at the plane.
- Another option that is working really well for me is using a diversity receiver. With a directional and cloverleaf antenna on the reciever, it chooses the strongest signal. When the plane is in close, it mostly uses the cloverleaf.
Using velocity and adjusting pan and tilt would be the ultimate. I'd be keen to see what others have to say.
yes, it's really just a top down 2D estimation I need to calculate as the pitch is always spot on due to the much higher frequency of update of the baro/sonar alt information.
I upgraded the existing tracker to use a dual diversity 5.8GHz Rx yesterday. One antenna is a Skew-Planar Wheel and the other is the patch antenna which is being directed by the two servo's. After some testing, when the patch antenna is moved >30deg away from the target the skew-planar kicks in. No noticeable video drop out when it does this. Not bad for a $100 diversity Rx.
I still want to explore increasing the accuracy/resolution of the GPS points using estimation as the patch antenna does give a clearer signal when it is spot on target to the skew-planar.
Just need to get my head around the maths behind it all.