Archive Index (1999-2012) | 2013-current at | About  

Soccer-playing robot runs real-time embedded Linux

Jan 21, 2005 — by LinuxDevices Staff — from the LinuxDevices Archive — 6 views

Foreword — This article by a PhD student at Shanghai JiaoTong University (SJTU) Research Institute of Robotics describes an RTLinux-powered robot that placed fifth in the most recent RoboCup competition. The robot has two color cameras for visual sensing along with a laser range finder (LRF) for goalkeeper location, and a wireless LAN allows communication among the robots on SJTU's team. The robot's embedded operating system is Red Hat Linux enhanced with the RTLinuxPro real-time extension.

Enjoy . . . !


The Robot World Cup Soccer Games and Conferences (RoboCup) are a series of competitions and events designed to promote the full integration of AI (artificial intelligence) and robotics research. Robotic soccer provides a good test-bed for evaluating various research, including AI, robotics, image processing, engineering, and multi-agent systems.

The SJTU “JiaoLong” team has participated in a number of soccer competitions, and its robots have performed well. Competitions include the 2002 China Retail Conference (CRC) in Shanghai, China; RoboCup 2003 in Padua, Italy; CRC 2003 in BeiJin, China; RoboCup 2004 in Lisbon, Portugal; and CRC 2004 in GuangZhou, China.

Our Robots

Our robots were constructed at SJTU Research Institute of Robotics as part of a project to build real-time, inexpensive, autonomous robots for the study of multi-robot systems operating under dynamic and uncertain environments. The main idea for designing the whole multi-robot system was to view each robot as an autonomous physical entity capable of intelligently interacting with changing, variable surroundings. The robot must also be physically strong, computationally fast, and behaviorally accurate.

The hardware system consists of a robot vehicle system, sensing system, communication system, and control system.

First-generation design

Figure 1 (below) shows SJTU's first-generation soccer robots, developed in 2002.

Figure 1: First-generation SJTU soccer robots, circa 2002
(Click to enlarge)

Second generation design

Figures 2-6 (below) show the second generation, developed in 2003.

Figures 2-6: Second-generation SJTU soccer robots, from 2002
(Click any image to enlarge)

Third-generation design

Figures 7 and 8 (below) show the third-generation soccer robots, which we developed just months ago.

Figures 7 & 8: Current-model SJTU soccer robots
(Click to enlarge)

Robot vehicle system

The basis of each robot is a differentially driven, DC-powered model car measuring 20 x 20 x 31.5 inches (50 x 50 x 80 cm), and weighing 44 pounds (20kg). The robot can be controlled to move forward and backward, and to turn left and right. To play soccer, we designed a grabber and a kicker, which can be used to move and shoot the ball.

Sensing system

The robot uses two color cameras for visual sensing. One has a USB interface, and is used to see the ball when it is near the robot. The other has an IEEE-1394 interface, and is used to see the goal and the ball when they are far from the robot. We use two cameras to enlarge the field of view, because one camera alone has limited sight. Both cameras are fixed to the robot, and identify the ball and goal by color.

In addition, our robot has a LRF (laser range finder) for goalkeeper location, and two encoders for distance measurement based on internal information.

Communication system

We use a wireless LAN device for communication among our robots. Every robot acts as a node in the LAN, and has a wireless card that can transfer data at 11Mbps.

Control system

The control system consists of an upper computer and a lower computer. The upper computer is a laptop with a 2.4GHz Pentium 4 CPU, 256MB of memory, and a 30GB IBM hard disk. It communicates with the lower computer through a 19.2Kbps serial link, and with the LRF through an IEEE-1394 interface. The upper computer uses RT-Linux for real-time sensor data acquisition and real-time communication. The lower computer, which is based on a Texas Instruments TMS320LF2407A DSP, is dedicated to motion control.

Figure 9: Hardware architecture
(Click to enlarge)

Software architecture

The robot's operating system is Red Hat 9.0 plus RTLinuxPro 2.1 (kernel version: 2.4.25-rtl). Figure 10 shows the software architecture. We use a distributed architecture based on priority.

One robot main control module runs in the RTLinux kernel, and four threads run in the Linux kernel. The four Linux threads work independently, and make a distributed architecture. We use rt-fifo to connect the RTLinux kernel and Linux kernel.

Figure 10: Software architecture
(Click to enlarge)

Each thread has a different priority for sharing system resources. The main robot control module has the highest priority, and the vision threads (thread1 and thread2) have a low priority. The LRF thread has a much lower priority, and Odom thread has lowest priority. If one sensor generates an error, the whole system will not fail.

The tasks of thread1 and thread2 are to drive the camera to take pictures, and to extract information from the current picture. Thread3 extracts information from the LRF. Thread4 gets the odometer information. Then, all information is fused and sent to the robot main control module through rt-fifo.

The robot main control module also has four threads. The perception thread deals with data uploaded by the lower computer and other sensor threads. The environment thread uses available data to build an environment module on a blackboard. The network communication thread is able to let all robot teammates share the information, using the RTLinux component LNet. The decision thread gives instructions according to all the data.

About the author — Huang Yi is a PhD student at Shanghai JiaoTong University's (SJTU) Research Institute of Robotics.

This article was originally published on and has been donated to the open source community by QuinStreet Inc. Please visit for up-to-date news and articles about Linux and open source.

Comments are closed.