diff --git a/documentation/perception.tex b/documentation/perception.tex new file mode 100644 index 0000000..e0a8a2d --- /dev/null +++ b/documentation/perception.tex @@ -0,0 +1,46 @@ +\section{Ball detection} + +The very first task that needed to be accomplished was to detect the ball, +which is uniformly red-colored and measures about 6 cm in diameter. We decided +to use a popular algorithm based on color segmentation. The idea behind this +algorithm is to find the biggest red area in the image and assume that this is +the ball. First, the desired color needs to be defined as an interval of HSV +(Hue-Saturation-Value) values. After that, the image itself needs to be +transformed into HSV colorspace, so that the regions of interest can be +extracted into a \textit{binary mask}. The contours of the regions can then be +identified in a mask, and the areas of the regions can be calculated using the +routines from the OpenCV library. The center and the radius of the region with +the largest area are then determined and are assumed to be the center and the +radius of the ball. + +It is often recommended to eliminate the noise in the binary mask by applying a +sequence of \textit{erosions} and \textit{dilations}, but we found, that for +the task of finding the \textit{biggest} area the noise doesn't present a +problem, whereas performing erosions may completely delete the image of the +ball, if it is relatively far from the robot and the camera resolution is low. +For this reason it was decided not to process the binary mask with erosions and +dilations, which allowed us to detect the ball even over long distances. + +The advantages of the presented algorithm are its speed and simplicity. The +major downside is that the careful color calibration is required for the +algorithm to function properly. If the HSV interval of the targeted color is +too narrow, then the algorithm might miss the ball; if the interval is too +wide, then other big red-shaded objects in the camera image will be detected as +the ball. A possible approach to alleviate these issues to a certain degree +will be presented further in this chapter. To conclude, we found this algorithm +to be robust enough for our purposes, if the sensible color calibration was +provided. + +\section{Goal detection} + +The goal detection presented itself as a more difficult task. The color of the +goal is white, and there are generally many white areas in the image from the +robot camera, which have area larger than that of the image of the goal, for +example the white field lines and the big white wall in the room with the +field. To deal with the multitude of the possible goal candidates, we +propose the following algorithm. + +First, all contours around white areas are extracted by using a procedure +similar to that described in the section on ball detection. Only $N$ contours +with the largest areas are considered further (in our experiments it was +empirically determined that $N=5$ provides good results). diff --git a/documentation/robotum_report.tex b/documentation/robotum_report.tex index 3e3624f..66dace5 100644 --- a/documentation/robotum_report.tex +++ b/documentation/robotum_report.tex @@ -40,38 +40,45 @@ \preface -%\input{Acknowledgements/Acknowledgements} +% \input{Acknowledgements/Acknowledgements} -\generatebody %generates table of contents, list of figures and list of tables. +\generatebody % generates table of contents, list of figures and of tables. -%\input{Introduction/Introduction} +% \input{Introduction/Introduction} \setstretch{1.2} % set line spacing \input{introduction} \input{tools} +\input{solintro} +\input{perception} \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. -%\input{Body/Setup} +% \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. +% \input{Body/Setup} % \todo{Setup} -%\input{Body/Perception} -%\todo{Perception} -%\input{Body/Modeling} -%\todo{Modeling} -%\input{Body/Motion} +% \input{Body/Perception} +% \todo{Perception} +% \input{Body/Modeling} +% \todo{Modeling} +% \input{Body/Motion} -%\input{Body/Behavior} +% \input{Body/Behavior} -%\input{Conclusion/Conclusion} +% \input{Conclusion/Conclusion} \begin{appendices} %\input{Appendix/BehaviorImplementation} \end{appendices} -% Bibliography, see https://de.sharelatex.com/learn/Bibliography_management_with_bibtex#Bibliography_management_with_Bibtex +% Bibliography, see +% https://de.sharelatex.com/learn/Bibliography_management_with_bibtex#Bibliography_management_with_Bibtex + \addcontentsline{toc}{chapter}{Bibliography} \bibliographystyle{IEEEtran} \bibliography{Bibliography/Bibliography} diff --git a/documentation/solintro.tex b/documentation/solintro.tex new file mode 100644 index 0000000..9f6b962 --- /dev/null +++ b/documentation/solintro.tex @@ -0,0 +1,8 @@ +\chapter{Our solution} + +To achieve our objective, we identified ten big milestones that needed to be +completed. These milestones can roughly be grouped into perception, approach +planing, approach and the kick. In this chapter we will give our solutions to +the problems posed by each of the milestones, and at the end the resulting goal +scoring strategy will be presented. We will now start with the lower level +perception milestones and will gradually introduce higher level behaviors.