Keywords

1 Introduction

In this paper, we describe the technologies of the robot Accelite that is the winner of the RoboCup2015 Humanoid KidSize League. In RoboCup 2015 Hefei, we won the first prize of the 4on4 soccer and the technical challenge. The results are indicated in the Table 1. Since 2013, we have used the robot Accelite, which is the fourth generation robot in our team CIT Brains [13].

Table 1. Results of CIT Brains in RoboCup2015

CIT Brains is a joint team consisting of Hajime Research Institute and Chiba Institute of Technology (CIT). The aim of this development is not only research, but also education. Almost all members of our team are undergraduate students. They do not have enough knowledge and experience to understand our robot system in its entirety. Through improving our robot system, they have acquired a lot of hands-on experience in robot technologies.

In 2015, the rules of the humanoid league were changed dramatically. The ball was changed from a monochromatic orange ball to a real soccer ball. Furthermore, the color of the goal was changed from yellow to white. Therefore, the robots were not able to detect the ball by a simple image processing using only color features. For detecting the ball robustly, we built new image processing methods and verified their effectiveness. Consequently, we developed a robust detection system and we succeeded in the new technical challenge “Goal-Kick from Moving Ball”. To accomplish the challenge, the robot should detect a “moving” ball. Our developed method is able to detect a moving ball robustly.

In RoboCup2015, the field of play was also changed from a punch carpet to an artificial grass. We started to develop a stable walking on an artificial grass in 2014, because one of the technical challenges in RoboCup2014 is “Artificial Grass Challenge”. Our robot walked on the artificial grass robustly since 2014. However, when we start to use the soccer field in RoboCup2015, the robot could not walk robustly, because the length of the artificial grass was long. To solve this problem, we tried to find a solution heuristically in the venue. Consequently, we replaced the soles of our robots extemporaneously, and the robots were able to walk more robustly and speedily than before.

2 Conventional Ball Detection Method

Figure 1 shows our conventional method to detect the ball. The sequence is the following:

  1. (1)

    Categorizing each pixel to a color cluster according to a preset color lookup table

  2. (2)

    Calculating areas of the ball color

  3. (3)

    Distinguishing whether some conditions are satisfied or not

  4. (4)

    Registering as the ball if all conditions are satisfied.

Fig. 1.
figure 1

Sequence of the conventional image processing

Because the CPU of our robot is Intel Atom D525 (dual core, 1.8 GHz), we could not apply an image processing algorithm that demands a high performance CPU. In RoboCup2014, the ball was painted monochromatic orange and it was prohibited to put objects with same orange color on the green field. Therefore, we applied a simple algorithm to detect the ball using only color feature. The method was effective for a low performance CPU, and it detected the ball up to every 20 frames per second robustly.

This method can be applied for another colored ball if the ball has an individual color against other objects on the field. However, the ball color in RoboCup2015 is almost white and there are many white objects on the field. Therefore, we could not apply the conventional method to detect the ball in RoboCup2015.

3 Ball Detection Method Using Color Histogram

Figure 2 shows a soccer ball, which was provided as a sample of a game ball preliminarily. In the rule of humanoid league, it is described that the color of the ball should be over 50 % white. The sample ball contains many colors, so we try to detect the ball by using a color histogram. Figure 3 shows the developed image processing algorithm to detect the ball. The sequence is the following:

  1. (1)

    Calculating search points around the previous ball position using a particle filter

  2. (2)

    Calculating a color histogram for every search point

  3. (3)

    Evaluating a histogram intersection for every search point

  4. (4)

    Registering as the ball if the maximum value is over a threshold

Fig. 2.
figure 2

A sample of a game ball (Color figure online)

Fig. 3.
figure 3

Sequence of the image processing using color histogram, and the histogram bins

First, the robot calculates search points using a particle filter as the following:

  1. (1)

    If the ball is found,

    • distributing 50 particles around the ball position according to Gaussian distribution and distributing 50 particles uniformly in the captured image

    If the ball is not found,

    • distributing 500 particles uniformly in the captured image

  2. (2)

    Calculating diameters of circles in the captured image correspond to the outer shapes of the balls

    The diameter is changed according to the distance to the ball. The distance is calculated based on the position in the captured image and the tilt angle of the camera.

