AR Drone 2/Mapping
One of the functions that the AR.Drone2 should have is to be able to map a certain area (starting off with a room). In order to do this the AR.Drone2 needs to be able to: measure distance to objects, keep track of it's own position, yaw and pitch and avoid crashing into objects. The first two things are needed to create a map from measurements during flight, the third is to maintain flight. It would also be usefull to make an algorithm for the AR.Drone2 to explore the area and store the map in the most efficient way.
Storing the map
For storing the map, we believe Octomap (paper) to be a good solution. It's a datastructure to store a 3D map that is updateable, flexible and compact. One minor setback was that it was implemented in C++ instead of C. At first this seemed like a problem, but after some research it was concluded that this should be no problem. C code can easily use C++ code if a wrapper is used to link C++ methods to C (link). This was also tested with a smal l program: a C program that increments a number using a method of a C++ program. With this it was confirmed that it really shouldn't be a problem to use Octomap within paparazzi.
Exploring the area
Since the AR.Drone2 will only have point measurement sensors to measure distance to objects it might be best to approach the exploring as a 2D problem and solve this at different heights. A popular approach is Frontier-Based Exploration. A summary: you store free and occupied cells, other cells are unknown, you try to find the largest frontier (the border between free and unknown cells) with the shortest travel distance from your current position. There are also variations for 3D (link). But this was based on a wide range sensor (kinect) and therefore less suitable for the AR.Drone2.
Avoiding objects
To be able to avoid object, you need to know your surroundings. That's why the object avoidance function is closely related to mapping. Therefore it will probably be developed simultaneously.