The Visual-Inertial Canoe Dataset

  • Martin Miller (Creator)
  • Soon-Jo Chung (Creator)
  • Seth Andrew Hutchinson (Creator)



If you use this dataset, please cite the IJRR data paper (bibtex is below).

We present a dataset collected from a canoe along the Sangamon River in Illinois. The canoe was equipped with a stereo camera, an IMU, and a GPS device, which provide visual data suitable for stereo or monocular applications, inertial measurements, and position data for ground truth. We recorded a canoe trip up and down the river for 44 minutes covering 2.7 km round trip. The dataset adds to those previously recorded in unstructured environments and is unique in that it is recorded on a river, which provides its own set of challenges and constraints that are described
in this paper. The data is divided into subsets, which can be downloaded individually.

Video previews are available on Youtube:

The information below can also be found in the README files provided in the 527 dataset and each of its subsets. The purpose of this document is to assist researchers in using this dataset.

The raw images are stored in the cam0 and cam1 directories in bmp format. They are bayered images that need to be debayered and undistorted before they are used. The camera parameters for these images can be found in camchain-imucam.yaml. Note that the camera intrinsics describe a 1600x1200 resolution image, so the focal length and center pixel coordinates must be scaled by 0.5 before they are used. The distortion coefficients remain the same even for the scaled images. The camera to imu tranformation matrix is also in this file. cam0/ refers to the left camera, and cam1/ refers to the right camera.

Stereo rectified, undistorted, row-aligned, debayered images are stored in the rectified/ directory in the same way as the raw images except that they are in png format. The params.yaml file contains the projection and rotation matrices necessary to use these images. The resolution of these parameters do not need to be scaled as is necessary for the raw images.

The stereo rectification parameters. R0,R1,P0,P1, and Q correspond to the outputs of the OpenCV stereoRectify function except that 1s and 2s are replaced by 0s and 1s, respectively.

R0: The rectifying rotation matrix of the left camera.
R1: The rectifying rotation matrix of the right camera.
P0: The projection matrix of the left camera.
P1: The projection matrix of the right camera.
Q: Disparity to depth mapping matrix
T_cam_imu: Transformation matrix for a point in the IMU frame to the left camera frame.

The camera intrinsic and extrinsic parameters and the camera to IMU transformation usable with the raw images.

T_cam_imu: Transformation matrix for a point in the IMU frame to the camera frame.

distortion_coeffs: lens distortion coefficients using the radial tangential model.

intrinsics: focal length x, focal length y, principal point x, principal point y

resolution: resolution of calibration. Scale the intrinsics for use with the raw 800x600 images. The distortion coefficients do not change when the image is scaled.

T_cn_cnm1: Transformation matrix from the right camera to the left camera.

Here, each message in name.csv is described

time # GPS time in seconds
message name # rawimus
acceleration_z # m/s^2 IMU uses right-forward-up coordinates
-acceleration_y # m/s^2
acceleration_x # m/s^2
angular_rate_z # rad/s IMU uses right-forward-up coordinates
-angular_rate_y # rad/s
angular_rate_x # rad/s

time # GPS time in seconds
message name # IMG
left image filename
right image filename

time # GPS time in seconds
message name # inspvas
altitude # ellipsoidal height WGS84 in meters
north velocity # m/s
east velocity # m/s
up velocity # m/s
roll # right hand rotation about y axis in degrees
pitch # right hand rotation about x axis in degrees
azimuth # left hand rotation about z axis in degrees clockwise from north

time # GPS time in seconds
message name # inscovs
position covariance # 9 values xx,xy,xz,yx,yy,yz,zx,zy,zz m^2
attitude covariance # 9 values xx,xy,xz,yx,yy,yz,zx,zy,zz deg^2
velocity covariance # 9 values xx,xy,xz,yx,yy,yz,zx,zy,zz (m/s)^2

time # GPS time in seconds
message name # bestutm
utm zone # numerical zone
utm character # alphabetical zone
northing # m
easting # m
height # m above mean sea level

Camera logs
The files name.cam0 and name.cam1 are text files that correspond to cameras 0 and 1, respectively. The columns are defined by:

unused: The first column is all 1s and can be ignored.

software frame number: This number increments at the end of every iteration of the software loop.

camera frame number: This number is generated by the camera and increments each time the shutter is triggered. The software and camera frame numbers do not have to start at the same value, but if the difference between the initial and final values is not the same, it suggests that frames may have been dropped.

camera timestamp: This is the cameras internal timestamp of the frame capture in units of 100 milliseconds.

PC timestamp: This is the PC time of arrival of the image.

The kml file is a mapping file that can be read by software such as Google Earth. It contains the recorded GPS trajectory.

This is a csv file of the GPS trajectory in UTM coordinates that can be read by gpsbabel, software for manipulating GPS paths.

author = {Martin Miller and Soon-Jo Chung and Seth Hutchinson},
title ={The Visual–Inertial Canoe Dataset},
journal = {The International Journal of Robotics Research},
volume = {37},
number = {1},
pages = {13-20},
year = {2018},
doi = {10.1177/0278364917751842},
URL = {},
eprint = {}
Date made availableNov 14 2017
PublisherUniversity of Illinois Urbana-Champaign


  • slam
  • vision
  • monocular
  • inertial
  • illinois
  • imu
  • stereo
  • sangamon
  • river
  • canoe
  • gps

Cite this