border shadow

Swiss SmartROB Championship (1999)

The SmartROB Championship was a students project at the Institute of Robotics of the Swiss Federal Institute of Technology, Zurich, Switzerland. The project took place between April and July 1999.

Team members: Peter Luethi, Christoph Schaer, Gabriel Dondi, Michael Wuethrich and Thomas Moser (that's me)

Assistance / Organization: Dr. S. Vestli, P. Bühler

Competition Day of our Robot Contest.

Overview

Our workbench, where we spent nights and weekends. The friendly monkey holding the "Team Interclick" sign was our mascot "Tonky".

Every year the Swiss Federal Institute of Technology holds an autonomous robot contest, called SmartROB Contest. A dozen teams of about five students each are given a kit to build a robot to accomplish a special task autonomously. In a tournament-like contest the best robot is elected. In our year, the task was to collect envelopes in a labyrinth and take them back to the staring point and dump them into a container. For each letter picked up the team scored one point and for each letter dumped into the letter box the team was given another two points. The robot had four minutes to complete its task, after that, it was stopped. Total 8 teams, 1 from the EPFL in Lausanne and 7 from the ETH Zurich, participated in the contest. This page describes the work done and the day of the contest.

Prerequisites

The rugged aluminum frame of the robot houses the electronics, motion mechanics and batteries. The electronic rack contains a 300 MHz PowerPC and an IO board (digital IO, analog IO, PWM etc ...). The operating system is XOberon, an Oberon derivate with real time capabilites. On the software side, fundamental functions like drivers and even a speed controller already exist.

The exact layout of the labyrinth was known but not the positions of the letters. The labyrinth is a square of eight meters. It is symmetrical so that the two robot starting form opposite corners at the same time have the same environment. The letters are blue and contain a thin sheet of iron. They rest upon a small box about 10 centimeters above the ground. These boxes are located a walls exclusively.

After getting comfortable with the robot kit we had to decide on how to extend it for the job and what strategy to implement. Here follows a short description of the final solution.

Implementation: Navigation

Probably the toughest problem to solve was the navigation. The odometry (simple dead reckoning by counting the wheel revolutions) was quite accurate, but by far not good enough for the four minutes journey. In order to pic up a letter we needed to position the robot within about one centimeter off the wall. We chose to use the odometry as primary navigation. To compensate the the inevitably growing position errors we implemented a error compensator. It measured distances to known objects (walls) on the side and to the front and compared it to the theoretical distance according to the map. It then calculated the error and gradually adjusted the estimated (absolute) odometry position so the error tended towards zero; quite a universal solution. This worked out quite well, even though it turned out to be a little bit too elaborate for the cause. The winning robot used a much simpler system. Their solution was better, but ours was more beautiful ;-).

Implementation: Mechanics

There were three main problems to be solved with regard to mechanical construction: grabbing the letters, move it to a container and empty the container into the letter box at the end of the game. We built an arm with a magnet to pick up the letter and move it above the bucket in front of the robot to be dropped there. This arm was powered by a strong RC servo, like used in remote controlled ships and cars and had one degree of freedom. Because the axis of rotation was inclined backwards, when rotated it moved upwards and forwards, easy but effective. The magnet was self made and strong! It could "suck up" a letter about two centimeters! We originally wanted to leave it on all the time, but it got too hot, so we just turned it on, when we detected a letter.

The bucket itself could be tilted forward to unload the letters into the final letter box.

Our robot on our workbench with the main cover lifted to show the batteries (two black cuboids). On the left side you can see the arm with the inductive sensor. On the side of the cover there is the forward looking triangulation sensor. The assembly in the back houses the CPU and IO rack. On top of that the longish black thing is a character LC-display for debugging. In front of the robot the aluminum shovel like thing is the letter bucket. By the way, "forward" is to the lower right. ;-)

Sensors

