XD - A Skater Robot for Eurobot 2010

Hi!

For the second year, I am participating to the French qualifications for the amateur robotics competition Eurobot with my team “XD”, and I am very happy to count Pololu as one of our sponsors :slight_smile:

In short: 2 autonomous robots on a 2.1x3m playing field, the one scoring the more points is awarded the victory. Penalties can be given for robots that collides with the adversary or is not fair-play (so no smashing, no trying to incapacitate the other, etc; they have to be civilized :stuck_out_tongue: ).
This year, the competition is entitled “Feed The World” and the robots have to collect red balls (tomatoes), orange balls (oranges) and white cylinders (ears of corn) and to put them in a basket to score points. To add to the difficulty, the oranges are located on “trees” accessible only by climbing a slope, and some of the cylinders are selected to be replaced by black ones, fixed to the table.
You can see the rules in english here.

The typical robot in this competition is a big box of 30x30x35cm, moving with two independently driven wheels and some ball casters.

My goal is to try something unusual by presenting a robot that looks nowhere near a box, and moves by skating. I don’t intend to rank very high, it’s more for the fun.

The two-legged prototype looked like this :
http://www.youtube.com/v/IThFX8XpAek

But this one can move like a car would do, no turning on the spot, or sideways movements… so I had to make a four-legged version. This one can translate in any direction and rotate around any point in the plane (even if some movement are more tedious than others ^^ ):

Have a look at its first movements!
http://www.youtube.com/watch?v=2Vf6lhof93U

This version uses a Pololu Micro Serial Servo Controller, controlled by an Arduino Duemilanove. An xbee is used to program the Arduino remotely and to ask for different movements. Some work is needed to enable smooth transition from a movement to another.
For now, the servos are cheap Chinese Eurgle 16g for the legs, and Eurgle 8g (fast version) for the wheels. I selected the Solarbotics Large Rubber Wheels for their insane amount of grip, and they are mounted to turn freely on their axis. The legs are made from 16x16mm square aluminum tubes, and the wheel support, 25x25mm square alu tube. The body is cut in what seems to be extruded pvc, not sure.

I am currently working on upgrading the servo controller to a solution using two Micro Maestro 6-Channel USB Servo Controller, to have smoother movements and to decrease the time used to send the commands for the 8 servos to the controller.

This is only the beginning of the project. I have to turn this… moving thing into a fully autonomous robot, able to score points and avoid a moving opponent. For that, I am working on adding sensor (IR, sonar range finders, gyro, contact…), a camera, and some more processing power (it will use 2 or 3 Arduinos + a cmucam3). I will detail the solution for interacting with the game elements in another post, when it is ready :slight_smile: .

The home of the project : http://xevel.fr (in French)
More videos: http://www.youtube.com/user/XeveL2
More photos: http://xevel.fr/gallery2/main.php?g2_itemId=972
All code freely available at http://www.assembla.com/spaces/XD_DSbot

1 Like

Hello.

Nice! Did you have to come up with some theory for how to get your robot to move where you wanted it to go? In one shot, I saw it above a line of black electrical tape, does it follow the line?

- Ryan

Very nice robot! I look forward to seeing how it does in the competition.

So you’re considering adding another Arduino and two Micro Maestros? If I were in your place I would consider adding an Orangutan SVP-1284 instead. It has an AVR so it’s not too different from the Arduino, but it has a lot more I/O lines, code space, and other peripherals. The SVP has a demultiplexer with 8 outputs which allows you to control all 8 of your servos with a single hardware PWM and 3 of the AVR’s free IO lines. If you use the OrangutanServos section of our AVR library, then it would be easy to get started. The OrangutanServos library can give you relatively smooth movements because it supports speed limiting, but it does not currently support acceleration limiting like the Maestro does.

-David

