Team Report and Code Release 2010
Thomas R¨ofer1, Tim Laue1, Judith M¨uller1, Armin Burchardt2, Erik Damrose2,
Alexander Fabisch2, Fynn Feldpausch2, Katharina Gillmann2, Colin Graf2,
Thijs Jeffry de Haas2, Alexander H¨artl2, Daniel Honsel2, Philipp Kastner2,
Tobias Kastner2, Benjamin Markowsky2, Michael Mester2, Jonas Peter2,
Ole Jan Lars Riemann2, Martin Ring2, Wiebke Sauerland2, Andr´e Schreck2,
Ingo Sieverdingbeck2, Felix Wenk2, Jan-Hendrik Worch2
1 Deutsches Forschungszentrum f¨ur K¨unstliche Intelligenz,
Enrique-Schmidt-Str. 5, 28359 Bremen, Germany
2 Universit¨at Bremen, Fachbereich 3, Postfach 330440, 28334 Bremen, Germany
Revision: October 1, 2010
Contents
1 Introduction
1.1 About us
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2 About the Document . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3 Changes Since 2009 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2 Getting Started
2.1 Unpacking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2 Components and Configurations
. . . . . . . . . . . . . . . . . . . . . . . . . . .
2.3 Compiling using Visual Studio 2008 . . . . . . . . . . . . . . . . . . . . . . . . .
2.3.1 Required Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.3.2 Compiling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.4 Compiling on Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.4.1 Required Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.4.2 Compiling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.5 Configuration Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.6 Setting Up the Nao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.6.1 Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.6.2 Creating Robot Configuration . . . . . . . . . . . . . . . . . . . . . . . . .
2.6.3 Wireless Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.6.4
Setup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.7 Copying the Compiled Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.7.1 Using copyfiles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.7.2 Using teamDeploy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.8 Working with the Nao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.9 Starting SimRobot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3 Architecture
3.1 Binding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2 Processes
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3 Modules and Representations . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
7
7
8
9
11
11
12
13
13
13
13
13
14
14
17
17
17
17
18
18
18
19
20
21
22
22
23
24
CONTENTS
B-Human 2010
3.3.1 Blackboard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3.2 Module Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3.3 Configuring Providers . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3.4 Pseudo-Module default . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.4 Streams . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.4.1
Streams Available
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.4.2
Streaming Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.4.3 Making Classes Streamable . . . . . . . . . . . . . . . . . . . . . . . . . .
3.5 Communication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.5.1 Message Queues
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.5.2
Inter-process Communication . . . . . . . . . . . . . . . . . . . . . . . . .
3.5.3 Debug Communication . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.5.4 Team Communication . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.6 Debugging Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.6.1 Debug Requests
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.6.2 Debug Images . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.6.3 Debug Drawings
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.6.4 Plots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.6.5 Modify . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.6.6
Stopwatches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4 Cognition
4.1 Perception . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.1.1 Definition of Coordinate Systems . . . . . . . . . . . . . . . . . . . . . . .
4.1.1.1 Camera Matrix . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.1.1.2
Image Coordinate System . . . . . . . . . . . . . . . . . . . . . .
4.1.2 BodyContourProvider . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.1.3
Image Processing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.1.3.1
Segmentation and Region-Building . . . . . . . . . . . . . . . . .
4.1.3.2 Region Classification . . . . . . . . . . . . . . . . . . . . . . . .
4.1.3.3 Detecting Lines
. . . . . . . . . . . . . . . . . . . . . . . . . . .
4.1.3.4 Detecting the Goal . . . . . . . . . . . . . . . . . . . . . . . . . .
4.1.3.5 Detecting the Ball
. . . . . . . . . . . . . . . . . . . . . . . . . .
4.1.3.6 Detecting Other Robots . . . . . . . . . . . . . . . . . . . . . . .
4.2 Modeling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2.1
Self-Localization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2.2 Robot Pose Validation . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2.3 Ball Tracking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
24
24
26
26
26
27
28
29
30
30
31
32
32
33
33
33
35
36
36
37
38
38
38
39
41
41
42
43
45
47
49
50
51
52
52
53
54
3
B-Human 2010
CONTENTS
4.2.4 Ground Truth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2.5 Obstacle Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2.6 Robot Tracking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2.7 Largest Free Part of the Opponent Goal . . . . . . . . . . . . . . . . . . .
5 Motion
5.1 Sensing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.1.1
Joint Data Filtering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.1.2 Ground Contact Recognition . . . . . . . . . . . . . . . . . . . . . . . . .
5.1.3 Robot Model Generation . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.1.4
Inertia Sensor Data Calibration . . . . . . . . . . . . . . . . . . . . . . . .
5.1.5
Inertia Sensor Data Filtering . . . . . . . . . . . . . . . . . . . . . . . . .
5.1.6 Torso Matrix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.1.7 Detecting a Fall
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.2 Motion Control
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.2.1 Motion Selection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.2.2 Head Motions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.2.3 Walking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.2.3.1
Inverse Kinematic . . . . . . . . . . . . . . . . . . . . . . . . . .
5.2.4
Special Actions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.2.5 Motion Combination . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6 Behavior Control
6.1 XABSL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.2 Setting Up a New Behavior . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.3 Behavior Used at RoboCup 2010 . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.3.1 Button Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.3.2 Body Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.3.3 Head Control
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.3.4 Kick Pose Provider . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.3.5 Tactics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.3.6 Role Selector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.3.7 Different Roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.3.7.1
Striker
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.3.7.2
Supporter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.3.7.3 Defender
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.3.7.4 Keeper
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.3.8 Penalty Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
55
56
57
59
60
61
61
61
62
62
63
63
64
65
66
66
66
68
71
72
74
75
78
80
80
81
81
83
83
84
86
86
90
92
93
94
4
CONTENTS
B-Human 2010
6.3.9 Display Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.3.9.1 Right Eye . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.3.9.2
Left Eye
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.3.9.3 Torso (Chest Button) . . . . . . . . . . . . . . . . . . . . . . . .
6.3.9.4 Feet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.3.9.5 Ears . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7 Challenges
7.1 Dribble Challenge
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.2 Passing Challenge
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.3 Open Challenge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8 SimRobot
95
95
95
95
95
95
97
97
98
99
101
8.1
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
8.2 Scene View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
8.3
Information Views
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
8.3.1
Image Views
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
8.3.2 Color Space Views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
8.3.3 Field Views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
8.3.4 Xabsl View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
8.3.5
Sensor Data View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
8.3.6
Joint Data View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
8.3.7 Plot Views
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
8.3.8 Timing View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
8.3.9 Module Views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
8.3.10 Kick View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
8.4 Scene Description Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
8.5 Console Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
8.5.1
Initialization Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
8.5.2 Global Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
8.5.3 Robot Commands
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
8.5.4
Input Selection Dialog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
8.6 Examples
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
8.6.1 Recording a Log File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
8.6.2 Replaying a Log File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
8.6.3 Remote Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
9 Acknowledgements
123
5
B-Human 2010
Bibliography
CONTENTS
125
6
Chapter 1
Introduction
1.1 About us
B-Human is a joint RoboCup team of the Universit¨at Bremen and the German Research Center
for Artificial Intelligence (DFKI). The team was founded in 2006 and it consists of numerous
undergraduate students as well as of researchers of these two institutions. The latter have already
been active in a number of RoboCup teams, such as the GermanTeam and the Bremen Byters
(both Four-Legged League), B-Human in the Humanoid Kid-Size League, the BreDoBrothers
(both in the Humanoid League and the Standard Platform League), and B-Smart (Small-Size
League).
The senior team members have also been part of a number of other successes, such as winning
the RoboCup World Championship three times with the GermanTeam (2004, 2005, and 2008),
winning the RoboCup German Open also three times (2007 and 2008 with the GermanTeam,
2008 with B-Smart), and winning the Four-Legged League Technical Challenge twice (2003 and
2007 with the GermanTeam).
In parallel to these activities, B-Human started as a part of the joint team BreDoBrothers that
has been a cooperation of the Technische Universit¨at Dortmund and the Universit¨at Bremen.
The team participated in the Humanoid League in RoboCup 2006. The software was based on
previous works of the GermanTeam [12]. This team was split into two single Humanoid teams,
because of difficulties in developing and maintaining a robust robot platform across two locations.
The DoH!Bots from Dortmund as well as B-Human from Bremen participated in RoboCup 2007;
B-Human reached the quarter finals and was undefeated during round robin. In addition to the
participation in the Humanoid League at the RoboCup 2008, B-Human also attended a new
cooperation with the Technische Universit¨at Dortmund. Hence, B-Human took part in the Two-
Legged Competition of the Standard Platform League as part of the team BreDoBrothers, who
reached the quarter finals. After the RoboCup 2008, we concentrated our work exclusively on
the Two-Legged SPL. By integrating all the students of the Humanoid League team B-Human,
the BreDoBrothers would have had more than thirty members. Therefore we decided to end the
cooperation by mutual agreement to facilitate a better workflow and work-sharing.
In 2009, we participated in the RoboCup German Open Standard Platform League and won
the competition. We scored 27 goals and received none in five matches against different teams.
Furthermore, B-Human took part in the RoboCup World Championship and won the compe-
tition, achieving a goal ratio of 64:1. In addition, we could also win first place in the technical
challenge, shared with Nao Team HTWK from Leipzig.
We repeated our successes in 2010 and won the German Open with a goal ratio of 54:2 as well
7
B-Human 2010
1.2. ABOUT THE DOCUMENT
Figure 1.1: The majority of the team members at the German Open 2010 awards ceremony.
as the RoboCup with an overall goal ratio of 65:3.
The current team consists of the following persons:
Students. Alexander Fabisch, Arne Humann, Benjamin Markowsky, Carsten K¨onemann,
Daniel Honsel, Emil Huseynli, Felix Wenk, Fynn Feldpausch, Jonas Peter, Martin Ring,
Max Trocha, Michael Mester, Ole Jan Lars Riemann, Philipp Kastner, Bastian Reich,
Thomas Liebschwager, Tobias Kastner, Wiebke Sauerland.
Senior Students. Alexander H¨artl, Armin Burchardt, Colin Graf, Ingo Sieverdingbeck, Katha-
rina Gillmann, Thijs Jeffry de Haas.
Researchers. Tim Laue, Judith M¨uller.
Senior Researcher. Thomas R¨ofer (team leader).
1.2 About the Document
As we wanted to revive the tradition of an annual code release two years ago, it is obligatory
for us to continue with it this year. This document, which is partially based on last year’s code
release [23], gives a survey about the evolved system we used at RoboCup 2010. The changes
made to code which was used at RoboCup 2009 are shortly enumerated in 1.3.
Chapter 2 starts with a short introduction to the software required, as well as an explanation
of how to run the Nao with our software. Chapter 3 gives an introduction to the software
framework. Chapter 4 deals with the cognition system and will give an overview of our perception
and modeling components. In Chapter 5, we describe our walking approach and how to create
special motion patterns. Chapter 6 gives an overview about the behavior which was used at the
8