Second, random-sampled 100 points in the circle are categorized to color histogram bins. The camera of the robot outputs YUV image data, whose values are from 0 to 255. Each value of Y, U or V is categorized for 4 clusters as shown in the Fig. 3. Therefore, the total number of the histogram bin is 64. The histogram is calculated as the following:

  1. (1)

    Picking 100 points up randomly in the circle correspond to the outer shape of the ball

    Here, the number of the points is decided with consideration for the performance of the computer heuristically.

  2. (2)

    Categorizing YUV data of each point \( P_{ki} \) in the k-th circle to a color histogram bin according to the following equation:

    $$ B\left( {P_{ki} } \right) = {\text{floor}}\left( {\frac{{Y\left( {P_{ki} } \right)}}{64}} \right) \times 16 + {\text{floor}}\left( {\frac{{U\left( {P_{ki} } \right)}}{64}} \right) \times 4 + {\text{floor}}\left( {\frac{{V\left( {P_{ki} } \right)}}{64}} \right) $$
    (1)

    Here, B is the color histogram bin whose range from 0 to 63. Y, U and V are the values of YUV data whose ranges are from 0 to 255. Using the floor function, each Y, U or V value is categorized into one of four bins.

  3. (3)

    Calculating the histogram for each search point

    The value of the histogram bin \( H_{kj} \) is calculated by the following equation:

    $$ \begin{aligned} & A_{kj} = \left\{ {P_{ki} | B\left( {P_{ki} } \right) = j} \right\} \\ & H_{kj} = {\text{n}}\left( {A_{kj} } \right) \\ \end{aligned} $$
    (2)

    Here, the function \( {\text{n}}\left( {A_{kj} } \right) \) implies the number of elements of the set \( A_{kj} \).

Third, the histogram intersection is calculated at each search point [4]. In order to evaluate the degree of the coincidence of the histogram, we chose the histogram intersection as a simple methods. In advance, a reference color histogram of the ball is memorized manually. The histogram intersection \( M_{k} \) between the reference data \( R \) and the color histogram \( H_{k} \) at the k-th search point is calculated according to the following equation:

$$ M_{k} = \frac{{\mathop \sum \nolimits_{j = 0}^{63} { \hbox{min} }\left( {H_{kj} , R_{j} } \right)}}{{\mathop \sum \nolimits_{j = 0}^{63} R_{j} }} $$
(3)

Finally, if the maximum value of the histogram intersections is over a threshold, the corresponding search point is registered as the ball position.

The sequence of this method is more complex than the conventional method and it needs more computational time. So, the frame rate of the image processing was down to 5–10 frames per second. Using this method, the robot was able to detect the ball within a 3 m radius robustly. Consequently, we got the first prize in RoboCup2015 Japan Open Fukui.

4 Ball Detection Method Using a Template

We planned to use the above mentioned method using the color histogram in RoboCup2015 Hefei. However, the ball in RoboCup2015 was changed from the previous one. Figure 4 shows the game ball in RoboCup2015. The colors of the ball are just white and gray. The gray of the ball color is too similar to a shadow color of the goal or white line. Therefore, it was hard to distinguish the ball from other objects like goals and white lines using color histogram. Then, we tried to apply another detection method using the template of the ball as the Fig. 5. The sequence is the following:

  1. (1)

    Categorizing each pixel to a color cluster according to a preset color lookup table

  2. (2)

    Calculating search points around the previous ball position using a particle filter

  3. (3)

    Evaluating the degree of coincidence by the following method

  4. (4)

    Registering as the ball if the maximum value is over a threshold

Fig. 4.
figure 4

A sample of a game ball in the RoboCup2015

Fig. 5.
figure 5

Sequence of the image processing using the template

As the Fig. 5 shows, the template implies the shape of the ball. The size of the template is changed according to the distance to the ball. The degree of coincidence at each search point is calculated as the following:

  1. (1)

    Picking 100 points up randomly in a rectangle around a search point

    The rectangle corresponds to the template and the size of the rectangle is changed according to the distance of the ball.

  2. (2)

    Calculating the degree of coincidence \( Doc_{k} \) by comparing a template data of each point \( P_{ki} \) in the \( k \)–th rectangle as the following equation:

    $$ \begin{aligned} & X_{k} = \left\{ {P_{ki} | C\left( {P_{ki} } \right)\, {\text{is ball color}}, P_{ki} \,{\text{is inside circle}}} \right\} \\ & Y_{k} = \left\{ {P_{ki} | C\left( {P_{ki} } \right)\, {\text{is ball color}}, P_{ki} \,{\text{is outside circle}}} \right\} \\ & Doc_{k} = \frac{{{\text{n}}\left( {X_{k} } \right) - {\text{n}}\left( {Y_{k} } \right)}}{{{\text{n}}\left( {P_{ki} | P_{ki} \,{\text{is inside circle}}} \right)}} \\ \end{aligned} $$
    (4)

Here, \( C \) is the categorized color that is derived by using the lookup table. If the sampled image is completely the same as the template, the degree of coincidence will be 1.0. Before using this method, we should set the lookup table for categorizing the ball. All colors of the ball are set as a just ball color. By using this method, the robot could detect the ball within a 3 m radius robustly in our experimental soccer field.

Here, for detecting the ball robustly, it is desirable that the lookup table is set as distinguishing the ball’s white and other objects’ white. The rate of this procedure was 5–10 frames per second, it was almost same as the method using the color histogram.

5 Moving Ball Detection

The robot could detect the stationary ball using the method described in the previous section. However, if the ball moved quickly, it would get lost. Specially, it is a serious problem for a goal keeper. The main causes of losing the ball are a blurring of the ball image and a distribution of the search points. The problem of the blurring could be solved easily. It is solved by adjusting the shutter speed. Another problem about the distribution is more complex. If the number of search points and the distribution will be increased, detecting the moving ball will be possible. However, the cost of the calculation will also be increased. Here, a coming ball detection is more important for the goal keeper. Therefore, we modified the distribution of the particles like the Fig. 6. The particles are distributed in accordance with a long vertical ellipse whose center position is slightly shifted to the bottom. By this modification, the robot could detect a moving ball robustly. Consequently, we succeeded in the technical challenge “Goal-Kick from Moving Ball”.