To create the command laws for the movements, I did a little kinematic study of the system. From this, could find the relation that links the robot’s geometry and movement to the position and speed of each servo. If you are interested in the details, you can have a look at the code (in the ardunio or in the Python simulator. They are on my SVN repository so both can change anytime…) ^^. Some details are not currently addressed (like having smooth transitions between movements), but it’s on my TODO list :slight_smile:

The line is a vestige from last year’s competition robot development, and I have currently no plan to make this one follow lines (even if it would be quite straightforward).

Thanks for the input. I own a SVP-324 (got it on Black Friday \o/), and I considered using it, but it’s mainly a question of space organization that made me choose this solution. [size=50]This and some features of the Maestro that I plan to use to make this little thing look more “alive” than it currently is…[/size]
From these pictures/videos, you can’t really guess, but I still have to put quite a bit of hardware inside the body besides the controller, so the card dedicated to movement control will be a Mini Pro.For the other one, I will use a Seeduino Mega, which has a form factor not too different from a Duemilanove, but with tons of I/O pins for the sensors and best of all: 4 UARTs. These additional UARTs (the SVP-324 has 2) will be quite important to this project in a near future ^^ .

A little update:

Cool! Can that forklift pick up the balls?

Yes, that’s how it works.
The fork lift grabbs the ball and put it on the small piece of pvc tube, at the center of the robot.
Then, it lowers the two horns to use them as a ramp to let the ball roll. The ramp ca be oriented a few degrees left or right for precise aiming.

As soon as the thing moves, I will post a video of it :slight_smile:

Now with the upper part, with CMUcam3 and sonar range finders.

The camera will be used to locate the interesting game elements (red balls) and try to find a path to avoid obstacles (corn, borders, and eventually the other robot). It is mounted in a pan-tilt configuration which allows for 360° orientation.

The range finders are Maxbotix LV-EZ4, mounted on a rotating platform. A micro servo is used to orient them. Their aim is to know when the opponent is getting close even if he arrives from a direction the camera is not currently pointing at.

Here the photo is taken with the robot fully loaded with two balls (the orange one should be red like the other), ready to throw them into the basket.

On the electronics front, there is still some work to do. The two arduinos are in place, and talk to each other, but most of the connections with sensors and servos are not yet done.

The robot is slowly approaching the point where it will have enough systems working to make a new video :slight_smile:

I added the CMUcam mounted on two servos, and on the top you can see the arduino mini pro with its gyro, compass and accelerometer.
On the right, the Cherry Coke cap is used as an emergency stop button, mounted on a carbon fiber to activate a big interrupter in the white enclosing, shutting down the power supply.

On the bottom part, I added a Micro Maestro to drive the four servos used to manipulate the balls. Between the second and third (the transparent one) boards are located the Seeeduino Mega and the battery (800mAh, Lipo).

The main remaining thing to add (aside from many many lines of code) are the IR detectors on the legs. I have some problems building the part that will support them :confused:

Still a month and a half to go!


A video showing the first tests of game-element handling.

The project is still going on. Movements and transitions are now smoother, and this helps a lot to follow successfuly complex trajectories.

The robot doing a circle in translation only:

Movements viewed from below:

Aloso, I’ve been busy working on the detection. This is the first time it autonomously grabbed a game element, using the camera as the only sensor for locating the ball and detecting when it is in the fork:


And the improved version, where I use rotation movements instead of lateral translations tu adjust the direction:

The 12 Pololu IR distance digital sensors are now mounted on the legs but still not completly wired.

Still 2 weeks before the competition!

1 Like

Those videos are great. How is your robot tracking the tomato that it picks up?

-Ryan

Thanks :slight_smile:

The only sensor used in the video is the camera. It is used to find the ball and go towards it as well as to determine when it is close enough to lift it.
The camera will (hopefully) also be used to find and avoid obstacles (corn, borders, maybe the opponent robot too), find colored beacons marking interesting landmarks like the container, and aim the ramp(the “horns”) to make the tomatoes roll precisely into it.