For navigation the precise distance to the walls of the labyrinth needed to be measured. We used three optical triangulation sensors with a range of roughly 40 centimeters. One of them was pointing forward to "see" walls ahead. The other two were pointing to the right. This way the measurements could be compared (sanity checked). This was important, because bad measurements would have increased the position error instead of lessened it. Since the walls were aligned rectangularly, the sensor reading generally was good.

To detect letters we used an inductive sensor sponsored by Baumer electric. It was attached to the arm, in a save distance to the magnet. Of course, readings of this sensor were meaningless when the magnet was turned on.

 

Strategy

The robot was put into a predefined position. From there it started to move along the wall, the wall always to the right. (In contrast to most other robots, it could also traverse rooms diagonally or what ever, but then we had to rely on odometry only, without position corrections.) The arm was extended to the right towards the wall to position the inductive sensor to find the letters. When a letter was detected, the arm was lowered some more and the magnet was turned on to "suck up" the letter. Then the arm swung forward and upward to position its load above the bucket. Then a short pulse of negative current was applied to release the letter to fall into the bucket. The arm was lowered again to wait for the next letter. During the whole process, the robot kept on moving. When finished or when the four minutes were almost over, the robot drove back to the origin directly, did a last measurement with two walls for a final position update. Then it aligned itself with the letter box and unloaded the letters. It needed to shake the bucket to make sure all letter really dropped into the box.

Competition Day

At competition day we saw the full labyrinth for the first time. In the tournament, every robot did one run of four minutes alone. According to the points achieved, a nock-out schedule was established. Two robots started at the same time in opposite corners, the one with more points after four minutes entered the next round.

Part of the labyrinth from above. The room with the blue box was the starting point and the box itself the letter box. One robot tries to unload its letters in right this moment, while the other one is moving around in a room next to it. There was quite some crowd, as you can see!

One way to win is to try to snatch away the letters of the competition. So instead of just going counter clock wise around in the labyrinth, one could go to the in the opposite direction first. But if the competition is doing the same? Then do two rooms in the opposite direction of course ;-) Because we have seen the competitors strategies here for the first time, quite some last minute changes were necessary to optimize.

Hecticness at the border of the playground. Matlab hacker Dondi optimizes the robots path. Behind, in the red shirt, I am discussing with Peter Lüthi. Every team had a setup like that. It was great fun!

The robot performed quite well. The biggest problem was a navigation issue. Since we didn't simply follow the walls, our robot depended on a accurate map, respectively an accurate labyrinth with less than a couple of centimeters tolerance. Since it wasn't set up very precisely and people were bumping into it constantly our robot lost track twice and bumped into the wall. We were fortunate to have a very accurate map, but nobody of us thought about an accurate labyrinth! It is hard to model the reality according to the theory. ;-)

Our robot just picked up a letter and is about to let it fall into the bucket. Inside of the bucket there are some letters already. In the back and in from the two triangulation sensors (small black boxes with yellow labels) are visible pointing to the right. In order to diffuse reflections from the electronics housing we glued on some sandpaper (brown).

At the end we made it into the semi finals. There we lost against the "Chain Saw Massacre", a robot with a pick up mechanism for the letters that looked like a chain saw. It had a lot of magnets attached to a chain that was rotating constantly. Looked a bit scruffily, but worked!

The winning robot. The concept was different from ours. It simply followed the walls with the big blue laser range sensor on top (expensive piece they managed to borrow from a sensor manufacturer). It went "left, left, right, left, right ... etc". With a color sensor they detected the letters, stopped, grabbed them with the little arm and put them on the conveyer band. At the end they just turned on the conveyer band and catapulted the letters forward into the letter box. The robot navigated quite confident and was very quick, nice job!

acknowledgment

  • S. Vestli, R. Hueppi, Roberto, B. Peyer, P. Bühler and R. Siegwart for technical support and organization.
  • Baumer Electric, Frauenfeld, Switzerland for providing the inductive sensor.
  • Ray Weber for providing the pictures.