[Documentation] [TitleIndex] [WordIndex

Quadrotor Altitude Control and Obstacle Avoidance

Description: The Kinect is mounted on a quadrotor and used for closed-loop altitude control and basic obstacle avoidance.

Submitted By: UC Berkeley Hybrid Systems Lab (Patrick Bouffard, Jeremy Gillula, Haomiao Huang, Michael Vitus, Claire Tomlin)


This work is part of the STARMAC Project in the Hybrid Systems Lab at UC Berkeley (EECS department). http://hybrid.eecs.berkeley.edu/

The attached Microsoft Kinect delivers a point cloud to the onboard computer via the ROS kinect driver, which uses the OpenKinect/Freenect project's driver for hardware access. A sample consensus algorithm (from pcl) fits a planar model to the points on the floor, and the vehicle's altitude estimate is derived directly from this model. All processing is done on the on-board 1.6 GHz Intel Atom based computer, running Linux (Ubuntu 10.04).

Two use cases are demonstrated in the video.

In the first, the 3D sensor data is used only for altitude determination. Since the vehicle shown is not otherwise equipped with an effective indoor altitude sensor onboard, this enables flight outside of the lab.

The second use case takes place within the lab. The 3D data is again used to provide altitude, but to allow autonomous operation, a Vicon MX motion capture system is used to provide the other necessary degrees of freedom (x, y, and yaw). The 3D point cloud data is also used to determine the presence or absence of an obstacle within 1 m in front of the vehicle--whenever this is the case the vehicle pauses until the path becomes clear.

We consider these demonstrations to be straightforward proofs of concept showing that the Kinect sensor is a viable and useful addition to a small quadrotor platform with modest onboard computing. Besides the code directly related to this proof of concept, we have also released a framework for performing research experimentation on robotic quadrotors, in the form of the starmac-ros-pkg repository. This BSD licensed codebase is modular and can be easily adapted to additional quadrotor vehicles.


(See also this earlier video)

How to Reproduce Your Entry

Code to Checkout

ROS Repository starmac-ros-pkg provides all the functionality required for this demo, including a general purpose framework for operation of a quadrotor UAV such as the Pelican. The starmac_kinect_obstacle_avoidance package contains the parts specific to this demo--more reusable/generic components are found in other packages. See starmac_flyer/Tutorials/Installation for installation instructions.


There are many, which should be resolved by installing the above stacks. But the key ones for the demo are below. The demo was developed using unstable -- it may be possible to get it to work with cturtle but in particular, a recent pcl is needed.



{i} Note: The code is modular--this demo could run on any similar platform by replacing the asctec_adapter and asctec_autopilot nodes with functional equivalents for another quadrotor, or replacing the Kinect with some other source of sensor_msgs/PointCloud2 messages, or replacing the Vicon system with another source of nav_msgs/Odometry messages.

Running Demos

In each case, roscore should be running onboard the quadrotor, and it is recommended that a rxconsole is run on the ground station computer. Then use one of the following launch files depending on the scenario:

Manual Flight with Kinect-Derived Altitude

roslaunch flyer_kinect bringup_flyer_kinectalt.launch

Autonomous Flight with Obstacle Avoidance

roslaunch starmac_kinect_obstacle_avoidance patrol_demo.launch


Please contact us on the starmac-ros-pkg-users mailing list. Bug reports are on launchpad.

2019-04-20 13:00