From c4cd4f07e4dbb5352616aca27dc0cce330181e43 Mon Sep 17 00:00:00 2001 From: Pavel Lutskov Date: Mon, 6 Aug 2018 20:54:08 +0200 Subject: [PATCH] Introduction and motivation drafts --- .gitignore | 3 +- documentation/introduction.tex | 42 ++++++++++++++++ documentation/robotum_report.tex | 14 ++++-- documentation/tools.tex | 83 ++++++++++++++++++++++++++++++++ 4 files changed, 136 insertions(+), 6 deletions(-) create mode 100644 documentation/introduction.tex create mode 100644 documentation/tools.tex diff --git a/.gitignore b/.gitignore index 2b6f7a9..278ff7a 100644 --- a/.gitignore +++ b/.gitignore @@ -23,4 +23,5 @@ exp_* *.gz *.synctex documentation/robotum_report.pdf - +documentation/build/ +*.latexmain diff --git a/documentation/introduction.tex b/documentation/introduction.tex new file mode 100644 index 0000000..864c478 --- /dev/null +++ b/documentation/introduction.tex @@ -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. diff --git a/documentation/robotum_report.tex b/documentation/robotum_report.tex index 6343a8d..3e3624f 100644 --- a/documentation/robotum_report.tex +++ b/documentation/robotum_report.tex @@ -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} \ No newline at end of file +\end{document} diff --git a/documentation/tools.tex b/documentation/tools.tex new file mode 100644 index 0000000..ad3c42b --- /dev/null +++ b/documentation/tools.tex @@ -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.