Skip to content

Commit 4b989b8

Browse files
committed
Updates from ShareLaTeX
1 parent 9cc193b commit 4b989b8

File tree

2 files changed

+43
-46
lines changed

2 files changed

+43
-46
lines changed

PythonRoboticsPaper.pdf

-842 Bytes
Binary file not shown.

bmvc_final.tex

Lines changed: 43 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -118,8 +118,8 @@ \section{Introduction}
118118

119119
\begin{figure}
120120
\begin{tabular}{cc}
121-
\bmvaHangBox{\fbox{\includegraphics[width=5.3cm]{images/projectpage.png}}}&
122-
\bmvaHangBox{\fbox{\includegraphics[width=6.6cm]{images/starhistory.png}}}\\
121+
\bmvaHangBox{\fbox{\includegraphics[width=5.0cm]{images/projectpage.png}}}&
122+
\bmvaHangBox{\fbox{\includegraphics[width=6.3cm]{images/starhistory.png}}}\\
123123

124124
\end{tabular}
125125
\caption{Left: PythonRobotics Project page, Right: GitHub star history graph using \cite{starhistory}}
@@ -156,7 +156,7 @@ \section{Related works}
156156
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}.
157157
Many autonomous navigation packages using ROS are also open-sourced.
158158

159-
ROS packages can also be useful to learn autonomous navigation algorithms, however the documentation is inconsistent and, at times, it can be difficult to find implementation details about the algorithms used.
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.
160160
ROS packages are usually written in C++ because the focus is computational efficiency and not readability, which makes learning from the code harder.
161161

162162
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 +168,8 @@ \section{Related works}
168168

169169
\begin{figure}
170170
\begin{tabular}{cc}
171-
\bmvaHangBox{\fbox{\includegraphics[width=5.8cm]{images/localization1.png}}}&
172-
\bmvaHangBox{\fbox{\includegraphics[width=6.0cm]{images/localization2.png}}}\\
171+
\bmvaHangBox{\fbox{\includegraphics[width=5.2cm]{images/localization1.png}}}&
172+
\bmvaHangBox{\fbox{\includegraphics[width=5.8cm]{images/localization2.png}}}\\
173173
Histogram filter localization&Particle filter localization
174174
\end{tabular}
175175
\caption{Localization simulation results}
@@ -178,8 +178,8 @@ \section{Related works}
178178

179179
\begin{figure}
180180
\begin{tabular}{cc}
181-
\bmvaHangBox{\fbox{\includegraphics[width=6.0cm]{images/mapping1.png}}}&
182-
\bmvaHangBox{\fbox{\includegraphics[width=5.7cm]{images/mapping2.png}}}\\
181+
\bmvaHangBox{\fbox{\includegraphics[width=5.8cm]{images/mapping1.png}}}&
182+
\bmvaHangBox{\fbox{\includegraphics[width=5.5cm]{images/mapping2.png}}}\\
183183
Grid mapping with 2D ray casting&2D object clustering with k-means algorithm
184184
\end{tabular}
185185
\caption{Mapping simulation results}
@@ -188,39 +188,41 @@ \section{Related works}
188188

189189
\section{Philosophy}
190190
In this section, the philosophy of this project is described.
191-
It based on three main philosophies.
191+
The PythonRobotics project is based on three main philosophies.
192+
Each of which will be discussed separately in this section.
192193

193194
\subsection{Readability}
194-
The first one is that the code have to be easy to read for understanding each algorithm.
195-
This project aims beginners of robotics to understand basic ideas of each algorithm.
196-
Python\cite{python} programming language is adopted in this project because of its simplicity and it allows us to focus on algorithm itself.
197-
Python has great libraries for matrix operation, mathematical and scientific operation, and visualization.
198-
These libraries also allows us to focus on algorithm itself.
195+
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
197+
Python\cite{python} programming language is adopted in this project.
198+
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+
Having the core Python packages allows the user to focus on the algorithms, rather than the implementations.
199200

200201
\subsection{Practicality}
201-
The second one is that implemented algorithms have to be practical and widely used in both academia and industry.
202+
The second philosophy is that implemented algorithms have to be practical and widely used in both academia and industry.
202203
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.
204+
These algorithms are implemented in this project.
203205

204-
\subsection{Minimum dependency}
205-
The last philosophy is minimum dependency.
206-
It allows us to run code samples easily and to convert the Python codes to other programming languages such as C++, Java for practical usage.
206+
\subsection{Minimal dependencies}
207+
The last philosophy is minimal dependencies.
208+
Having few external dependencies allows us to run code samples easily and to convert the Python codes to other programming languages, such as C++ or Java for more practical application.
207209
Each sample code only depends some modules on Python3 as bellow.
208210

209211
\begin{itemize}
210-
\item numpy\cite{numpy} for matrix operation
211-
\item scipy\cite{scipy} for mathematics, science, and engineering computing
212-
\item matplotlib\cite{matplotlib} for visualization
213-
\item pandas\cite{pandas} for data import
212+
\item numpy\cite{numpy} for matrix and vector operations
213+
\item scipy\cite{scipy} for mathematical, scientific computing
214+
\item matplotlib\cite{matplotlib} for plotting and visualization
215+
\item pandas\cite{pandas} for data import and manipulation.
214216
\item cvxpy\cite{cvxpy} for convex optimization
215217
\end{itemize}
216218

217-
These modules are OSS and could be used for free.
219+
These modules are OSS and can also be used for free.
218220
This repository software doesn't depend on any commercial software.
219221

