Skip to content

Commit

Permalink
Fixed compilation error
Browse files Browse the repository at this point in the history
  • Loading branch information
pravishsainath committed Jan 7, 2019
1 parent 5d4fce6 commit 5760404
Show file tree
Hide file tree
Showing 6 changed files with 176 additions and 43 deletions.

This file was deleted.

57 changes: 43 additions & 14 deletions book/learning_materials/100_Visual_Odometry/102_VO_Introduction.md
Original file line number Diff line number Diff line change
@@ -1,24 +1,53 @@
# Visual Odometry : Introduction {#visual-odometry status=beta}

## Definition
### Definition

<br/>


Visual odometry (VO) is the process of estimating the egomotion (pose) of an agent using only the input of a single or multiple cameras attached to it.

## History
<br/>

**Example** : [video](https://youtu.be/lTQGTbrNssQ) showing the input images and VO computed for a moving vehicle.

<br/>

### History
<br/>

* **1980** :
<br/>
First known VO real-time implementation on a robot by Hans Moraveck PhD thesis (NASA/JPL) for Mars rovers using one sliding camera (sliding stereo). Very first idea of estimating a vehicle’s pose from visual input alone.

<br/>

* **1980 - 2000** :
<br/>
The VO research was dominated by NASA/JPL in preparation of 2004 Mars mission

<br/>

* **2004**:
<br/>
VO used on a robot on another planet: Mars rovers Spirit and Opportunity

<br/>

* **2004** :
<br/>
Formally described by Nistér et al. 2004 : the term “visual odometry” coined.
<br/>

* **1980** : First known VO real-time implementation on a robot by Hans Moraveck PhD thesis
(NASA/JPL) for Mars rovers using one sliding camera (sliding stereo).
Very first idea of estimating a vehicle’s pose from visual input alone.
* **1980 - 2000** : The VO research was dominated by NASA/JPL in preparation of 2004 Mars mission
* **2004**: VO used on a robot on another planet: Mars rovers Spirit and Opportunity
VO was revived in the academic environment. The term VO became popular.
The term was selected because vision-based localization is similar to the wheel odometry that estimates motion of a vehicle by integrating the number of turns of its wheels over time.
<br/>
VO integrates pixel displacements between image frames over time.

* **2004** : Formally described by Nistér et al. 2004 : the term “visual odometry” coined.
VO was revived in the academic environment. The term VO became popular.
The term was selected because vision-based localization is similar to the wheel
odometry that estimates motion of a vehicle by integrating the number of turns of its
wheels over time.
VO integrates pixel displacements between image frames over time.
<br/>

## Applications
### Applications
<br/>

* Robotics
* Wearable computing
Expand Down
26 changes: 20 additions & 6 deletions book/learning_materials/100_Visual_Odometry/103_VO_Types.md
Original file line number Diff line number Diff line change
@@ -1,32 +1,46 @@
# Visual Odometry Types {#visual-odometry-types status=beta}

## VO vs V-SLAM
### VO vs V-SLAM

<br/>

There are fundamental differences between the problems of Visual Odometry and Visual SLAM (Self-localization and Mapping) in terms of the scope and applicability.

<br/>

Some noteworthy points in this regard are that :
* VO only aims to solve the **local consistency** of the trajectory
* SLAM aims to solve the **global consistency** of the trajectory and of the map
* VO can be used as a building block of SLAM
* VO is SLAM before closing the loop.
<br/>

* VO only aims to solve the **local consistency** of the trajectory
* SLAM aims to solve the **global consistency** of the trajectory and of the map
* VO can be used as a building block of SLAM
* VO is SLAM before closing the loop.

### Types of Visual Odometry

## Types of Visual Odometry
<br/>

#### Based on number of cameras
* Monocular
* Stereo

<br/>

#### Based on type of camera
* Perspective
* Spherical
* Omnidirectional (360° FOV)
* Time of Flight
* RGB-D

<br/>

#### Based on when odometry is computed
* Online
* Offline

<br/>

#### Based on nature of approach
* Geometry-based
* Learning-based
57 changes: 41 additions & 16 deletions book/learning_materials/100_Visual_Odometry/104_VO_setup.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,37 +3,62 @@
The VO problem is modelled as a sequence of transformations

<figure class="stretch">
<img src="figures/vo_scheme.png"/>
<img src="figures/vo_scheme.png" style="width: 30em"/>
<figcaption>Figure 3.1 VO Problem Model </figcaption>
</figure>


## Input
Image Sequence
### Input

* Monocular : I_{0:n} = { I_0, I_1, …, I_n }
* Stereo : I_{l, 0:n} = { I_{l,0}, I_{l,1}, …, I_{l,n} }
I_{r, 0:n} = { I_{r,0}, I_{r,1}, …, I_{r,n} }
<br/>

## Output
Camera Poses
**Image Sequence**

<br/>

* Monocular :

$$ I_{0:n} = \{ I_0, I_1, …, I_n \} $$

* Stereo :

$$ I_{l, 0:n} = \{ I_{l,0}, I_{l,1}, …, I_{l,n} \} $$
$$ I_{r, 0:n} = \{ I_{r,0}, I_{r,1}, …, I_{r,n} \} $$

### Output

<br/>

**Camera Poses**

Poses of the camera w.r.t. The initial frame at k = 0

C 0:n = {C0, C1, …, Cn}
$$ C_{0:n} = \{C_0, C_1, …, C_n\} $$

Modelled by relative transformations T1:n
Modelled by relative transformations $T_{1:n}$

T1:n = { T1,0, T2,1, …, Tn,(n-1)}
$$ T_{1:n} = \{ T_{1,0}, T_{2,1}, …, T_{n,(n-1)}\} $$

For simplicity, use Tk, k-1 as Tk
For simplicity, denote $T_{k, k-1}$ as $T_k$,

$$ T_{1:n} = \{ T_{1}, T_{2}, …, T_{n}\} $$


The transformation matrix at each transformation $T_k$ is viewed as :

$$ T_{k, k-1} = T_{k} = \begin{bmatrix} \mathbf{R_{k, k-1}} & \mathbf{t_{k, k-1}} \\ 0 & 1 \end{bmatrix} $$


$\mathbf{R_{k, k-1}}$ = 3D Rotational Matrix

$\mathbf{t_{k, k-1}}$ = 3D Translation Vector

Rk, k-1 = 3D Rotational Matrix
Tk, k-1 = 3D Translation Vector
Concatenate to recover full trajectory :
Cn = Cn-1 Tn
$$C_n = C_{n-1} T_n $$




In short : Estimate "relative motion" from image sequence
* In short : Estimate “relative motion” from image sequence
* Usually, the initial camera pose $ C_0 $ is considered to be the origin and these relative transformations are applied from there.
* This transformation matrix corresponds to 6-DoF pose parameters $ = $ $ \{t_x, t_y, t_z, \varphi, \theta, \psi \} $ where $t_x, t_y, t_z $ are the translation parameters along the 3 axes and $\varphi, \theta, \psi$ are the Euler angles indicating the rotation about the 3 axes (pitch, roll and yaw).
76 changes: 71 additions & 5 deletions book/learning_materials/100_Visual_Odometry/105_vo_geometric.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,78 @@
# Geometric Approaches to VO {#vo-geometric-approaches status=beta}

The geometric approaches to VO consider the geometry of the scene and can be further sub-classified into the following
The geometric approaches to VO consider the geometry of the scene. These take advantage of the visual geometry in the camera-world model. They can be further sub-classified into the following

* Feature-based Methods (Sparse)(Indirect)
* Appearance-based Methods (Dense)(Direct)
* Hybrid Methods (Semi-dense)(Semi-direct)
<br/>

<br/>

1. **Feature-based Methods (Sparse)(Indirect) :**

<br/>

<br/>

Specific features (landmarks) are extracted from the images for motion estimation. These features across time instants are matched to compute the motion parameters using geometry. This is explained in detail in [next section](#vo-feature-based-pipeline).

<br/>

<br/>

<br/>

2. **Appearance-based Methods (Dense)(Direct) :**

<br/>

<br/>

The entire image as a pixel matrix is considered and optimized for the photometric error. These methods are also referred to as Correspondence-Free Methods.

<br/>

Motion estimation is done using one of the following methods :

<br/>

<br/>

* **Optical flow method**
<br/>
It individually tracks pixels (all or subs-region of image). It assumes small motion between frames and, therefore, is not suitable for VO applications since motion error accumulates quickly.

<br/>

<br/>

* **Featureless motion-estimation methods**
<br/>
All the pixels in the two images are used to compute the relative motion using a harmonic Fourier transform. This method works well with low-texture images but it is not used due to
- Very high computational expense
- less accuracy

<br/>

<br/>

<br/>

3. **Hybrid Methods (Semi-dense)(Semi-direct) :**

<br/>

<br/>

A hybrid of the first two stated methods.
<br/>

For more details, take a look at [SVO: Fast Semi-Direct Monocular Visual Odometry](https://www.ifi.uzh.ch/dam/jcr:e9b12a61-5dc8-48d2-a5f6-bd8ab49d1986/ICRA14_Forster.pdf)


<br/>

<br/>

<figure class="stretch">
<img src="figures/vo_geometric.png"/>
<img src="figures/vo_geometric.png" style="width: 30em"/>
<figcaption>Figure 4.1 VO geometric approaches </figcaption>
</figure>
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ The goal of this step is to find feature points and their respective corresponde

This is an essential step after feature matching to ensures that the camera motion is estimated accurately.
<br/>

- Random sample consensus (RANSAC) is the standard method for model estimation in the presence of outliers.
<br/>

Expand Down

0 comments on commit 5760404

Please sign in to comment.