Autonomous corridor flight of a UAV

Description: Autonomous corridor flight of a UAV using the Kinect sensor.

Submitted By: Chair of Automation Technology at the Chemnitz University of Technology

Keywords: UAV, quadrotor, kinect

Overview

Autonomous corridor following is performed using the Kinect sensor, the point cloud library (PCL) and ROS in combination with our own velocity, position and altitude controllers. All processing is done onboard on a Atom processor board, no further external sensors are used.

The 3D point cloud from the Kinect sensor is pre-processed, downsampled and searched for planes. The position and orientation of the UAV inside the corridor can be estimated from the plane parameters. A high-level controller then generates motion commands for the lower level controllers that keep the UAV on a trajectory in the middle of the corridor.

Altitude control is realized separately using a SRF 10 ultrasonic rangefinder. The current velocity over ground is determined using an optical flow sensor.

Obstacle avoidance is also included but the algorithm is still under development and partially untested.

Video

How to Reproduce Your Entry

Code to Checkout

SVN Repository https://borstel.etit.tu-chemnitz.de:8080/svn/tuc-ros-pkg/

Dependencies

The following ROS stacks and packages are required:

Build the package

$ svn co https://borstel.etit.tu-chemnitz.de:8080/svn/tuc-ros-pkg/
$ cd tuc-ros-pkg/trunk/stacks/tuc_pelican
$ export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:"`pwd`"
$ rosmake

Run the corridor extraction

First start the kinect_node:

$ rosrun kinect_camera kinect_node

And finally the corridor extraction node:

$ rosrun kinect_utils corridor_extraction

The corridor_extraction node subscribes to the point cloud topic (/camera/depth/points2) and the depth image topic (/camera/depth/image_raw) which are both published by the kinect_node.

It publishes the following topics:

  • /kinectPose: The estimated position and orientation of the kinect sensor within the corridor.

  • /flightCommand: The calculated motion vector. The raw vector does not consider obstacles.

  • /wall_marker: The marker of the estimated walls for visualization with rviz.

  • /flightCommand_marker: The marker of the motion vector for visualization with rviz.

  • /unmatchedPoints: Points which are not contained in one of the wall planes and thus may be part of possible obstacles.

Wiki: openni/Contests/ROS 3D/Autonomous corridor flight of a UAV using the Kinect sensor. (last edited 2011-01-21 09:56:07 by SebastianDrews)