Introduction and motivation drafts
This commit is contained in:
3
.gitignore
vendored
3
.gitignore
vendored
@@ -23,4 +23,5 @@ exp_*
|
||||
*.gz
|
||||
*.synctex
|
||||
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}
|
||||
\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
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