Here’s what I’ll be attempting to achieve with GPS and compass data integrated into the code – its data’s available now, but just logged.
- In a large, open field, I’ll take Hermione to a random point, and she’ll record the GPS location; this will be the destination for the flight.
- I’ll then carry her to any other position in that field and pop her down on the ground pointing in any direction i.e. not necessarily towards the destination.
- As part of the current take-off procedure, she already records her GPS take-off location; from this and the destination GPS location, she’ll build up a flight plan in much the same format as she reads from file now: from the calculated distance and direction between the GPS points, she’ll convert these to a fixed velocity vector and flight period, wrapped in the stand take-off, hover and landing flight plan sequence.
- During the initial hover of the flight. she’ll rotate so she is pointing towards the target destination based upon the compass input.
- Once actually heading towards this destination, compass + yaw fuse to ensure she’d always pointing in the direction she’s flying
- At the same time, the fused combination of the double integrated acceleration, down facing video combined and GPS track the current location, comparing it to the predetermined destination position and thus tightly tracking her way to the destination.
All the above isn’t difficult unless I’m missing something hidden in plain site; a large part is in preflight checks, getting the destination and takeoff GPS points and compass orientation. The changes to the flight based on this target are pretty much in place already. Just minor changes are required to fuse the compass into the integrated yaw rate both for post-takeoff hover to point her towards the destination, and to maintain that during the flight to that destination.
This breaks down into several easy safe stages:
- the automated flight plan file creation can be done in the back garden with the motors not even powered up.
- Initially the flight plan will only cover take-off, hover with reorientation and landing, just to check she’s pointing the right way
- then the full flight plan maintains further incremental yaw as zero while she flies forwards towards the target for the time at the speed defined in the flight plan.
I’d better stop blogging and get on with it.
After a little more thought, I’m going to break it down further.
- I’ll still take Hermione around the park collecting a destination GPS location along with possible intermediate way points.
- Once at the arbitrary starting point, her initial GPS location is also recorded as part of her take-off routine.
- Together these GPS locations are passed to a sub-class of the FlightPlan() object to produce a flight plan structure identical in looks to the file based flight plan used now. The only difference is the coordinate system is GPS North, South, East and West in meters rather than piDrone take-off orientation of forward, backward, left and right.
- The compass will be used to determine the initial orientation WRT NSEW (magnetic) and set the base level yaw angle thus aligning it with the earth frame GPS flight plan (note to self – consider adding gain as well as the current offsets to the compass calibration; also what’s the angular error between compass and GPS north here?)
- The flight then runs using only the existing yaw control code – compass and GPS information are just logged as now.
This intermediate steps have clarified a few uncertainties and I definitely do now need to get on with it.