ODENS 2010 Extended Team Description
Makoto Nakajima, Takaumi Kimura, Yasuhiro Masutani
Osaka Electro-Communication University 1130-70, Kiyotaki, Shijonawate, Osaka 575-0063, Japan
Abstract Team ODENS consists of members of Masutani Laboratory in Department of Computer Science, Faculty of Information Science and Arts, Osaka Electro-Communication University, Japan. ODENS has participated in RoboCup competition since RoboCup Japan Open 2007. The results in the Japanese competitions were the 4th place in 2007, the 2nd place in 2008, and the 3rd place in 2009. Moreover, we won the 4th place in RoboCup 2009 Graz, which was the first experience of a world competition for ODENS.
Introduction
Team ODENS consists of members of Masutani Laboratory in Department of Computer Science, Faculty of Information Science and Arts, Osaka Electro-Communication University, Japan. ODENS has participated in RoboCup competition since RoboCup Japan Open 2007. The results in the Japanese competitions were the 4th place in 2007, the 2nd place in 2008, and the 3rd place in 2009. Moreover, we won the 4th place in RoboCup 2009 Graz, which was the first experience of a world competition for ODENS[1].
In the Department of Computer Science, Exercise in Robot Programming is organized for the second grade students, which uses the actual robot system for RoboCup competition. Students learn basic programming of deciding action of soccer robots in the exercise. In the room for the exercise, full-size SSL field and two ceiling cameras are readied. Since ODENS develops robots and programs there, it can always do exercises and experiments on the assumption of regular game.
In this department, students belong to laboratories from the second semester of the second grade. Students who are interested in soccer robot through "Exercise in Robot Programming" wish to enter Masutani Laboratory. In Masutani Laboratory, projects for RoboCup are themes for pre-seminar before regular graduation thesis. Moreover some students study RoboCup as also theme of graduation thesis.
Since the department is in the field of computer science and technology, the second grade students focus on development of software for deciding action. The hardware of robot is designed and manufactured by a company. The software of controlling omnidirectional mechanism is improved by graduate students and higher grade students.
In the following sections, the hardware and software of robot is introduced first. After that the computer system outside of field, especially a method of deciding action, is described.
Overview of the system
The system of ODENS is a distributed and autonomous system, which consists of one server and some clients as shown in Fig.1. One client program corresponds to one robot. All client is independent of each other. The server receives coordinate information of objects in the field provided by SSL-Vision. They are transformed in appropriate format and sent to the clients. Signals from the referee box are also sent to them. Each client program decides the next action for the corresponding robot based on the information received from the server and sends a command back to the server. The server collects the commands from all clients and sends it to the robots in the field by wireless. The above cycle is executed 60 times in one second.
Robots
The mechanical and electrical hardwares of robots is designed and manufactured by SMATS Corp., which is very similar to RoboDragons' robot[2]. However, the onboard software for control is original.
Hardware
An appearance of the robot is shown in Fig.2. The robot can be packed in the cylinder with dimensions of 146 mm height and 175 mm diameter. The main dimensions of the robot with a cover are shown in Fig.3. The main specifications are shown in Table 1. The system configuration of robot is shown in Fig.4.
Table 1. Specifications of the robot
| Dimension | length 162.5[mm], width 175[mm], height 146[mm] |
|---|---|
| Mass | 2.2[kg] |
| Wheel | number 4, radius 30.5[mm], sub wheels 15 |
| Motor | maxon RE-max24 222050, 11[W], reduction ratio 7.916 |
| Kicking device | 3 solenoids, 240[V] |
| Dribbling device radius 10[mm], length 72[mm] | |
| Ball sensor | LED and Photo-transistor, number 4 |
| Gyro sensor | ADXRS610 |
| Wireless modem Futaba FRH-SD07T, 2.4[GHz]] | |
| CPU | Renesas SH7045F(SH-2), clock 28[MHz] |
| Memory | SRAM 8[Mbit], Flash ROM 4[Mbit] |
| Battery | Li-Polymer 14.8[V]×1, 7.4[V]×1 |
Software for Robot Control
The program of CPU on the robot is developed with GNU C compiler. Three tasks are concurrently processed on the CPU. The task for feedback control is executed every 2[ms]. The task for communication receives a command from the outside via wireless modem every 16.7[ms]. The command consists of magnitude and direction of linear velocity, angular velocity, and on/off of dribbling device and kicking device.
Modeling As shown in Fig.5, a coordinates system is attached on the robot. Then numbers are assigned for wheels. Let $\alpha$ be angle of axes of front wheels from the front direction $(+X_r)$ , $\beta$ be angle of axes of rear wheels from the rear direction $(-X_r)$ , and, L be distance between the center and the wheel. We define the vector $\mathbf{v} = [v_1, v_2, v_3, v_4]^T$ as set of velocities of wheels at contact point and $\mathbf{V} = [V_x, V_y, \Omega]^T$ as set of linear and angular velocities of the body in the robot coordinates system. Relation between two velocity vectors is obtained based on geometry as follows,
$$\mathbf{v} = A\mathbf{V} \tag{1}$$
$$A = \begin{pmatrix} -\sin\beta - \cos\beta \ L\ \sin\alpha & \cos\alpha \ L\ -\sin\alpha & \cos\alpha \ L\ \sin\beta & \cos\beta \ L \end{pmatrix} \tag{2}$$
Furthermore, we define the vector $\mathbf{f} = [f_1, f_2, f_3, f_4]^T$ as set of forces acting on the wheels at contact point and the vector $\mathbf{F} = [F_x, F_y, N]^T$ as set of resultant forces and moment acting on the body. Relation between two force vectors is obtained from the principle of virtual work as follows,
$$\mathbf{F} = A^T \mathbf{f} \tag{3}$$
Server
(empty)
Hardware
PC The server PC is equipped with Intel Core2 Duo P8700 2.53[GHz] and 2[GB] RAM. It is connected to the SSL-Vision PCs, referee box PCs, and some client PCs through LAN. It also uses a USB-serial converter to connect the wireless modem.
Wireless communication Wireless modem Futaba Corp. FRH-SD3T is used to communicate with the robots in the field, whose communication rate is 38.4[kbps] and whose frequency is 2.4[GHz].
Software
OS for server PC is Microsoft Windows XP Professional SP3. Visual Studio 2008 C++ is used to develop the program. The server program has GUI and consists of multiple threads.
The construction of the threads and connecting relations with the outside of the server is shown in Fig.9. The oval represents outside of the server, and the rectangle represents the thread. The "signal" means synchronization between the threads, and te "data" means the exchanges of data between the threads. "S-V watcher" is a program running on the server PC, but it is not contained in the server program. Functions of these threads are described as follows.
S-V watcher SSL-Vision watcher is a thread to merge and manage the field information divided into two that is given from SSL-Vision[3]. It gives the merged field information to the "Kalman filter" thread.
S-V watcher shared the memory area with the Kalman filter thread and exchanges information through this memory area. S-V watcher transmits the message to the Kalman filter thread to tell that new information is written on the memory.
Fig. 12. Commands to the robots
| Ball | Blue 1 | Blue 2 | Blue 3 | Blue 4 | Blue 5 |
|---|---|---|---|---|---|
| 1[mm/sec] | N/A[mm/sec] | N/A[mm/sec] | N/A[mm/sec] | N/A[mm/sec] | N/A[mm/sec |
| -164[deg] | 0 | 0 | 0 | 0 | |
| 0 | 0 | 0 | 0 | ||
| 変換前データ | 0 | 0 | 0 | 0 | |
| 変換後データ | 0,0,0 | 0,0,0 | 0,0,0 | 0,0,0 | 0,0,0 |
| ■見 8 月 | Yellow 1 | Yellow 2 | Yellow 3 | Yellow 4 | Yellow 5 |
| 速度(観測) | N/A[mm/sec] | N/A[mm/sec] | N/A[mm/sec] | N/A[mm/sec] | N/A[mm/sec |
| 速度 | 0 | 0 | 0 | 0 | |
| 方向 | 0 | 0 | 0 | 0 | |
| 角速度 | 0 | 0 | 0 | 0 | |
| KP, KM, DM | 0,0,0 | 0,0,0 | 0,0,0 | 0,0,0 | 0,0,0 |
From the client to the server
Message::=((pass ...|(role ...)
– (init (version VerNum)(number RoboNum)(Color)(global2) (Myname UserName)) VerNum::=the protocol version RoboNum::=(1–5) Color ::=(blue|yellow) UserName::=the name of client comupter – (bye) – (com (Vel Dir ω Options)) Vel::=the command of velocity Dir ::=the command of movement direction ω::=the command of angular velocity Options::=the command of kick mode, kick power and dribbling mode – (say (Message) )
From the server to the clients
RoleID::=(0xAABCDD)
- (init 1 RoboNum global2 ) RoboNum := (1-5)
- (see Time (RS 1) ((b) x_b y_b) ((p Color \ RoboNum )x \ y \ dir) ) Time::=the running time of the server program x_b::=the x coordinate of the ball y_b::=the y coordinate of the ball Color := (b|y) RoboNum := (1-5) x := the x coordinate of the robot y:=the v coordinate of the robot dir::=the front direction of the robot
- (hear Time IDNum Message Time::=the running time of the server program IDNum:=(1-5|99) Message::=((refereebox ...)|(role ...)|(pass ...)
- (refereebox Num) Num::=Transformed char into int From a client to the other clients
- (pass 3 RoboNum\ Time ( x_w , y_w ) ( x_t , y_t ) OwnNum RoboNum := (1-5) Time::=Wait time(default 3.0 sec) x_w::=the x coordinate to keep waiting y_w::=the y coordinate to keep waiting x_t::=the x coordinate that lets one kick the ball y_t::=the y coordinate that lets one kick the ball OwnNum := (1-5) (role OwnNum RoleID) OwnNum := (1-5)
Management of clients The clients can connect to the server and specify the robot number. After that it can disconnect and reconnect at any time. The information of clients connecting is displayed in the GUI window. Since the server can manage clients of two teams at same time, two team can play a game by using one server if all clients follow the protocol.
Wireless communication The server can deal with two modems. The commands to five robots are packed in one packet and transmitted in broadcast. The packet is 32[byte], which consists of a header of 2[byte] and five commands of 6[byte]. The command consists of ECC (Error Check and Correct) data of 2[byte], magnitude of linear velocity of 1[byte], its direction of 1[byte], angular velocity of 1[byte], and switches of dribbling device and kicking device of 1[byte].
Simulator
A simulator is indispensable for development of the program of deciding action. The ODENS simulator uses ODE[4] for physical computation. Since it supports the same protocol as the server, the client program can connect to the simulator without changing its program. Moreover, it can deal with two or more clients and the referee box.
Client
PC executing the client program does not need special specifications and performance, whose OS is not specified(We use both Windows and Linux). Only function of network communication is needed to connect to the server.
One client program corresponds to the one robot. Therefore, all clients program are executed independently of each other.
Structure of action decision
The structure of client program is separated into four layers as shown in Fig.13.
Game layer This layer is processed based on a state transition, whose state is switched mainly by command received from the referee box. There are five states, "Out of play", "Pre set play", "Set play", "In play", and "Halt". The state transition diagram is shown in Fig.14.
Table 2. Role table
| ſ | Relation | bot | h tear | ns are | far | m | y tear | n is n | ear | T | 0000 | nent | eam i | is nea | r | bot | h tean | ns are | near | ||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Rank | Position Distance |
0 | 1 | 2 | 3 | 4 | 5 | 0 | 1 | 2 | 3 | 4 | 5 | 0 | 1 | 2 | 3 | 4 | 5 | 0 | 1 | 2 | 3 | 4 | 5 |
| possessed | AT1 | AT1 | AT1 | AT1 | AT1 | AT1 | AT1 | AT1 | AT1 | AT1 | AT1 | AT1 | AT1 | AT1 | AT1 | AT1 | AT1 | AT1 | AT1 | AT1 | AT1 | AT1 | AT1 | AT1 | |
| 1 | near | BG | AT1 | AT1 | AT1 | AT1 | BG | AT1 | AT1 | AT1 | AT1 | AT1 | BG | BG | BG | BG | BG | BG | BG | BG | BG | BG | BG | BG | |
| ' | midd l e | BG | BG | BG | BG | BG | AT1 | BG | BG | BG | BG | BG | AT1 | BG | BG | BG | BG | BG | BG | BG | BG | BG | BG | BG | BG |
| far | BG | BG | BG | BG | BG | AT1 | BG | BG | BG | BG | BG | AT1 | BG | BG | BG | BG | BG | BG | BG | BG | BG | BG | BG | BG | |
| possessed | AT2 | AT2 | AT2 | AT2 | AT2 | AT2 | AT2 | AT2 | AT2 | AT2 | AT2 | AT2 | AT2 | AT2 | AT2 | AT2 | AT2 | AT2 | GD | GD | AT2 | AT2 | AT2 | AT2 | |
| 2 | near | PC | PC | PC | AT2 | AT2 | AT2 | AT2 | AT2 | AT2 | AT2 | AT2 | AT2 | GD | PC | AT2 | AT2 | AT2 | AT2 | GD | GD | AT2 | AT2 | AT2 | AT2 |
| ۷ | midd l e | GD | GD | PC | AT2 | AT2 | AT2 | AT2 | AT2 | AT2 | AT2 | AT2 | AT2 | GD | GD | GD | AT2 | AT2 | AT2 | GD | GD | GD | AT2 | AT2 | AT2 |
| far | GD | GD | GD | AT2 | AT2 | AT2 | AT2 | AT2 | AT2 | AT2 | AT2 | AT2 | GD | GD | GD | AT2 | AT2 | AT2 | GD | GD | GD | AT2 | AT2 | AT2 | |
| possessed | GD | GD | GD | GD | PW2 | PC | GD | GD | GD | GD | PW2 | PC | GD | GD | GD | GD | PC | PC | GD | GD | GD | GD | PW2 | PC | |
| 3 | near | GD | GD | GD | GD | GD | GD | GD | GD | PW2 | GD | GD | GD | GD | PC | PC | GD | GD | GD | GD | PW2 | ||||
| 3 | midd l e | GD | GD | GD | GD | PW2 | PC | GD | GD | GD | GD | PW2 | PC | GD | GD | GD | GD | PC | PC | GD | GD | GD | GD | PW2 | PC |
| far | GD | GD | GD | GD | PW2 | PC | GD | GD | GD | GD | PW2 | PC | GD | GD | GD | GD | PC | PC | GD | GD | GD | GD | PW2 | PC | |
| PW2 | PW1 | GD | GD | GD | GD | PW2 | PW1 | PW2 | GD | GD | PW2 | GD | GD | GD | GD | GD | PW2 | GD | GD | GD | GD | GD | |||
| near | PW2 | PW1 | PW2 | GD | GD | GD | PW2 | PW1 | PW2 | GD | GD | GD | PW2 | GD | GD | GD | GD | GD | PW2 | GD | GD | GD | GD | GD | |
| 4 | midd l e | PW2 | PW1 | PW2 | GD | GD | GD | PW2 | PW1 | PW2 | GD | GD | GD | PW2 | PC | GD | GD | GD | GD | PW2 | PW1 | PW2 | GD | GD | GD |
| far | PW2 | PW1 | PW2 | GD | GD | GD | PW2 | PW1 | PW2 | GD | GD | GD | PW2 | PC | GD | GD | GD | GD | PW2 | PW1 | PW2 | GD | GD | GD | |
| possessed | PW2 | PW2 | PW2 | GD | GD | GD | PW2 | PW2 | PW2 | GD | GD | GD | PW2 | PW2 | PW2 | GD | GD | GD | PW2 | GD | GD | GD | GD | GD | |
| 5 | near | PW2 | PW2 | PW2 | GD | GD | GD | PW2 | PW2 | PW2 | GD | GD | GD | PW2 | PW2 | PW2 | GD | GD | GD | PW2 | GD | GD | GD | GD | GD |
| 5 | midd l e | PW2 | PW2 | PW2 | GD | GD | GD | PW2 | PW2 | PW2 | GD | GD | GD | PW2 | PW2 | PW2 | GD | GD | GD | PW2 | PW2 | PW2 | GD | GD | GD |
| far | PW2 | PW2 | PW2 | GD | GD | GD | PW2 | PW2 | PW2 | GD | GD | GD | PW2 | PW2 | PW2 | GD | GD | GD | PW2 | PW2 | PW2 | GD | GD | GD |
Table 3. The Role symbols and meanings
| Symbol | Role | Meaning |
|---|---|---|
| AT1 | Attacker1 | To attack the opponent team's goal positively. |
| AT2 | Attacker2 | To assist Attacker1. |
| BG | BallGetter | To take the ball which the opponent to have. |
| PC | PassCutter | To interfere with the pass between opponents. |
| PW1 | PassWaiter1 To wait the pass from friends. | |
| PW2 | PassWaiter2 To wait the pass from friends. | |
| GD | GoalDefender To defend goal outside of penalty area. |
Path planning and collision avoidance At first, as shown in Fig.16(a), the position the robot, the target, and the obstacles are given. The size of the obstacles enlarged so that the robot is considered to be point.
Next, temporary paths to the target are generated. The generating process is divided into step A as shown in Fig.16(b) and step B as shown in Fig.16(c). The process is carried out by calling them alternately.
The step A To check whether can move to the target linearly from the current position. When there are obstacles on the straight line, to find the point facing with the obstacle first.
The step B To follow the AABB(Axis Aligned Bounding Box) of the obstacles(the ball and robots).
After the path generation to the target is completed as shown in Fig.16(d), to perform "the visibility test" as shown in Fig.16(e). When all the path to the target are found, to choose the shortest path as shown in Fig.16(f).
When there are multiple obstacles, the paths to the target are shown in Fig.16(g). By visibility test, many paths are generated as shown in Fig.16(h). In such case the shortest path can be choosen by comparing the distances.
Reflective kick
Quick play is possible by the kick to the target without trapping the ball. We call it "Reflective kick", which is defined as a task in the task layer. Modeling of this task is as follows.
As shown in Fig.17, there is a robot on the predicted path of the ball that is approaching at the velocity. It is assumed that the direction of the ball after kick is given. Let be φ be the angle of the ball before kick, θ be the angle in direction of the front of robot, v be the velocity of the ball before kick, a be the kick velocity given in direction of the front, e1 be the restitution coefficient in tangential direction, and e2 be the restitution coefficient in normal direction . These parameter can be related in Eq.(15).
$$\tan(\phi - \theta) = \frac{e_1 v \sin \theta}{e_2 v \cos \theta + a} \tag{15}$$
To execute the reflective kick, the value of angle θ is needed, which is computed with Newton's method. In our case, e1 = 0*.65, e2 = 0.*34, and a = 2000[mm/s] are used.
Value of safety
To decide the action of the robot, "value of safety" is defined, which evaluates the quality of the course of the ball. It is used in the task layer.
It is assumed that the course of the ball to be evaluated is given as a line segment. When the perpendicular is lowered from the nth obstacle (robot and goal post of the opponent team) in this segment, the distance from the starting point to the orthocenter is defined as An and the perpendicular length is defined as Bn. After these values are computed for all obstacles, the value of safety is defined in Eq. (16).
$$\alpha = \min_{n} \frac{B_n}{A_n} \tag{16}$$
When the course of reflective kick is evaluated as shown in Fig.18, value of safety is computed respectively for two segments before and after the kick, then the value of safety of the entire course is a sum of two values.
Table 4. Parameters for the value of danger
| a | tdelay | vbmax | vbpass |
|---|---|---|---|
| acceleration time delay shoot velocity pass velocity | |||
| 2627[mm/s2 ] |
0.149[s] | 10[m/s] | 5[m/s] |
$$t_{D} = \frac{\sqrt{(x - x_{b})^{2} + (y - y_{b})^{2}}}{v_{b_{max}}} - t_{delay}$$
$$r_{D} = \frac{at_{D}^{2}}{2}$$
$$t_{I_{n}} = \frac{\sqrt{(x_{b} - x_{n})^{2} + (y_{b} - y_{n})^{2}}}{v_{b_{pass}}} + \frac{\sqrt{(x_{n} - x)^{2} + (y_{n} - y)^{2}}}{v_{b_{max}}} - t_{delay}$$
$$r_{I_{n}} = \frac{at_{I_{n}}^{2}}{2} \tag{18}$$
The parameters in Eqs.(17) and (18) we use are shown in Table 4. If the line cannot be prevented by the goalkeeper, the value of danger is computed by Eq.(19) for the direct shot, or by Eq.(20) for the indirect shot.
$$\alpha_i = p \frac{1}{\sqrt{(x_b - x_{g_i})^2 + (y_b - y_{g_i})^2}}, (i = 0, 1, 2, \dots, 8) \tag{19}$$
$$\beta_{i,n} = q \frac{1}{\sqrt{(x_n - x_{g_i})^2 + (y_n - y_{g_i})^2}}, (i = 0, 1, 2, \dots, 8) \tag{20}$$
where p and q are appropriate weight coefficients.
Conclusion
As mentioned above, the part of deciding action is perfectly separated from image processing and robot control in the system. Owing to this feature, this system became useful platforms for both education and research. For the purpose of education, many students learned robot programing by using it. On the other hand, ODENS won the 4th in the RoboCup 2009 Graz by using the same system.
Although under the SSL regulation it is possible to make centralized system, in the system of ODENS, the program for each robot is independent of others. In the future, following this policy we will study robot system and participate in competitions.
References
- [1] K. Kanaya et al., "ODENS 2009 Team Description", RoboCup2009 (2009).
- [2] J. Maeno et al., "RoboDragons 2009 Team Description", RoboCup2009 (2009).
- [3] S. Zickler, T. Laue, O. Birbach, M. Wongphati, and M. Velosso: SSL vision: The Shared Vision System for the RoboCup Small Size League, RoboCup 2009: Robot Soccer World Cup XIII, Springer-Verlag (2010).
- [4] R. Smith et al., "Open Dynamics Engine", http://www.ode.org/