Fig. 6.
figure 6

Modified distribution of particles for detecting a coming ball

6 Modification in the RoboCup2015

As mentioned above, we developed the robust ball detection method. However, in the venue of RoboCup2015, we faced some new problems. The color of the white line was too similar to the ball color. Then, the robot could not detect the ball robustly in the play field in RoboCup2015. To solve this problem, we modified the template as Fig. 7.

Fig. 7.
figure 7

The template for detecting the ball in RoboCup2015

The new template contains the colors of the play field and the robot. The new degree of coincidence \( Doc' \) is calculated as the following equation:

$$ \begin{aligned} & Z_{k} = \left\{ {P_{ki} | C\left( {P_{ki} } \right) \,{\text{is field or robot color}}, P_{ki}\, {\text{is outside circle}}} \right\} \\ & Doc '_{k} = \frac{{{\text{n}}\left( {X_{k} } \right) - {\text{n}}\left( {Y_{k} } \right)}}{{{\text{n}}\left( {P_{ki} | P_{ki}\, {\text{is inside circle}}} \right)}} \frac{{{\text{n}}\left( {Z_{k} } \right)}}{{{\text{n}}\left( {P_{ki} | P_{ki}\, {\text{is outside circle}}} \right)}} \\ \end{aligned} $$
(5)

Using this method with utilizing the play field color and the robot color outside the circle, the robot was able to distinguish the ball robustly. The green color of the field is able to detect more easily than the white color of the ball. That might contribute the robustness to detection. However, when the ball is located on the white line as the Fig. 8, it is slightly hard to detect the ball because the green area is decreased by the white line. Then, the robot sometimes lost the ball on the goal line. Furthermore, the place near the goal line was also the edge of the field, so the green area would be decreased more.

Fig. 8.
figure 8

The cases of losing the ball on the white line (left) and finding the ball (right) (Color figure online)

7 Discussion of a Walking on the Artificial Grass

In 2015, the soccer field of humanoid league was changed from a punch carpet to an artificial grass. Our robot attended the technical challenge “Artificial Grass” in 2014 and acquired the second prize of the challenge. Therefore, the robot has already walked on an artificial grass robustly since 2014. However, because the length of the artificial grass in RoboCup2015 was long (35 mm), the robot could not walk robustly. Some teams used bolts attached to the sole for a stable walking. We also tried to use bolts like other teams. Consequently, the stability of the walking was somewhat improved. However, it became more difficult to kick the ball. When the bolts touch the field during kicking the ball, a strong force is applied to the foot. For solving this problem, we assembled soles of the robot upside down and made the sole longer back and forth. We had already made long soles for the technical challenge “High-Kick Challenge” as shown in the Fig. 9. That helps to find the solution. The bent edges are attached to not step on its feet. Using the edges under the sole, the robot could walk robustly. Consequently, the walking speed on the artificial grass could be increased.

Fig. 9.
figure 9

Modified soles (left) and conventional soles (right)

8 Discussion of the Technical Challenges

In 2015, three new technical challenges were introduced. Our robot succeeded in all challenges. Especially, the technical challenges “High-Kick Challenge” and “Goal-Kick from Moving Ball” were difficult to achieve. We explain about how to achieve the challenges.

8.1 Goal-Kick from Moving Ball

In our system, we write a sequence of a behavior in Python language. By changing the program, the robot can execute various tasks. A sequence of the technical challenge “Goal-Kick from Moving Ball” is following:

  1. (1)

    Rotating the neck in the direction of the ball

  2. (2)

    Play a kick motion if the ball comes in a certain area

By only the above sequence, we achieved the challenge at the first trial. Figure 10 shows the result of the technical challenge.

Fig. 10.
figure 10

Result of Goal-Kick from Moving Ball

8.2 High-Kick Challenge

We also succeeded in the “High-Kick Challenge”. The robot kicked the ball over a wall of 220 mm height as shown in the Fig. 11. The robot is controlled according to the following sequence.

Fig. 11.
figure 11

Result of High-Kick Challenge

  1. (1)

    Behaving as a normal forward player

  2. (2)

    Switching the kick motion if the robot enters inside a certain area in front of the goal

For succeeding in this challenge, the position of the ball from the wall is important. The challenge will not be succeeded when the ball is too near or far from the wall of the goal. For kicking higher, we made the long sole. As already mentioned, it helped to find the robust walking.

9 Conclusion

In this paper, we described the technologies of the humanoid robot Accelite in RoboCup2015. For detecting the ball, we developed image processing methods using the color histogram and the template. Consequently, our robots detected the moving ball robustly. In RoboCup 2015, the field was also changed from a punch carpet to an artificial grass. To walk stably, we assembled soles of the robot upside down and made the sole longer back and forth. We also discussed how we succeeded in the technical challenges.