czech english


4th place in La-Ferté Bernard, France, Eurobot 2004

Eurobot 2004 has passed and for the curious who are interested how a fourth rank can be achieved at such a contest, we have gathered some information about Ester. Right now you can find here articles about the ball manipulation and the control software. We hope that the amount of information will increase gradually (e.g. articles about localization or movement control are in preparation).

Overview — some basic information and photos
Ester is so far the most successful reincarnation of its older sisters ( Barbora, Cecilka and Dana). It is based on the same bogie thus you'll find the same BLDC motors (each with 600W), motherboard with AMD K6 500MHz, 128MB RAM and 128MB CompactFlash, video input, 100Mb Ethernet and of course – Linux. The navigation is based a combination of odometry and color of the floor under the robot mixed together by Monte Carlo Localization. Camera is used to search for the balls.

Ball Manipulation — the quest for reliability and robustness
Ester's job is to collect small rugby balls at a 2x3m field. Last year's experience lead to the decision that reliability must be the main and most important property of any future manipulator. Dana's hand was nice and smart, but too delicate and Barbora's scroll feeder worked only sometimes and only with some balls. According to our observations the most reliable design for ball manipulation at Euroboot 2002 was the use of cylinders. Therefore cylinders are also the basis of our design.

Control Software — how to program a robot and not to go mad while doing so
Last year's experiences lead to the decision to completely rebuild the software for Ester to allow easier modifications and tests of different strategies. The robot's control considerably depends on the detection of its position and its surroundings (e.g. I am in front of the goal and I have the ball) and the application of the appropriate solution (shoot). The classic tool for programming that kind of application is FSM (finite state machine), but the usual implementations seem hard to maintain and in general are somewhat clumsy. Can't we do better?