Not many people know but we have an piece of open source software for controlling an Antenna Tracker. It's been built by Tridge (Arduplane lead developer) for use in the outback challenge.
Sadly we have no documentation and, as far as I know, nobody except Tridge has used it. Still given Tridge's track record on building great software I suspect it works well and if it doesn't, I'm sure we can fix it. So to not let this piece of code go to waste, I'd like some help from people who are interested to give it a try and help me figure out how it works.
Here's the little that I know:
- It runs on any of our supported board (APM1, APM2, PX4, Pixhawk, Flymaple and perhaps VRBrain)
- For APM1/APM2 users building the code is as easy as opening our hacked ArduinoIDE and selecting File > SketchBook > Tools > AntennaTracker and then building in the normal way. For PX4/Pixhawk, our autobuilder doesn't automatically build a binary but I can provide one if people are interested.
- It can control a Pan and Tilt gimbal like this or this found on servocity.com.
- It may or may not require a GPS
- It must somehow receive vehicle position updates from the ground station which has the telemetry radio that is connected to the vehicle. Maybe through a USB cable. Tridge probably uses the python ground station, MAVProxy, to passthrough the vehicle position data to the AT but perhaps we can get MichaelO to build out a similar feature in Mission Planner.
- I imagine this antenna tracker could also be used to keep a camera focused on the vehicle which might be good for easing the burden on creating videos of our vehicles.
So if you want to give it a try please do and stick any findings, questions or issues below. Alternatively Issues can go into the issues list.
I'll start sticking things into the wiki as they become clear.
Replies
AT Movie
Didi_ATMovie.mp4
Hi guys,
This is Didi from Rio de Janeiro, BR. I am following this AT forum for sometime looking forward to see the progress.
I am testing this AT too. I am glad that we have now a 0.72. Thank you so much for your hard work.
Despite the fact I am using 1.2 GHz for the video link between AT and the Quad (or plane) I have also a 5.8 Video link connection from AT to my LCD/Googles. It means I have now a full stand alone AT. No cables...
I will test it tomorrow and let you know.
Cheers,
Awesome! Thanks, Jakub and Randy.
I initially tried to counter-balance the antenna nose but gave up after adding 3oz to the opposite side. The main issue is the weight cannot be located far away from the surface where the Pixhawk is mounted. The rubberband solution seemed more simple and it worked.
One other issue I am struggling with is the PID settings. My setup is similar to Randy's where I use the Easy Tracker hardware with some strong digital PWM position servos. I have played around with the PID settings and have not noticed any change. My current settings are shown below and they seem to work well with an occasional exception of not always pointing correctly unless I give the axis a little nudge. I would also like to see some control over servo speed if that is a possible enhancement for the future. Is there a set of default PID settings I should be using on this setup? The Extended Tuning page "TEST" button seems to work quite well but it does not seem to show any change with varios PID settings.
Greg,
your PID settings are far from optimal. With Position servos you cannot use test mode to tune PID's, since the slider only represents PWM value that is delivered to the servo, not the desired angle. It works differently with CR servos in my version of firmware.
Your previous problems with huge offset on yaw are most likely related to bad pid settings. You need at least some I term, plus IMAX should be greater. Take a look at these PID's, this is a good starting point.
P=0.1
I=0.02
D=0
IMAX=4000
Quick tutorial (not optimal, but works for most cases):
Increase P until it starts to oscillate (you may give it a "nudge" after every increment to induce some oscillation). When it oscilaltes, reduce P a value that gives no oscillation or just a tiny tiny bit. When it doesn't oscillate anymore, reduce P by another 5% to be sure. After that incease I value until oscillation starts and then reduce it so that oscillation stops. When you increase I you may need to decrease P. You shouldn't use any D, since it may burn servos quite easily and it is not required in this setup.
In general P term works with big errors and doesn't do much when error is small. In your case when your tracker gets closer to the desired angle P term reduces it's strength up to a point, where it is unable to reach desired angle (you then need to give it "a nudge"). I term is mostly used to fix that and it tries to add a few extra moves to reach your angle. It won't work properly without I term. D term mostly fights against P and I to provide some dampening which may result in strange behavior in this type of control loop.
Jakub,
Thanks for the tutorial. I was expecting the test mode to simulate real world changes in position, not just a pwm change. It explains why I saw no difference when changing values. I will start with your values posted above and follow the procedure. It would be nice to see your suggestion added to the "Tuning" section of the AT Manual of the APM Wiki.
My original value for "Rate Max" setting was 2.0. I don't see a definition for this setting so I'll return it to 2.0 in case it does have an effect. Thanks!
It looks like the "Rate Max" settings in the Extended Tuning screen are the same as the PITCH_SLEW_TIME and YAW_SLEW_TIME settings in the Full Parameter List. At first, the definition appears to be like a "servo delay" parameter but I have not seen any effect by changing it from 2 to 20 seconds.
This parameter is meant for on/off servos and it won't make any difference on classic servos. I doubt anyone uses on/off servos though.. It's either classic servos or CR servos.