1 Introduction

RoboCup Humanoid league has a vision to promote the champion of the league to compete against the winner of FIFA world cup. To facilitate this vision, the rules are getting closer to the rules implemented on FIFA World Cup. These facts motivated many researchers to develop humanoid robots in many aspects, such as mechanical design, robot’s perception especially in complex environments, robot’s behaviors in soccer game, and so forth. Many challenging fields have attracted the researchers to examine their robots in Humanoid league competitions both on National and International levels.

Team Ichiro specifically develops research in the field of Humanoid Robotics. Members of the team Ichiro were students in undergraduate and diploma programs from the Institut Teknologi Sepuluh Nopember Surabaya, Indonesia. We have participated in various competitions of Humanoid robots at the National level starting in 2013. We began participating in the International level in 2016. That year we received 10 awards with two world records at FIRA RoboWoldCup 2016 in Beijing, China. In 2017, we participated in the RoboCup Humanoid League competition in the KidSize category held in Nagoya Japan. Our participation in the competition opened many insights for us about the development of humanoid robots. In 2018, we had problems with limited funds to finance our team’s trip to Canada, therefore, we took part in the RoboCup Humanoid League competition in the TeenSize category (see Fig. 1) which can be done by only two robots with a small number of teams. The amazing results had been achieved from the RoboCup competition in Canada, we won several awards: First place in the TeenSize category, Runner-up at the TeenSize Technical Challenge, Runner-up at the Drop-in Games, finally, we won the third place in Best Humanoid Robot Soccer.

Fig. 1.
figure 1

Left: ichiro robot TeenSize. Right: robot team member at Robocup 2018.

2 Mechanical Hardware Overview

Ichiro TeenSize robots was assembled based on a modification from Nimbro-OP [1] (Fig. 2). This robot uses one Logitech camera C922 and two LiPo 4S batteries. There are 20° of freedom using Dynamixel Servo. Twelve Dynamixel MX 106 for the robot’s legs, six Dynamixel MX 64 for the robot’s arms and two Dynamixel MX 28 for the head. Ichiro Teen Size robot has 85 cm of height. This robot is made by cutting and bending with 3 mm thick type 5 Aluminum material.

Fig. 2.
figure 2

Left: CAD design. Center and right: Ichiro TeenSize.

We made modifications from the Nimbro-OP by reducing its size from 95 cm to 85 cm. With this size, we get many benefits because we can use our robot in many competitions, i.e.: the KidSize category at the national level robot soccer competition (45 cm–90 cm), the AdultSize category at the FIRA International RobotSport robot competition (80 cm–180 cm), as well as the TeenSize category in the Robocup competition (80 cm–140 cm).

Ichiro Robot TeenSize uses an Intel NUC mini PC as its main controller. For the visual sensor, we use a standard Logitech C922 camera that plugged on the USB port on Intel NUC.

Since 2017 we have not used a compass because of the regulations that have been applied. For the orientation sensor, we used MPU-6050 where this sensor was quite accurate with a 16-bit analog to digital converse internal hardware facilities for each channel. This sensor combines the 3-axis gyroscope and 3-axis accelerometer on the same chip. To be able to interact with MPU-6050, a microcontroller such as Arduino is needed as an interface for i2c-bus. In our robot, we used Arduino nano to access the orientation sensor.

3 Visual Perception

3.1 Landmark Detection

For the purposes of localization, we did field extraction for the goalposts and the edge of the field. We got the edge of the field by applying the convex hull to the green area which was the area of artificial grass on the field. The goalposts were detected since the goalposts were at the edge of the field. The goalposts feature was detected by using a Hough line detector in HSV color space. Then we separate the Hough line into the left goalpost and the right goalpost. This method has been discussed in [2] and [3]. Although this method is simple, we get an advantage of fast computing and a good result when the robot is in the middle of the field.

