You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardexpand all lines: bmvc_final.tex
+15-18
Original file line number
Diff line number
Diff line change
@@ -5,7 +5,6 @@
5
5
colorlinks=true,
6
6
linkcolor=blue,
7
7
filecolor=magenta,
8
-
urlcolor=cyan,
9
8
pdftitle={PythonRobotics: a Python code collection of robotics algorithms},
10
9
bookmarks=true,
11
10
pdfpagemode=FullScreen,
@@ -81,7 +80,6 @@
81
80
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.
82
81
In this project, the algorithms which are practical and widely used in both academia and industry are selected.
83
82
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.
85
83
It includes intuitive animations to understand the behavior of the simulation.
86
84
87
85
\end{abstract}
@@ -92,13 +90,13 @@ \section{Introduction}
92
90
In recent years, autonomous navigation technologies have received huge attention in many fields.
93
91
Such fields include, autonomous driving\cite{pathplanning}, drone flight navigation, and other transportation systems.
94
92
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.
96
94
The system requires a wide range of technologies:
97
95
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).
98
96
The autonomous system would not work correctly if any of these technologies is missing.
99
97
100
98
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.
102
100
It needs a lot of time to be familiar with these technological areas.
103
101
Therefore, good educational resources for learning basic autonomous navigation technologies are needed.
104
102
Our project which is described in this paper aims to be one such resource.
@@ -110,7 +108,7 @@ \section{Introduction}
110
108
It has a lot of simulation animations that shows behaviors of each algorithm.
111
109
It helps for learners to understand its fundamental ideas.
112
110
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.
114
112
All source codes of this project are provided at \url{https://github.com/AtsushiSakai/PythonRobotics}.
115
113
116
114
This project was started from Mar. 21 2016 as a self-learning project.
@@ -156,7 +154,7 @@ \section{Related works}
156
154
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}.
157
155
Many autonomous navigation packages using ROS are also open-sourced.
158
156
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.
160
158
ROS packages are usually written in C++ because the focus is computational efficiency and not readability, which makes learning from the code harder.
161
159
162
160
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}.
In this section, the philosophy of this project is described.
191
189
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.
193
191
194
192
\subsection{Readability}
195
193
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.
197
195
Python\cite{python} programming language is adopted in this project.
198
196
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.
199
197
Having the core Python packages allows the user to focus on the algorithms, rather than the implementations.
200
198
201
199
\subsection{Practicality}
202
200
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.
203
202
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.
Extended Kalman Filter based SLAM & FastSLAM 2.0 based SLAM
225
+
Extended Kalman filter based SLAM & FastSLAM 2.0 based SLAM
227
226
\end{tabular}
228
227
\caption{SLAM simulation results}
229
228
\label{fig:slam}
@@ -247,14 +246,14 @@ \subsection{Mapping}
247
246
Mapping is the ability of a robot to understand its surroundings with external sensors such as LIDAR and camera.
248
247
Robots have to recognize the position and shape of obstacles to avoid them.
249
248
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.
251
250
252
251
\subsection{SLAM}
253
252
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.
255
254
In this way, SLAM is often said to be similar to a `chicken-and-egg' problem.
256
255
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}.
258
257
259
258
\subsection{Path planning}
260
259
@@ -274,8 +273,7 @@ \subsection{Path planning}
274
273
\end{figure}
275
274
276
275
\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.
279
277
The path tracking controller may need to account for modeling error and other forms of uncertainty.
280
278
In path tracking, feedback control techniques and optimization based control techniques are widely used\cite{pathplanning}.
281
279
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}
295
293
296
294
In this paper, we introduced PythonRobotics, a code collection of robotics algorithms, with a focus on autonomous navigation.
297
295
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:
300
297
301
298
\begin{itemize}
302
299
\item Adding technical and mathematical documentation using Jupyter notebook\cite{JupyterNotebook}.
0 commit comments