220222
\begin{figure}
221223
\begin{tabular}{cc}
222-
\bmvaHangBox{\fbox{\includegraphics[width=5.8cm]{images/slam1.png}}}&
223-
\bmvaHangBox{\fbox{\includegraphics[width=5.8cm]{images/slam2.png}}}\\
224+
\bmvaHangBox{\fbox{\includegraphics[width=5.6cm]{images/slam1.png}}}&
225+
\bmvaHangBox{\fbox{\includegraphics[width=5.6cm]{images/slam2.png}}}\\
224226
Extended Kalman Filter based SLAM & FastSLAM 2.0 based SLAM
225227
\end{tabular}
226228
\caption{SLAM simulation results}
@@ -229,41 +231,35 @@ \subsection{Minimum dependency}
229231

230232
\section{Repository structure}
231233

232-
In this section, we briefly described the repository structure.
233-
234-
This repository has five directories which corresponding to five technical categories in autonomous navigation: localization, mapping, SLAM, path planning, and path tracking.
235-
There is one sub-directory per algorithm, which has a sample code using different algorithms.
234+
In this section, the brief repository structure is described.
236235

236+
There are five directories, each one corresponding to a different technical category in autonomous navigation: localization, mapping, SLAM, path planning, and path tracking.
237+
There is one sub-directory per algorithm, which has a sample code implementing and testing the algorithm.
237238
In the following subsections, some algorithms and some simulation examples in each category are described.
238239

239240
\subsection{Localization}
240241

241-
Localization is the ability of a robot to know its position and orientation with sensors such as GNSS and IMU.
242+
Localization is the ability of a robot to know its position and orientation with sensors such as Global Navigation Satellite System:GNSS etc.
242243
In localization, Bayesian filters such as Kalman filters, histogram filter, and particle filter are widely used\cite{PR}.
243244
Fig.\ref{fig:localization} shows localization simulations using histogram filter and particle filter.
244245

245-
246-
247246
\subsection{Mapping}
248247
Mapping is the ability of a robot to understand its surroundings with external sensors such as LIDAR and camera.
249248
Robots have to recognize the position and shape of obstacles to avoid them.
250249
In mapping, grid mapping and machine learning algorithms are widely used\cite{PR}\cite{PRML}.
251250
Fig.\ref{fig:mapping} shows mapping simulation results using Grid mapping with 2D ray casting and 2D object clustering with k-means algorithm.
252251

253-
254-
255252
\subsection{SLAM}
256253
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.
257-
SLAM problem is hard to solve, because a map is needed for localization and a good localization is needed for mapping, which is a kind of chicken and egg problem.
254+
The SLAM problem is hard to solve, because a map is needed for localization and good localization is needed for mapping.
255+
In this way, SLAM is often said to be similar to a `chicken-and-egg' problem.
258256
Popular SLAM solution methods include the extended Kalman filter, particle filter, and Fast SLAM algorithm\cite{PR}.
259257
Fig.\ref{fig:slam} shows SLAM simulation results using Extended Kalman Filter and results using FastSLAM2.0\cite{PR}.
260258

261-
262-
263259
\subsection{Path planning}
264260

265261
Path planning is the ability of a robot to search feasible and efficient path to the goal.
266-
The path have to satisfy some constraints based on movement model and obstacle positions, and optimize some objective functions such as time to goal and distance to obstacle etc.
262+
The path has to satisfy some constraints based on the robot's motion model and obstacle positions, and optimize some objective functions such as time to goal and distance to obstacle.
267263
In path planning, dynamic programming based approaches and sampling based approaches are widely used\cite{pathplanning}.
268264
Fig.\ref{fig:pathplan} shows simulation results of potential field path planning and LQR-RRT* path planning\cite{lqrrrt}.
269265

@@ -278,8 +274,9 @@ \subsection{Path planning}
278274
\end{figure}
279275

280276
\subsection{Path tracking}
281-
Path tracking is an ability of a robot to follow the reference path generated by path planning algorithms.
282-
The role of the path tracking controller is to stabilize to the reference path or trajectory which has modeling error and other forms of uncertainty.
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.
279+
The path tracking controller may need to account for modeling error and other forms of uncertainty.
283280
In path tracking, feedback control techniques and optimization based control techniques are widely used\cite{pathplanning}.
284281
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}.
285282

@@ -296,19 +293,19 @@ \subsection{Path tracking}
296293
%-------------------------------------------------------------------------
297294
\section{Conclusion and future work}
298295

299-
In this paper, we introduced PythonRobotics, a code collection of robotics algorithms, with a focus on autonomous navigation. especially for autonomous navigation.
300-
Related works of this project, some key ideas about this OSS project, and brief structure of this repository and some simulation results were described.
296+
In this paper, we introduced PythonRobotics, a code collection of robotics algorithms, with a focus on autonomous navigation.
297+
Related works of this project, some key ideas about this OSS project, and brief structure of this repository and simulation results were described.
301298

302-
The future works of this project are as followed:
299+
The future work for this project are as follows:
303300

304301
\begin{itemize}
305302
\item Adding technical and mathematical documentation using Jupyter notebook\cite{JupyterNotebook}.
306-
\item Adding image processing samples for autonomous navigation only using OpenCV\cite{opencv}.
307-
\item Adding simple multi-robots simulations for autonomous navigation.
308-
\item Adding a comparison to find which algorithm fits the best for a specific application.
303+
\item Adding image processing samples for autonomous navigation using OpenCV\cite{opencv}.
304+
\item Adding simple multi-robot simulations for autonomous navigation.
305+
\item Adding a comparison to find which algorithm fits best for a specific application.
309306
\end{itemize}
310307

311-
If readers were interested in these future projects, contributions are welcome.
308+
If readers are interested in these future projects, contributions are welcome.
312309
Readers can also support this project financially via Patreon\cite{patreon}.
313310

314311
%------------------------------------------------------------------------

0 commit comments

Comments
 (0)