We have difficulties in extracting the line features of the field because the camera on the robot produced only moderate-quality video, video frames were often blurry when the robot moves, so that the lines were often missing and incomplete. Therefore, we did not use lines to estimate the position of robots in the field. The robot estimated its position in the field based on the robot’s initial position at the start of the match (looking at the ball when the status of game controller in ‘SET’). Afterwards, we employ dead reckoning to estimate position of the robot relative to the starting position.

3.2 Ball Detection

In RoboCup 2018, we made a more independent light detection method, high accuracy, low computation and do not require a lot of tuning. For ball detection, we used a Local Binary Pattern (LBP), which was a texture descriptor popularized by Ojala et al. [4]. Unlike the Haralick texture feature that calculates global texture representations based on the gray level co-occurrence matrix, LBP calculates local texture representations. This local representation was built by comparing each pixel with the surrounding pixels.

For the classification process, we use the cascade classifier [5, 6]. Cascading classifiers were trained with 16 × 16 pixels of 2832 positive images and 1452 negative images. This method was very suitable to run on a low-power CPU because it has a fast processing speed.

In comparison, as well as backup-plan in detecting the ball, we also use Histogram Oriented Gradient (HOG) features that are popularized by Dalal on [7]. We use the HOG feature extraction as a linear Support Vector Machine (SVM) input to discriminate ball object from non-balls. We prepared these two ball detection methods on our robot, during setup day, we conducted ball detection testing using both methods to choose the most accurate one, then we used it during competition day. Based on our testing at setup day, the accuracy of the LBP feature and HOG feature reaches 94% and 79% respectively. Finally, we used the LBP feature during the competition day.

To reduce noise outside the field, we first segmented the color of the field. From the contour detected, the contour that had the largest area was selected and then Convex Hull was performed. After that, we classify it using the LBP or HOG feature on the object inside convex.

3.3 Localization on the Field

There were no more unique features in the field that could be used to discriminate our own area and opponent’s area. Magnetometer sensor was also prohibited to be used. This prohibition made it difficult for us to know the orientation of the robot. To overcome this problem, our robots could know their initial position inside the field by estimating their position based on several possible positions that we have defined before.

Figure 3 shows some possible initial position of the robot when entering the field, this method has also been carried out by the Nimbro team [8]. According to the fact that robots always entering their own area when the game starts, our robot will calculate the distance between the robot and the goalposts using the trilateration method as discussed in [3]. Our robot will choose several initial positions that has been defined (Fig. 3) based on the estimated distance of the robot to the goalposts.

Fig. 3.
figure 3

Predefined initial positions of the robot

After the robots know their initial position inside the field, the robot estimates its position based using dead reckoning. The further position was obtained from the estimation of the robot step, the estimation of the robot speed based on anterior step parameters, and the directions of the robot. The method for estimating robot position will be discussed in Sect. 4.2.

Error in estimating robot position often occurs when the robot plays for a long time (about 2 min). However, we can solve this problem by re-estimating the initial position when the game state was “SET”, which was usually happen when scoring a goal or a drop ball occurs. Re-estimating the initial position was also done when the robot coming to the field after they had been picked-up or serviced.

4 Robot Behavior and Strategy

4.1 Robot Monitoring System

Robot behaviors and strategies were determined in many states. The transfer of the robots current state to the next state was determined by various information, such as the number of teammates on the field, game status from the game controller, and the individual teammates robot’s state. Because we have difficulty to monitor many robot states based on information received, we created a system to monitor the robot state. Graphical User Interface (GUI) of Ichiro’s robot monitoring system shown in Fig. 4. We also make a “dummy” robot to send fake information when debugging robot behavior. GUI of “dummy” robot shown on the right side of Fig. 4.

Fig. 4.
figure 4

Software for monitoring

4.2 Walking Engine and Localization Method

