Introduction and motivation drafts

This commit is contained in:
2018-08-06 20:54:08 +02:00
parent 699f50d9a1
commit c4cd4f07e4
4 changed files with 136 additions and 6 deletions

3
.gitignore vendored
View File

@@ -23,4 +23,5 @@ exp_*
*.gz
*.synctex
documentation/robotum_report.pdf
documentation/build/
*.latexmain

View File

@@ -0,0 +1,42 @@
\chapter{Introduction}
RoboCup is an international competition in the field of robotics, the
ultimate goal of which is to win a game of soccer against a human team by the
middle of the 21st century. The motivation behind this objective is the
following: it is impossible to achieve such an ambitious goal with the current
state of technology, which means that the RoboCup competitions will drive
scientific and technological advancement in such areas as computer vision,
mechatronics and multi-agent cooperation in complex dynamic environments. The
RoboCup teams compete in five different leagues: Humanoid, Standard Platform,
Medium Size, Small Size and Simulation. Our work in this semester was based on
the rules of the Standard Platform league. In this league all teams use the
same robot \textit{Nao}, which is being produced by the SoftBank Robotics. We
will describe the capabilities of this robot in more detail in the next
chapter.
One of the most notable teams in the Standard Platform League is
\textit{B-Human}. This team represents TU Bremen, and in the last nine years
they won the international RoboCup competition six times and twice were the
runner-up. The source code of the framework that B-Human use for programming
their robots is available on GitHub, together with an extensive documentation,
which makes the B-Human framework an attractive starting point for RoboCup
beginners.
\section{Out objective and motivation}
In this report we are going to introduce the robotics project, which our team
worked on during the Summer Semester 2018. The main objective of our work was
to explore a possible strategy for fast goal scoring. There are three main
aspects of our motivation behind this objective. The first one is the fact,
that goal scoring is crucial for winning soccer games, therefore fast and
effective goal scoring will bring the team closer to victory. Secondly, in
order to score a goal, many problems and tasks need to be solved, which we will
describe in close detail in the next chapter. The work on these tasks would
allow us to acquire new competences, which we could then use to complement the
RoboCup team of TUM. Finally, this objective encompasses many disciplines, such
as object detection, mechatronics or path planning, which means that working on
it might give us a chance to improve over the existing work in these areas.
Having said that, we hope that our project \todo{will be good}, and this report
will help future students to get familiar with our results and continue our
work.

View File

@@ -16,13 +16,15 @@
% lots of packages are included in the preamble, look there for more information about how this.
% lots of packages are included in the preamble, look there for more
% information about how this.
\include{robotum_report.preamble} %this adds some options, parameters and also shortcuts
\include{robotum_report.preamble}
% if you don't know where something can be found, click on the pdf, and Overleaf will open the file where it is described
% if you don't know where something can be found, click on the pdf, and
% Overleaf will open the file where it is described
\begin{document}
\title{\LARGE {\bf Report Project Striker 2018}\\
@@ -46,7 +48,9 @@
\setstretch{1.2} % set line spacing
\include{jonas}
\input{introduction}
\input{tools}
\input{jonas}
% body of thesis comes here
%\input{Body/SoftwareTools} %this loads the content of file SoftwareTools.tex in the folder Body.
%\todo{SoftwareTools} %this is how you add a todo, it will appear in the list on page 2, and in orange in the margin where you add it.
@@ -72,4 +76,4 @@
\bibliographystyle{IEEEtran}
\bibliography{Bibliography/Bibliography}
\end{document}
\end{document}

83
documentation/tools.tex Normal file
View File

@@ -0,0 +1,83 @@
\chapter{Hardware and Software}
\section{Robot}
The aforementioned \textit{Nao} is a small humanoid robot, around 60 cm tall.
Some of its characteristics are:
\begin{itemize}
\item Two HD-cameras on the head;
\item An ultrasonic rangefinder on the body;
\item An inertial navigation unit (accelerometer and gyroscope);
\item Internet connectivity over Ethernet cable or 802.11g WLAN;
\item Single-Core Intel Atom CPU and 1 GB of RAM;
\item Programmable Joints with overall 25 Degrees of Freedom;
\item Speakers;
\item 60 to 90 minutes battery life.
\end{itemize}
It can be seen from the specifications list, that the multitude of sensors and
interfaces makes Nao an attractive development platform, suitable for the task
of \todo{Robocup}. However, relatively weak CPU and a low amount of RAM require
the programs running on the robot to be resource-efficient, which had to be
taken into into account during our work on the project.
\section{Software}
In our project we used \textit{NAOqi OS} as an operating system for the robot.
This is a standard operating system for Nao robots based on Gentoo Linux, and
it can handle all aspects of robot control, such as reading the sensors, moving
the robot and establishing the network connection.
As a framework for the implementation of the desired behavior we chose the
official NAOqi Python SDK. Our experience with this framework is that it is
easy to use, well documented and also covers most basic functionality that was
necessary for us to start working on the project. A further advantage of this
SDK is that it uses Python as the programming language, which allows for quick
prototyping, but also makes maintaining a large codebase fairly easy.
Finally, the third-party libraries that were used in the project are OpenCV and
NumPy. OpenCV is a powerful and one of the most widely used open-source
libraries for computer vision tasks, and NumPy is a popular Python library for
fast numerical computations. Both of these libraries, as well as the NAOqi
Python SDK are included in the NAOqi OS distribution by default, which means
that no extra work was necessary to ensure their proper functioning on the
robot.
\section{Rejected Software Alternatives}
Here we will briefly discuss what alternative options were available for the
choice of the base framework, and why we decided not to use those. One
available option was the official NAOqi C++ SDK. Being based on the C++
language, this SDK can naturally be expected to have better performance and be
more resource-efficient, than the Python-based version. We still chose the
Python SDK, because C++ is not particularly suitable for fast prototyping,
because of the complexity of the language. It is also worth noting, that we
never really hit the performance constraints, that couldn't have been overcome
by refactoring our code, but in the future it might be reasonable to migrate
some of the portions of it to C++.
Another big alternative is ROS (Robotic Operating System). ROS is a collection
of software targeted at robot development, and there exists a large ecosystem
of third-party extensions for ROS, which could assist in performing common
tasks such as camera and joint calibration. ROS was an attractive option, but
there was a major downside, that there was no straightforward way to run ROS
locally on the robot, so the decision was made not to spend time trying to
figure out how to do that. However, since Python is one of the main languages
in ROS, it should be possible to incorporate our work into ROS.
Finally, as was already mentioned in the introduction, B-Human Framework is a
popular choice for beginners, thanks to the quality of the algorithms and good
documentation. However, B-Human has been in development over many years and is
therefore a very complex system. The amount time needed to get familiar with
the code, and then to incorporate our changes would have been too big, for this
reason we decided to use the simpler option as a starting point.