Autonomous VIO for Quadrotor

Autonomous Visual Inertial Odometry for CrazyFlie 2.0

This VIO (Visual Inertial Odometry) project involves trajectory planning, accurate tracking and state estimation through stereo vision to realize GPS-denied quadrotor autonomy. Once a quadcopter can accurately estimate its own state and use it for planning and control, the last step towards autonomy is to implement a mapping solution so the quadcopter can sense where the obstacles are using its on-board sensors. [code]

Simulation

Approach

Trajectory Planning:

In the simulation, the map is assumed known and the start and the goal position is given ahead. In practice, when the whole map is unkown to the robot, the robot is expected to sense its surroundings by using its on-board sensors and plan the trajectories in real-time. In the planning phase, we make the following process:

  • Discretizing the map into voxel grids
  • A* algorithm to find the shortest path to the goal position
  • Waypoints prune to elemenate shape turns and alleviate quadrotor overshoot
  • Using Minimum Snap to interpolate between post-processed waypoints and generate the final smooth trajectory

The following is an example:

A* Path, Pruned Waypoints, Final Trajectory

Trajectory Tracking:

For quadrotor tracking, a Nonlinear Geometric Controller is designed in reference to Lee et al..

The Frame Modeling of CrazyFlie 2.0

The performance of tracking control:

Trajectory Tracking Control

State Estimation:

In this setup, the on-board sensors are IMU and a stereo rig. A complementary filter is applied to estimate the attitude of a flying quadrotor based on data from a 6 axis IMU which provides acceleration and angular rate measurements. Given stereo vision, depth can be well extracted. Feature matching and RANSAC are then applied to estimate the pose of the quadrotor. Besides, an Error State Kalman Filter (ESKF) is specially designed for pose estimation. We proceed by incorporating every IMU update as a nonlinear state update to update our nominal model of the pose of the system \(x_n\). Since IMU updates are more frequently than vision updates, we use visual measurements to correct the state.

The Estimated, Desired and Practical Position and Velocity with ESKF