Skip to content

Commit

Permalink
all done.
Browse files Browse the repository at this point in the history
  • Loading branch information
xiang.gao committed Feb 28, 2021
1 parent e8b77aa commit 3463781
Show file tree
Hide file tree
Showing 21 changed files with 159 additions and 161 deletions.
6 changes: 4 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
## Welcome to 14 Lectures on Visual SLAM: From Theory to Practice, by Xiang Gao, Tao Zhang, Qinrui Yan and Yi Liu
## Welcome to Basic Knowledge on Visual SLAM: From Theory to Practice, by Xiang Gao, Tao Zhang, Qinrui Yan and Yi Liu

This is the English version of this book. If you are a Chinese reader, please check [this page](https://item.jd.com/12666058.html). Our code is in github: [code](https://github.com/gaoxiang12/slambook2).

The English version is based on slambook2 which is still under review. For now the English version is open source and please feel free to download it.

From 2019.6 the English version has been changed to LaTeX instead of markdown. In this repo you can find the LaTeX source files, and if you are only interested in the compiled pdf, click [here](./slambook-en.pdf).

I've finished the translation work in 2021.2.28. Thanks for all the patience.

If you are doing academic works, please cite:

``` @Book{Gao2017SLAM,
Expand All @@ -17,6 +19,6 @@ author = {Xiang Gao and Tao Zhang and Yi Liu and Qinrui Yan},

```
## For reviewers and coolaborators
## For reviewers and collaborators
- Please refer to chapter-cn directory for Chinese version.
- If you want to compile the cn version, install the fonts in font/ directory first, and use xelatex to compile. There might be some warnings or errors but you will see a compiled pdf to compare the results between the translated version and the original.
2 changes: 1 addition & 1 deletion chapters/backend1.tex
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
% !Mode:: "TeX:UTF-8"
\chapter{Backend: Part I}
\chapter{Filters and Optimization Approaches: Part I}
\label{cpt:backend1}
\label{cpt:9}
\begin{mdframed}
Expand Down
2 changes: 1 addition & 1 deletion chapters/backend2.tex
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
% !Mode:: "TeX:UTF-8"
\chapter{Backend: Part II}
\chapter{Filters and Optimization Approaches: Part II}
\label{cpt:backend2}
\begin{mdframed}
\textbf{Goal of Study}
Expand Down
2 changes: 1 addition & 1 deletion chapters/designTracker.tex
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
% !Mode:: "TeX:UTF-8"
\chapter{Practice: Stereo Visual SLAM}
\chapter{Practice: Stereo Visual Odometry}
\ref{cpt:13}
\begin{mdframed}
\textit{Goal of Study}
Expand Down
12 changes: 6 additions & 6 deletions chapters/gaussian-distribution.tex
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,14 @@
\chapter{Gaussian Distribution}
\label{cpt:app-A}
\section{Gaussian Distribution}
If way say a random variable $x$ satisfies a Gaussian distribution $N(\mu, \sigma)$, then its pdf is:
If way say a random variable $x$ satisfies a Gaussian distribution $N(\mu, \sigma)$, then its \textit{pdf} is:
\begin{equation}
p\left( x \right) = \frac{1}{{\sqrt {2\pi } \sigma }}\exp \left( { - \frac{1}{2}\frac{{{{\left( {x - \mu } \right)}^2}}}{{{\sigma ^2}}}} \right).
\end{equation}

The matrix form is:
\begin{equation}
p\left( x \right) = \frac{1}{{\sqrt {(2\pi)^N \det \left( \boldsymbol{\Sigma } \right) }}}\exp \left( { - \frac{1}{2}{{\left( {\mathbf{x} - \boldsymbol{\mu} } \right)}^\mathrm{T}}{\boldsymbol{\Sigma} ^{ - 1}}\left( {\mathbf{x} - \boldsymbol{\mu} } \right)} \right).
p\left( \mathbf{x} \right) = \frac{1}{{\sqrt {(2\pi)^N \det \left( \boldsymbol{\Sigma } \right) }}}\exp \left( { - \frac{1}{2}{{\left( {\mathbf{x} - \boldsymbol{\mu} } \right)}^T}{\boldsymbol{\Sigma} ^{ - 1}}\left( {\mathbf{x} - \boldsymbol{\mu} } \right)} \right).
\end{equation}

\section{Transform of Gaussian Variables}
Expand All @@ -30,11 +30,11 @@ \subsection{Linear Transform}

If we take a linear transform of $\mathbf{x}$ with $\mathbf{y} = \mathbf{A} \mathbf{x}$, then $\mathbf{y}$ satisfies:
\begin{equation}
\mathbf{y} \sim N( \mathbf{A} \boldsymbol{\mu}_x, \mathbf{A} \boldsymbol{\Sigma}_{xx} \mathbf{A}^\mathrm{T}).
\mathbf{y} \sim N( \mathbf{A} \boldsymbol{\mu}_x, \mathbf{A} \boldsymbol{\Sigma}_{xx} \mathbf{A}^T).
\end{equation}

\subsection{Normalized Product}
If we multiply two Gaussian random variables like $p\left( \mathbf{xy} \right) = N\left( {\boldsymbol{\mu} ,\boldsymbol{\Sigma}} \right)$, then we have:
If we want to fuse two Gaussian estimations like $\mathbf{x}$ and $\mathbf{y}$, assume the fused mean and covariance are $\boldsymbol{\mu}$ and $\boldsymbol{\Sigma}$, then we have:
\begin{equation}
\begin{array}{l}
{\boldsymbol{\Sigma}^{-1}} = \boldsymbol{\Sigma}_{xx}^{-1} + \boldsymbol{\Sigma}_{yy}^{-1} \\
Expand Down Expand Up @@ -71,7 +71,7 @@ \section{Example of Joint Distribution}

Then we can calculate $\mathbf{y}$'s distribution:
\begin{equation}
p\left( \mathbf{y} \right) = N\left( {\mathbf{A}{\boldsymbol{\mu}_x} + \mathbf{b}, \mathbf{R} + \mathbf{A} {\boldsymbol{\Sigma}_{xx}}{\mathbf{A}^\mathrm{T}}} \right).
p\left( \mathbf{y} \right) = N\left( {\mathbf{A}{\boldsymbol{\mu}_x} + \mathbf{b}, \mathbf{R} + \mathbf{A} {\boldsymbol{\Sigma}_{xx}}{\mathbf{A}^T}} \right).
\end{equation}

This provides a theoretical basis for the prediction part of the Kalman filter.
This provides the theoretical basis for the prediction part of the Kalman filter.
2 changes: 1 addition & 1 deletion chapters/loopclosure.tex
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
% !Mode:: "TeX:UTF-8"
\chapter{Loop Closing}
\chapter{Loop Closure}
\label{cpt:11}
\begin{mdframed}
\textbf{Goal of Study}
Expand Down
2 changes: 1 addition & 1 deletion chapters/mapping.tex
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
% !Mode:: "TeX:UTF-8"
\chapter{Mapping}
\chapter{Dense Reconstruction}
\label{cpt:12}
\begin{mdframed}
\textbf{Goal of Study}
Expand Down
35 changes: 17 additions & 18 deletions chapters/matrix-derivatives.tex
Original file line number Diff line number Diff line change
@@ -1,26 +1,26 @@
% !Mode:: "TeX:UTF-8"
\chapter{Matrix Derivatives}
\label{cpt:app-B}
First, the derivation of a scalar function to scalar variable is obvious. Suppose a function $f(x)$ takes the derivative of $x$, then a derivative like $\frac{\mathrm{d}f}{\mathrm{d}x}$ will be obtained, which is obviously still a scalar. Below we discuss the cases when $x$ is a vector or $f$ is a vector function.
First, the derivation of a scalar function to a scalar variable is obvious. Suppose a function $f(x)$ takes the derivative of $x$, then a derivative like $\frac{\mathrm{d}f}{\mathrm{d}x}$ will be obtained, which is obviously still a scalar. Below we discuss the cases when $x$ is a vector and $f$ is a vector function.

\section{Scalar Function to Vector Variable}
Consider $\bm{x}$ is a vector variable. Suppose $\bm{x} \in \mathbb{R}^m$ is a column vector, then we have:
\section{Scalar Function with Vector Variable}
Suppose $\mathbf{x} \in \mathbb{R}^m$ is a column vector, then we have:
\begin{equation}
\frac{{\mathrm{d}f}}{{\mathrm{d}\bm{x}}} = {\left[ {\frac{{\mathrm{d}f}}{{\mathrm{d}{x_1}}}, \cdots ,\frac{{\mathrm{d}f}}{{\mathrm{d}{x_m}}}} \right]^\mathrm{T}} \in {\mathbb{R}^m}.
\frac{{\mathrm{d}f}}{{\mathrm{d}\mathbf{x}}} = {\left[ {\frac{{\mathrm{d}f}}{{\mathrm{d}{x_1}}}, \cdots ,\frac{{\mathrm{d}f}}{{\mathrm{d}{x_m}}}} \right]^T} \in {\mathbb{R}^m}.
\end{equation}
The result is a $m \times 1$ vector. In some documents we may write the denominator as $\bm{x}^\mathrm{T}$:
The result is a $m \times 1$ vector. In some documents we may write the denominator as $\mathbf{x}^T$:
\begin{equation}
\frac{{\mathrm{d}f}}{{\mathrm{d}\bm{x}^\mathrm{T}}} = {\left[ {\frac{{\mathrm{d}f}}{{\mathrm{d}{x_1}}}, \cdots ,\frac{{\mathrm{d}f}}{{\mathrm{d}{x_m}}}} \right]}.
\frac{{\mathrm{d}f}}{{\mathrm{d}\mathbf{x}^T}} = {\left[ {\frac{{\mathrm{d}f}}{{\mathrm{d}{x_1}}}, \cdots ,\frac{{\mathrm{d}f}}{{\mathrm{d}{x_m}}}} \right]}.
\end{equation}
The result is a row vector. We usually call $\frac{\mathrm{d}f}{\mathrm{d}\bm{x}}$ as gradient or Jacobian. But it should be noted that the name or manner is not exactly same in different fields.
The result is a row vector. We usually call $\frac{\mathrm{d}f}{\mathrm{d}\mathbf{x}}$ as gradient or Jacobian. But it should be noted that the name or manner is not exactly same in different fields.

\section{Vector Function to Vector Variable}
We may also take the derivative with a vector function to a vector variable. Consider a vector function $\bm{F}(\bm{x})$ like: $$\bm{F}(\bm{x}) = [f_1(\bm{x}), \cdots, f_n(\bm{x})]^\mathrm{T},$$ where each $f_k$ is a scalar function use $\bm{x}$ as its variable. When taking derivative of $\bm{x}$, we usually write it as:
\section{Vector Function with Vector Variable}
We may also take the derivative with a vector function to a vector variable. Consider a vector function $\mathbf{F}(\mathbf{x})$ like: $$\mathbf{F}(\mathbf{x}) = [f_1(\mathbf{x}), \cdots, f_n(\mathbf{x})]^T,$$ where each $f_k$ is a scalar function of $\mathbf{x}$. When taking derivative of $\mathbf{x}$, we usually write it as:
\begin{equation}
\frac{{\partial \bm{F}}}{{\partial {\bm{x}^\mathrm{T}}}} = \left[ {\begin{array}{*{20}{c}}
{\frac{{\partial {f_1}}}{{\partial {\bm{x}^\mathrm{T}}}}}\\
\frac{{\partial \mathbf{F}}}{{\partial {\mathbf{x}^T}}} = \left[ {\begin{array}{*{20}{c}}
{\frac{{\partial {f_1}}}{{\partial {\mathbf{x}^T}}}}\\
\vdots \\
{\frac{{\partial {f_n}}}{{\partial {\bm{x}^\mathrm{T}}}}}
{\frac{{\partial {f_n}}}{{\partial {\mathbf{x}^T}}}}
\end{array}} \right] = \left[ {\begin{array}{*{20}{c}}
{\frac{{\partial {f_1}}}{{\partial {x_1}}}}&{\frac{{\partial {f_1}}}{{\partial {x_2}}}}& \cdots &{\frac{{\partial {f_1}}}{{\partial {x_m}}}}\\
{\frac{{\partial {f_2}}}{{\partial {x_1}}}}&{\frac{{\partial {f_2}}}{{\partial {x_2}}}}& \cdots &{\frac{{\partial {f_2}}}{{\partial {x_m}}}}\\
Expand All @@ -30,16 +30,15 @@ \section{Vector Function to Vector Variable}
\end{equation}
which is a column vector function to a row vector variable. Then we get a $n \times m$ Jacobian matrix. Such writing style is standardized. We may write the derivative as:
\begin{equation}
\frac{\partial \bm{Ax}} {\partial\bm{x}^\mathrm{T}} = \bm{A}.
\frac{\partial \mathbf{Ax}} {\partial\mathbf{x}^T} = \mathbf{A},
\end{equation}

Or a row vector function to a column vector variable, and the result is transposed:
or a row vector function to a column vector variable, and the result is transposed:
\begin{equation}
\frac{{\partial \bm{F}}^\mathrm{T}}{{\partial {\bm{x}}}} = \left(\frac{{\partial \bm{F}}}{{\partial {\bm{x}^\mathrm{T}}}} \right)^ \mathrm{T}.
\frac{{\partial \mathbf{F}}^T}{{\partial {\mathbf{x}}}} = \left(\frac{{\partial \mathbf{F}}}{{\partial {\mathbf{x}^T}}} \right)^ \mathrm{T}.
\end{equation}

In this book we use the former definition by default. However, this writing style requires adding an extra transpose operator in the denominator, which is inconvenient if we have to write a lot of derivatives. So without ambiguity, we relax the notation by omitting the transpose operator like this:
In this book we use the former definition by default. However, this writing style requires adding an extra transpose operator in the denominator of each equation, which is inconvenient if we have to write a lot of derivatives. So without ambiguity, we relax the notation by omitting the transpose operator like this:
\begin{equation}
\frac{\partial \bm{Ax}} {\partial\bm{x}} = \bm{A},
\frac{\partial \mathbf{Ax}} {\partial\mathbf{x}} = \mathbf{A},
\end{equation}
which makes the notation more natural.
2 changes: 1 addition & 1 deletion chapters/preface.tex
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
\chapter{Preface}
\chapter{Introduction}
\label{cpt:1}

\section{What is this book talking about?}
Expand Down
2 changes: 1 addition & 1 deletion chapters/rigidBody.tex
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
% !Mode:: "TeX:UTF-8"
\chapter{3D Geometry}
\chapter{3D Rigid Body Motion}
\label{cpt:3}

\begin{mdframed}
Expand Down
2 changes: 1 addition & 1 deletion chapters/state-of-the-art.tex
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
% !Mode:: "TeX:UTF-8"
\chapter{SLAM: Present and Future}
\chapter{Discussions and Outlook}
\label{cpt:14}
\begin{mdframed}
\textbf{Goal of Study}
Expand Down
Loading

0 comments on commit 3463781

Please sign in to comment.