What should a quadcopter have, or have access to, in order to make this 'return home' feature work? Is GPS enough? What is the approach needed to make this happen?
I used a Arduino Mega 2560 with IMU to stable my quadcopter.
Robotics Stack Exchange is a question and answer site for professional robotic engineers, hobbyists, researchers and students. It only takes a minute to sign up.Sign up to join this community
The answer to what capabilities the quadcopter to have is: link loss algorithms and navigation capacity.
Link loss procedure for a robot could be:
determine that there's a link loss (no commands for 1 second?)
try to aquire link back, for a while (a minute?) (increase altitude while circling a calm radius)
increase altitude to the Safe to Navigate altitude (which is mission plan dependent, and maybe configured before each flight).
navigate to Lat-Lon of the Home Point (using intermediate points or direct navigation, if no intermediate waypoints exist).
slowly descend to the ground after some time (depends on the endurance capability of the vehicle); doing some alerting actions (playing music, waving around, displaying lights on and off) for any possible human/lives on ground would be cool.
Important: Home Point must be chosen away from people, cars, etc. And it should also be relatively easy to retrieve the vehicle back.
This procedure must be known by crew and any parties that are around the flight zone (other modelers, aviation authorities, friends, police, etc), and Home Point (and intermediate waypoints) must be set up / controlled before each takeoff.
I would go with one of two-ish methods to do this, but both methods require the craft to know its own position. You could do this with GPS, or an IMU, or any other means or combination of position tracking.
Method 1 - Only track where you are and where "home" is. Use sensors to detect obstacles along your path and navigate around them as applicable.
Method 2 - Leave "breadcrumbs". Set your first waypoint where "home" is. Every time you get X meters away from the last waypoint, set a new waypoint. Assume there is no obstacles between waypoints (set the waypoint distance small enough that this should always be true), then just follow the waypoints back.
Note that Method 1 is just Method 2 with a very large distance setpoint.
Primarily it will be GPS based. I have a Phantom 3 Pro and I have seen how the Go Home feature works. Before it returns to the x,y coordinates set as "home" it goes to a specific altitude. Presumably this is determined from the altitude of it's home position plus some pre-determined safety zone that is known to be clear of some of the tallest standard obstructions such as streetlights, power cables etc.
It is probably a very good idea to go directly to this altitude first by vertical means only, then traverse to the lat,long coordinates and then descend to landing as the DJI does. I have flown my quad in the mountains where I stand on a crest or cliff and fly down into the valley below. You don't want to hit cliff faces or trees on the way up or down.
Also, what about obstacle avoidance? If the vehicle goes behind something such as a tall building, making a bee line straight back to home is not going to be the best flight path.
The DJI has two ways of identifying home. One is to remember where it took off from, and if you don't give it enough time to get a proper GPS lock before you take off it might try to fly back to its previous "Home" site, which could be miles away. The other is that there is a GPS in the controller and it can communicate this to the vehicle so the vehicle comes back to the controller even if it is moving.
Also consider that it's probably coming home with little remaining battery power, so shortest distance back could be a good thing. This might contradict what was previously noted about obstacle avoidance.
I believe that the "Go Home" feature is mostly useful when it is lost from eyesight and especially when the signal gets weak or is lost completely. Many times it is only necessary to come back towards you and let you reestablish those two things, then it's probably best to let the controller assume its initial role.