Initially I will use two different sensors for obstacle avoidance. lidar for closer range 2D image of space (obscale avoidance, scanning ground before landing, maybe SLAM)
and laser rangefinder for long range 1D distance sensing (looking for high buildings, maintaining altitude precisely, maybe high speed obstacle avoidance)
I went with cheapo robopeak hobby lidar, which seems to work well, here is a git repo for the library (node and beaglebone) (I also considered a lightweight hokuyo lidar) and for laser range finder I'll go with something like SF02 from paralax
these might be used in combination with some simple IR or just cameras (need more CPU but could double as optical flow sensors) used to locate becaons for landing or grabbing things
Ideally, both sensors should have an unobstructed front view on pitch dimension, with aditional unobstructed jaw dimension for LIDAR. Both sensors need to be able to independantly rotate on pitch axis for compensation of the angle of the drone when flying, and for scanning up and down (going in through windows, looking down when landing, etc) maybe rangefinder should also rotate on jaw axis on some fast servos for looking around independant of the drone orientation. not sure yet.
IR and ultrasound were also options, they are cheap but tricky and unreliable, (ultrasound behaves extra badly due to propeller noise on drones) These things can be compensated for, but laser rangefinding will always afaik give more accuracy and reliability at a price.
First prototype in python, work in progress, I should think of more interesting project names.
I've implemented some protocols above this, like
I use it for all kinds of things, like
and I've built a few libs on top of this