Skip to content

Commit b985ab7

Browse files
committed
Updates from ShareLaTeX
1 parent 4b989b8 commit b985ab7

File tree

3 files changed

+16
-19
lines changed

3 files changed

+16
-19
lines changed

PythonRoboticsPaper.pdf

19 Bytes
Binary file not shown.

bmvc_final.tex

+15-18
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
colorlinks=true,
66
linkcolor=blue,
77
filecolor=magenta,
8-
urlcolor=cyan,
98
pdftitle={PythonRobotics: a Python code collection of robotics algorithms},
109
bookmarks=true,
1110
pdfpagemode=FullScreen,
@@ -81,7 +80,6 @@
8180
The focus of the project is on autonomous navigation, and the goal is for beginners in robotics to understand the basic ideas behind each algorithm.
8281
In this project, the algorithms which are practical and widely used in both academia and industry are selected.
8382
Each sample code is written in Python3 and only depends on some standard modules for readability and ease of use.
84-
Each algorithm is written in Python3 and only depends on some common modules for readability, portability and ease of use.
8583
It includes intuitive animations to understand the behavior of the simulation.
8684

8785
\end{abstract}
@@ -92,13 +90,13 @@ \section{Introduction}
9290
In recent years, autonomous navigation technologies have received huge attention in many fields.
9391
Such fields include, autonomous driving\cite{pathplanning}, drone flight navigation, and other transportation systems.
9492

95-
An autonomous navigation system is a system that can move to a goal over long periods of time without any external control by a operator.
93+
An autonomous navigation system is a system that can move to a goal over long periods of time without any external control by an operator.
9694
The system requires a wide range of technologies:
9795
It needs to know where it is (localization), where it is safe (mapping), where and how to move (path planning), and how to control its motion (path following).
9896
The autonomous system would not work correctly if any of these technologies is missing.
9997