We implemented the sinusoidal trajectory to our robot’s walking engine. This movement did not use dynamic modeling of the robot so that this walking engine was open-loop and did not use ZMP criterion as described in [9]. Based on the given points of trajectory, all the joints were computed by the inverse kinematics of the legs of the robot. Due to the imperfection of actual dynamics of the robot, we had to tune some parameters in walking engine manually with trial and error. We also implemented the Proportional-Derivative controller (PD) control strategy on both arms and hips of the robot to maintain its pitch at the desired angle to prevent the robot from falling.

We use data from the gyroscope and accelerometer as PD Controller inputs to control the knee, ankle pitch, hip roll, ankle roll on the robot. Validation was done by observing it, then providing a disturbance of stability when the robot was walking. If we felt the robot was less stable, and then we did manual tuning until we got a good stability.

Sensors data and localization module information were needed to design more complex robot behavior. First, we need to use motion capture camera to capture robot’s displacement based on given gait command for implementing local localization of the robot. We use Optitrack® TrioFootnote 1. The data was collected by putting the markers on both feet, then we track those markers using the motion capture system. The generated data by motion capture was processed using machine learning with robot’s forward kinematic to get actual each displacement of leg while the robot was walking. Based on these motion capture data, we could predict the robot step model based on the gait parameters. This method has been discussed in more detail in [10] and [11]. The robot step model that we have obtained, we tested to estimate the position of the robot. Figure 5 shows the results of testing the position of the robot by using motion capture data as ground truth.

Fig. 5.
figure 5

(a) Robot equipped with optical motion capture marker to produce robot’s step model data. (b) Comparison of robot position estimation data with motion capture data as ground truth

Based on the predictions of the current step model that we have obtained, by fusing this data and orientation data from robot’s sensor, robot could estimate a quite accurate location which was used as information of localization module. This method, however, needs the initial position (discussed in Sect. 3.3) of the robot on the field which was obtained by observing both locations of goal posts at the beginning of the game or whether the robot starts to enter the field.

4.3 Teamwork Strategies

The finite state machine was used to design the robot behavior based on current game state, teammates states or location and orientation information from localization module. The communication between the robots was implemented using User Datagram Protocol (UDP) communication which contains information of robot’s states. Then in general, the robots were considered as two roles as defender and striker robots. The defender role was chosen by the robot when the striker was active on the field. To reduce power consumption and prevent the absence of players in own field, the defender will stay on his determined position and approaches the ball when the ball was around it. The robot defender was able to give the information of the location of the visible ball to striker robot whenever striker robot could not see the ball and vice versa. To improve the effectiveness of ball detection on the field, the striker robot would look for the ball on the given point coordinates.

At the RoboCup 2018, we did not have any strategy for obstacle avoidance. We tried applying obstacle avoidance by applying non-green color segmentation in the field. However, we failed to apply this method because of the large amount of noise.

4.4 Kicking Strategy

One of the weaknesses of our robot was its movement that was slow in walking, approaching the ball, and positioning to the ball. To cover up this weakness, our robot has a long kick (5 m) that can roll the ball from the middle of the field to the opponent’s goal. Our robot can also perform short kick, the combination of the two types of kicks was effective in scoring goals. Figure 6 shows the robot’s ability to kick the ball. The long kick would be chosen when the robot sure they could make a score from a single kick. If the robot was far from the opponent’s goal, the robot will not be able to make a score from a single kick, therefore, the robot will choose the short kick and then regained control the ball.

Fig. 6.
figure 6

The distance of the ball rolls when kicked by a robot.

When the robot was kicking the ball, the robot will give information about his position, kick direction, and types of the kick to the teammate’s robots. Based on that information, the teammates would go to the estimation of the area where the ball will stop.

5 Performance in Soccer Tournament

