Introduction and motivation drafts
This commit is contained in:
3
.gitignore
vendored
3
.gitignore
vendored
@@ -23,4 +23,5 @@ exp_*
|
|||||||
*.gz
|
*.gz
|
||||||
*.synctex
|
*.synctex
|
||||||
documentation/robotum_report.pdf
|
documentation/robotum_report.pdf
|
||||||
|
documentation/build/
|
||||||
|
*.latexmain
|
||||||
|
|||||||
42
documentation/introduction.tex
Normal file
42
documentation/introduction.tex
Normal 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.
|
||||||
@@ -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}
|
\begin{document}
|
||||||
\title{\LARGE {\bf Report Project Striker 2018}\\
|
\title{\LARGE {\bf Report Project Striker 2018}\\
|
||||||
@@ -46,7 +48,9 @@
|
|||||||
|
|
||||||
|
|
||||||
\setstretch{1.2} % set line spacing
|
\setstretch{1.2} % set line spacing
|
||||||
\include{jonas}
|
\input{introduction}
|
||||||
|
\input{tools}
|
||||||
|
\input{jonas}
|
||||||
% body of thesis comes here
|
% body of thesis comes here
|
||||||
%\input{Body/SoftwareTools} %this loads the content of file SoftwareTools.tex in the folder Body.
|
%\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.
|
%\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}
|
\bibliographystyle{IEEEtran}
|
||||||
\bibliography{Bibliography/Bibliography}
|
\bibliography{Bibliography/Bibliography}
|
||||||
|
|
||||||
\end{document}
|
\end{document}
|
||||||
|
|||||||
83
documentation/tools.tex
Normal file
83
documentation/tools.tex
Normal 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.
|
||||||
Reference in New Issue
Block a user