10098
Educational materials are becoming more and more important for future developers to learn basic autonomous navigation technologies.
101-
Because these autonomous technologies need different technological skill sets such as: linear algebra, statistics, probability theory, optimization theory, control theory, and sensing physics etc.
99+
Because these autonomous technologies need different technological skill sets such as: linear algebra, statistics, probability theory, optimization theory, and control theory etc.
102100
It needs a lot of time to be familiar with these technological areas.
103101
Therefore, good educational resources for learning basic autonomous navigation technologies are needed.
104102
Our project which is described in this paper aims to be one such resource.
@@ -110,7 +108,7 @@ \section{Introduction}
110108
It has a lot of simulation animations that shows behaviors of each algorithm.
111109
It helps for learners to understand its fundamental ideas.
112110
The readers can find the animations in the project page \url{https://atsushisakai.github.io/PythonRobotics/}.
113-
The left figure in Fig.\ref{fig:github} shows the front image of the page.
111+
The left figure in Fig.\ref{fig:github} shows the front image of the project page.
114112
All source codes of this project are provided at \url{https://github.com/AtsushiSakai/PythonRobotics}.
115113

116114
This project was started from Mar. 21 2016 as a self-learning project.
@@ -156,7 +154,7 @@ \section{Related works}
156154
ROS includes basic navigation software such as the Adaptive Monte Carlo Localization (AMCL) package and the local path planner based on Dynamic Window Approach, etc\cite{rosnavigation}.
157155
Many autonomous navigation packages using ROS are also open-sourced.
158156

159-
ROS packages can also be useful to learn autonomous navigation algorithms, however the documentation is inconsistent and it can be difficult to find implementation details about the algorithms used.
157+
ROS packages can also be useful to learn autonomous navigation algorithms, however the documentation might be inconsistent and it can be difficult to find implementation details about the algorithms used.
160158
ROS packages are usually written in C++ because the focus is computational efficiency and not readability, which makes learning from the code harder.
161159

162160
Udacity Inc, which is an online learning company founded by S. Thrun, et al, is providing great online courses for autonomous navigation and autonomous driving \cite{udacity}.
@@ -168,8 +166,8 @@ \section{Related works}
168166

169167
\begin{figure}
170168
\begin{tabular}{cc}
171-
\bmvaHangBox{\fbox{\includegraphics[width=5.2cm]{images/localization1.png}}}&
172-
\bmvaHangBox{\fbox{\includegraphics[width=5.8cm]{images/localization2.png}}}\\
169+
\bmvaHangBox{\fbox{\includegraphics[width=5.6cm]{images/localization1.png}}}&
170+
\bmvaHangBox{\fbox{\includegraphics[width=6.0cm]{images/localization2.png}}}\\
173171
Histogram filter localization&Particle filter localization
174172
\end{tabular}
175173
\caption{Localization simulation results}
@@ -189,17 +187,18 @@ \section{Related works}
189187
\section{Philosophy}
190188
In this section, the philosophy of this project is described.
191189
The PythonRobotics project is based on three main philosophies.
192-
Each of which will be discussed separately in this section.
190+
Each philosophy will be discussed separately in this section.
193191

194192
\subsection{Readability}
195193
The first philosophy is that the code has to be easy to read.
196-
If the code is not easy to read, it would be difficult to achieve our goal of allowing beginners to understand the algorithms
194+
If the code is not easy to read, it would be difficult to achieve our goal of allowing beginners to understand the algorithms.
197195
Python\cite{python} programming language is adopted in this project.
198196
Python has great libraries for matrix operation, mathematical and scientific operation, and visualization, which makes code more readable because such operations don't need to be re-implemented.
199197
Having the core Python packages allows the user to focus on the algorithms, rather than the implementations.
200198

201199
\subsection{Practicality}
202200
The second philosophy is that implemented algorithms have to be practical and widely used in both academia and industry.
201+
We believe learning these algorithms will be useful in many applications.
203202
For example, Kalman filters and particle filter for localization, grid mapping for mapping, dynamic programming based approaches and sampling based approaches for path planning, and optimal control based approach for path tracking.
204203
These algorithms are implemented in this project.
205204

@@ -223,7 +222,7 @@ \subsection{Minimal dependencies}
223222
\begin{tabular}{cc}
224223
\bmvaHangBox{\fbox{\includegraphics[width=5.6cm]{images/slam1.png}}}&
225224
\bmvaHangBox{\fbox{\includegraphics[width=5.6cm]{images/slam2.png}}}\\
226-
Extended Kalman Filter based SLAM & FastSLAM 2.0 based SLAM
225+
Extended Kalman filter based SLAM & FastSLAM 2.0 based SLAM
227226
\end{tabular}
228227
\caption{SLAM simulation results}
229228
\label{fig:slam}
@@ -247,14 +246,14 @@ \subsection{Mapping}
247246
Mapping is the ability of a robot to understand its surroundings with external sensors such as LIDAR and camera.
248247
Robots have to recognize the position and shape of obstacles to avoid them.
249248
In mapping, grid mapping and machine learning algorithms are widely used\cite{PR}\cite{PRML}.
250-
Fig.\ref{fig:mapping} shows mapping simulation results using Grid mapping with 2D ray casting and 2D object clustering with k-means algorithm.
249+
Fig.\ref{fig:mapping} shows mapping simulation results using grid mapping with 2D ray casting and 2D object clustering with k-means algorithm.
251250

252251
\subsection{SLAM}
253252
Simultaneous Localization and Mapping (SLAM) is an ability to estimate the pose of a robot and the map of the environment at the same time.
254-
The SLAM problem is hard to solve, because a map is needed for localization and good localization is needed for mapping.
253+
The SLAM problem is hard to solve, because a map is needed for localization and localization is needed for mapping.
255254
In this way, SLAM is often said to be similar to a `chicken-and-egg' problem.
256255
Popular SLAM solution methods include the extended Kalman filter, particle filter, and Fast SLAM algorithm\cite{PR}.
257-
Fig.\ref{fig:slam} shows SLAM simulation results using Extended Kalman Filter and results using FastSLAM2.0\cite{PR}.
256+
Fig.\ref{fig:slam} shows SLAM simulation results using extended Kalman filter and results using FastSLAM2.0\cite{PR}.
258257

259258
\subsection{Path planning}
260259

@@ -274,8 +273,7 @@ \subsection{Path planning}
274273
\end{figure}
275274

276275
\subsection{Path tracking}
277-
Path tracking is the ability of a robot to follow the reference path generated by a path planner.
278-
The role of the path tracking controller is to follow a reference trajectory while simultaneously stabilizing the robot.
276+
Path tracking is the ability of a robot to follow the reference path generated by a path planner while simultaneously stabilizing the robot.
279277
The path tracking controller may need to account for modeling error and other forms of uncertainty.
280278
In path tracking, feedback control techniques and optimization based control techniques are widely used\cite{pathplanning}.
281279
Fig.\ref{fig:pathtracking} shows simulations using rear wheel feedback steering control and PID speed control, and iterative linear model predictive path tracking control\cite{lqrrrt}.
@@ -295,8 +293,7 @@ \section{Conclusion and future work}
295293

296294
In this paper, we introduced PythonRobotics, a code collection of robotics algorithms, with a focus on autonomous navigation.
297295
Related works of this project, some key ideas about this OSS project, and brief structure of this repository and simulation results were described.
298-
299-
The future work for this project are as follows:
296+
The future works for this project are as follows:
300297

301298
\begin{itemize}
302299
\item Adding technical and mathematical documentation using Jupyter notebook\cite{JupyterNotebook}.

egbib.bib

+1-1
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ @misc{course1
8787
}
8888

8989
@misc{course2,
90-
title = {Autonomous Mobile Robots - Spring 2018 Autonomous Systems Lab | ETH Zurich},
90+
title = {Autonomous Mobile Robots - Spring 2018 Autonomous Systems Lab | ETH Zurich},
9191
note = {\small\url{http://www.asl.ethz.ch/education/lectures/autonomous_mobile_robots/spring-2018.html}}
9292
}
9393

0 commit comments

Comments
 (0)