\chapter{Conclusion}

\section{Results}

In this section we will summarize our most important achievements during the
work on the project. First, we managed to implement robust detection
algorithms, on which we could rely when we worked on higher-lever behaviors.
During our tests, there were almost no false detections, i.e.\ foreign objects
were not detected as a ball or a goal. Sometimes the ball and the goal were
missed, even if they were in the field of view, which happened due to imprecise
color calibration under changing lighting conditions. The goal detection was on
of the most difficult project milestones, so we are particularly satisfied with
the resulting performance. It is worth mentioning, that with the current
algorithm, for successful detection, it is not even necessary to have the whole
goal in the camera image.

Another important achievement is the overall system robustness. In our tests
the robot could successfully reach the ball, do the necessary alignments and
kick the ball. When the robot decided that he should kick the ball, in the
majority of cases the kick was successful and the ball reached the target. We
performed these tests from many starting positions and assuming many relative
position of the ball and the goal. Naturally, we put some constraints on the
problem, but within th \todo{smth about constraints and such bullshit}.

Furthermore, we managed not only to make the whole approach robust, but also
worked on making the procedure fast, and the approach planing was a crucial
element of this. In the project's early stages, the robot couldn't approach the
ball from the side, depending on the goal position, and instead always walked
towards the ball directly and aligned to the goal afterwards. The tests have
shown, that in such configuration the goal alignment was actually the longest
phase and could take over a minute. Then we introduced the approach planing,
and as a result the goal alignment stage could in many scenarios be completely
eliminated, which was greatly beneficial for the execution times.

Finally, \todo{the kick was nice}.

\section{Future Work}

With our objective for this semester completed, there still remains a vast room
for improvement. Some of the most interesting topics for future work will now
presented.

The first important topic is the self-localization. Currently our robot is
completely unaware of his position on the field, but if such information could
be obtained, then it could be leveraged to make path planning more effective
and precise.

Another important capability that our robot lacks for now is obstacle
awareness, which would be unacceptable in the real RoboCup soccer game. Making
the robot aware of the obstacles on the field would require the obstacle
detection to be implemented, as well as some changes to the path planning
algorithms to be made, which makes this task an interesting project on its own.

A further capability that could be useful for the striker is the ability to
perform different kicks depending on the situation. For example, if the robot
could perform a sideways kick, then the goal alignment would in many situations
be unnecessary, which would reduce the time needed to score a goal.

In this semester we concentrated on the ``free-kick'' situation, so our robot
can perform its tasks in the absence of other players, and only when the ball
is not moving. Another constraint that we imposed on our problem is that the
ball is relatively close to the goal, and that the ball is closer to the goal
than the robot, so that the robot doesn't have to run away from the goal. To be
useful in a real game the striker should be able to handle more complex
situations. For example, the \textit{dribbling} skill could help the robot to
avoid the opponents and to bring the ball into a convenient striking position.

Finally, we realized that the built-in moving functions in NAOqi SDK produce
fairly slow movements, and also don't allow to change the direction of movement
fluently, which results in pauses when the robot needs to move in another
direction. This realization brings us to thought, that the custom-implemented
movement might result in much faster and smoother behavior.