At the RoboCup 2018, there were six teams participated in the TeenSize Humanoid League. In Round Robin, Ichiro had five games against AMN United, NUbots, EDROM, MRL-HSL, and WF Wolves & Hamburg Bit-Bots. On the first day of the set-up day, one of our robots had a problem. The PC was broken due to the short circuit of the power board. Therefore, in round robin we only had one robot. At the first day of round robin, we had three matches against AMN United with a score of 2:0, against NUbots with a score of 3:0, and against WF Wolves & Hamburg Bit-Bots with a score of 1:0 and we won all the match. We used long-kick strategy because we only had one robot. When our robot took control of the ball, our robot would just kick the ball to the opponent’s goal according to the robot position. On the second day of the round robin, we won the match against EDROM with a score of 5:0 but we lost a match against MRL-HSL from Iran. They had fast-moving robots; hence we had a difficulty to take control of the ball, and the match ended with score 1:3.

At semi-final round, we successfully repair our second robot and we qualified to the final round after having a good match against WF Wolves & Hamburg Bit-Bots from Germany with a score of 2:0.

At the beginning of the competition, we faced several problems but at the semi-final and final round, our robot could run perfectly. With a good localization, our robot could easily kick the ball to the opponent’s goal. At the final round, we had a match against MRL-HSL from Iran for the second time. Finally, we won this match with score 3:0.

5.1 Technical Challenges

In Robocup 2018, team Ichiro also participated in the technical challenges. We want to examine the ability of our robot to complete the specific tasks given in the technical challenges. There were four kind of challenges: push recovery, dynamic kick (goal kick from the moving ball), high jump, and high kick. In this year we perform three of the technical challenges.

Push Recovery:

In this kind of challenge, the objective was to withstand a strong push. An impact was applied to the robot on the level of the Centre of Mass (CoM) by a pendulum. To apply the push, a two kilograms weight of bottle will swing against the robot’s body. The pendulum was released from an angle which was the ground projection distance for the pendulum, and the robot must be walking in place during the attempt. The attempt will be a success if the robot returns to a stable standing or walking posture after a push applied. During the attempt, we use the gait as the regular games. Our robot can stand from the push until the distance of 45 cm.

Dynamic Kick:

The objective of the challenge was to kick a moving ball into the goal. The ball was placed randomly on one of the corners of the field. The pass of the ball was performed by one of our team members to the robot. The robot must kick the ball into the goal before the ball stopped. And here how we faced these challenges:

  1. 1.

    Before the ball passed from the corner, the robot performing pre-kick motion. The robot stands with a single support leg and the other leg folded into the position in order to be ready for kicking the ball.

  2. 2.

    The camera tracking the ball and estimate the time of the ball arrived in the area where the ball can be kicked by the folded leg.

  3. 3.

    Perform the kicking motion when the ball was in the area of the folded leg.

On this challenge, we failed to score. We ran out of time doing a trial on this challenge. When we did a trial, the robot often lost the ball, sometimes the robot could see the ball, but it was late in responding to the ball and too late to kick the ball towards the goal.

High Kick:

The objective of high kick challenge was to kick the ball into the goal at maximum height. At each attempt, the team must decide how many wooden blocks (related to how tall the obstacle) tries to achieve by the robot. The ball placed on the penalty mark, and the robot placed freely but at least 30 cm away from the ball. Thanks to the ability of our robot to do a powerful kick. At the first attempt, we try 10 cm as the minimum height, and the robot did it very well. At the second attempt, we try 30 cm as the minimum height, the robot also did it well. At the third attempt, we try 45 cm as the minimum height, and the robot successfully finishes the challenge. In this challenge, we reach the highest kick than the other team.

6 Conclusions

At Robocup 2018, for the first time Ichiro Robot Team participated in the TeenSize category. Even though we have won first place in the TeenSize category, however, there are many things that we need to improve performance of our robots. We prepare robots in a very short time, so we use several simple algorithms, but we get the advantage of fast computing process and easy debugging. Our mechanical design was also still simple to imitate the design of other robots. As a result, the movement of our robot was slow and less responsive. In the coming year, we will improve the speed of the robot in control and kicking the ball so that our robots have better capabilities. We will change our vision system by using a camera that can produce better images. We will also improve the mechanical system by using stronger parts and more precise metal cutting.