Skip to content

Kinect and fiducial-based mobile robot navigation and localization system; written using libfreenect, the Player framework, and the Augmented Reality Toolkit Plus.

Notifications You must be signed in to change notification settings

wiplug/kinect-ar-robot-navigation

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Kinect-AR Robot Navigation and Localization
==========================

Kinect and fiducial-based mobile robot navigation and localization system written using libfreenect, OpenCV, the Player framework, and the ARToolkitPlus library.

Created by Drew Stebbins as part of an independent study with Professor Zack Butler at the Rochester Institute of Technology.

This software enables a mobile robot to perform visual marker-based localization as well as waypoint-based navigation and obstacle avoidance with the Microsoft Kinect sensor.

Localization
------------
ARToolkitPlus is used to generate ID-based planar visual markers and perform camera pose reconstruction based on monocular views of each marker.
The global coordinates of each marker are supplied to the software upon startup in a JSON file along with a set of waypoint descriptions. When the robot identifies a marker,
it combines the marker location information with the relative camera pose reconstruction to construct a strong estimate for the pose of the robot in 2D (and eventually 3D) space.
Using this pose estimate along with odometry information and optionally a floor plan of its environment, a particle filter method is used to produce a running estimate (and
confidence value) for the robot's current pose.

Navigation
----------
The goal of this system is to allow a robot to navigate reliably within an indoor environment for which a map may or may not be available.
To do this, though a floor plan map (outlining all walls and doors) is not required, the user must specify a set of waypoints and their line-of-sight adjacencies.
This enables the robot to perform shortest-path searches on the waypoint graph, and then simply execute "goto"-style subroutines to traverse each waypoint. 
To avoid obstacles when traveling between waypoints, a potential fields approach is implemented using the Kinect sensor's depth camera.

Dependencies
------------
* pthreads
* json-spirit: http://www.codeproject.com/Articles/20027/JSON-Spirit-A-C-JSON-Parser-Generator-Implemented (and in most package repositories)
* libfreenect: https://github.com/OpenKinect/libfreenect
* OpenCV 2.3+ (probably works with 2.x; untested): http://code.opencv.org/
* player 3.0.2: http://playerstage.sourceforge.net/ 
* Augmented Reality Toolkit Plus: https://launchpad.net/artoolkitplus

Building
--------
In top-level project directory:

mkdir build
cd build
cmake ../
make
sudo make install

Usage
-----
TODO: put instructions for final library API here.

Your Player robot must support odometry via the Position2DProxy object.

About

Kinect and fiducial-based mobile robot navigation and localization system; written using libfreenect, the Player framework, and the Augmented Reality Toolkit Plus.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published