Here are some videos of a successful test of ArduPilot (Copter)'s object avoidance using a forward facing StereoLabs ZED 3D Camera. The first video is the 3rd person view of the vehicle.
The vehicle is my now familiar EnRoute EX700 with a Pixhawk1 running Copter-3.5-dev paired with an NVidia TX1 and the ZED camera. On the TX1 was OpenKai which is a fully open source vision application being developed by Kai. OpenKai uses the ZED SDK to pull the pixel-level depth information from the camera. It then converts this into a DISTANCE_SENSOR mavlink message and sends it into ArduPilot.
This 2nd video shows the onboard video
You’ll likely notice from watching the onboard video, that the ZED camera is aimed up 20 degrees or so. The reason for this is that generally a multicopter leans forward in flight so it’s more important to have depth data from above than below. Also OpenKai does not yet adjust which part of the image it uses depending upon the vehicle’s attitude. This means that when flying at low altitudes (like in this test) it sees the ground and sends unnecessarily short distances to ArduPilot. This should be resolved in a future revision.
I’ve written up quite a detailed explanation of ArduPilot’s object avoidance on our developer wiki. This includes details on the algorithms we’re using and also on how sensor developers can get their proximity sensor data into ardupilot so that it can be used for object avoidance. I hope this helps bring others developers up to speed on this important feature that’s under very active development.
There are still many improvements we can make to the object avoidance to make it more robust and accessible to more users (see the issues list at the bottom of the wiki page linked) but it’s coming along well.