Hi,
I've have been lurking for some time - been using an APM in a Multiplex Xeno for about 2 years, and have recently started scaling up to an x8 to enable me to carry more gear (Samsung NX1000) and cover more ground. My primary interest is DEM generation for wind and hydro resource assessment, and I'll certainly share both findings and progress over the next few months - I really believe that drones will change the way we carry out land surveys in future, especially as our ground based computers become more powerful: allowing us to use the data for much more detailed CFD based resource analysis. (I am also looking at the feasibility of a semi-automatic toolchain from visual SFM to Meshlab and then open-foam as an alternative to Agisoft and Ansys Fluent which I am currently using..) So now that's out the way lets get onto the good stuff:
I've been building an antenna tracker for use with mission planner using a Servocity pan/tilt gimbal. All the gear I normally take to the field has been placed inside an enclosure thats got a tripod quick release mount on the bottom of it, significantly reducing setup time and clutter.
I'm using an apm1 with oilpan as the tracker controller, and have re-written/updated the Ardutracker code for the newest versions of arduplane using the HAL layer. It would be great to use the ahrs, compass and gps from the apm to provide fully automatic tracking, and allow a moving ground station that does not rely on a pc for data. This would be especially useful in the UK as we are currently allowed to operate up-to 500m away from our control point - being able to move easily from one location to another would enable surveying of larger areas in a single flight.
Though in theory this should be simple, and I can see all the peices of the puzzle are there, I'm really struggling to put them together. I think what should be going on is somthing like this:
- Initialisation
- Define tracker variables (servo max/mins for pwm and angle)
- Begin serial comms
- Get sensors up and running
- Loop
- Find where it should be pointing
- Update ahrs, compass and gps
- Use APmount to point tracker in correct direction
I've got some of this stuff done and have put a copy of the code up with this post, but would really appreciate some help in getting to the next step: intercepting a mavlink stream (and opening it/sending heartbeats to keep it going if required) and calling amount to control the servos.
Incase anyones interested the enclosure on my tracker contains:
- Powered USB2 Hub
- Fdti-USB adapter to a 433Mhz 3DR module (not shown in the pics as I'm updating the Moxon I use for comms, and building a mount for it. I cannot recommend this antenna design highly enough: compact easy to manufacture and great performance similar to a 2-3 element yagi, it will be mounted horizontally 6" above the floor of the camera mount to give good performance when no camera is mounted, and hopefully acceptable performance when one is...)
- Pinnacle DVC100 video capture
- 32Gb Storage (I use a 64Gb macbook air so it's appreciated!)
- USB cable to connect to APM
- Power distribution
- 12v Buck-boost for video receiver (with heavy RC filter on output)
- 5v BEC for APM
- 6v BEC for tilt servo
- 7.4v BEC for pan servo
- External Connectors
- 5m USB lead for GCS connection
- Deans connector (can run off 4-6s battery - I pretty much use 5000mAh 4s batteries for everything... )
- Composite Video out - for connection to monitor/dvr
Once I've got the core code up and running (hopefully with some help! :) ) I've got a few projects planned for this thing: I've used a camera pan/tilt for a reason, as a connected APM would effectively become a "follow-me" box for ground based applications, which would allow a whole new world of applications (eg. wire-cams, telescope control etc...) with appropriate hardware.. On a personal note I'm really interested in the possibility of wire-cams for filming mountain biking with a cinestar or rusty type gimbal - it would certainly make setting them up a lot easier if you didn't have to get the tension so high to eliminate unwanted movement (which is minor, ie slow, in comparison to a multicopter).
Lastly I'd like to apologise for the people who's code I have butchered and not attributed, this community really is a beacon of light in the world of OS hardware, and the codebase that the contributors have produced is a testament to this. It does however exceed my abilities at this stage! to misquote a film it certainly an "abstraction to far" for me to get my head round at the moment, but once I've got this nut cracked I'd love to help out in anyway I can.
Comments
Sorry I should also point out a fudge I've made to retain compatibility with Mission Planner. Using "!!!" as the header for the serial data causes problems with the new version of Ardunio as it triggers the APM boot-loader when uploading the complied code - I've cut the string down to just "!!" in decode.ino to get round this.
Thanks Joshua, I'm pretty chuffed with the build so far - I've got a couple of noise issues with the pan servo that I think a ferrite choke should sort on the tilt but other than that it's been really painless so far (other than described bellow :) )
I've also made a 'simple' tracker exactly like the original ardutracker code, running at 57600 baud - maybe it should be put on the wiki section for antenna tracking?
Josh:
The servo city box is pretty expensive but works very well - you need to be very careful with the exposed gears though - early on in testing they had a habit of trying to grab and munch the cables to the receiver, they survived but I gave myself a lovely blood blister in the process...
The 433Mhz is pretty small, I used the calculator at W4/VP9KF to get the dimensions and built the first iteration out of scrap parts I had kicking about: the next version, which is going on this tracker, will be made out of acrylic and have 12" of feeder cable.
Arthur:
your project sounds great - An ethernet bridge would be awesome; and I'd love to get my hands on one... Could the gps port on your current version also be used with an ardu-imu? That way a fully automatic system could be achieved allowing movement of the base station and super simple setup in a much more compact package than I'm building.
Pete, you might be interested in this board I'm developing:
It's a 3DR radio <-> Ethernet bridge, with antenna tracking output. It's still a prototype on a breadboard, but seams to be very useful.
There is discussion at drone-discuss.
I've heard very good things about the servo city boxes. How big is your 433 MHz antenna you're putting on there?
Thank you for fixing everything Pete the blog and build look awesome!