Rules 2019:  » ATOM FACTORY »

50 years ago Dmitri Mendeleev revolutionized our understanding of the matter, by taking a giant leap forward
to sciences once he published his work on the classification of elements.
With his famous Periodic Table he pointed out the composition of atoms and introduced the concept of « void ».
Few new atoms were discovered since he first published his work, guaranteeing Mendeleev’s precision!
Besides the known elements Mendeleev has predicted a century ago, we still have atoms that are unkown.
Discovering new atoms can be a difficult task and often requires complex experiments.
Today, we need the help of your robots to do these experiments!
Your missions will be:
Classifying atoms.
As in the Periodic Table you’ll have to select and classify atoms.
Weighing atoms.
Often the rarest atoms are the ones that weigh most, so be careful what you choose.
Creating a new element.
And for that nothing beats a good Particle Accelerator.
Do your own experiments.
You’re free to propose your own experiment!
Predicting unknown elements.
Since Dmitri Mendeleev predicted the existence of unkown elements,
you can also make a prediction… of your own score for example!


The main robot mainly dealt with atom reservoirs with 3 3-axis arms on lifts in position. he climbed the slope to deposit 2 bluenium and 1 greenium. At last he was going to deposit the atoms in the ascelerator.


At the rear of the robot a system of looting of the accelerator adversse was planned but was not used during the competition

The secondary robot had 2 arms with 2 suckers at each end (see variant microb 2009) and at the back another arm to take the Goldenium and a bluenium it deposited in the balance.


Electronic/Embedded software

This year, our robots were equipped with these boards :

  • Robot 1 :
    • (x1) NanoPI M2A
    • (x2) PLVL board
    • (x1) Motor board
    • (x1) power board 12V for LEDs
    • (x1) power board 5V for the NanoPI M2A


  • Robot 2 :
    • (x1) NanoPI M2A
    • (x2) PLVL board
    • (x1) power board 12V for LEDs
    • (x1) power board 5V for the NanoPI M2A
    • (x1) Logitech c270


NanoPI M2A

This board from FriendlyARM is based on a S5P4418 with 1GB of RAM.

You can find all information of it here.

FriendlyARM provides several Linux images to use it quickly, but you can also make your own distribution with Yocto.

We uses this board for the strategy and high level avoidance management. LCD connected to this board was used to display score for each robots.

Nano M2A board uses I2C Bus to communicate with other boards.

NanoPI M2A board from FriendlyARM

Now, first :p


PLVL board

Based on a uC Dspic33E from Microchip, one of this PLVL board is dedicated for the moving management (called every 5ms) and for the low level objects avoidance (6 US and 4 IR).

Second PLVL board is used to control servo-motor, motors (two elevators for the robot 1), sensors, encoders, etc.

PLVL board uses I2C Bus to communicate with other boards.

plvl board v2


Motor board

This board manages up to 8 motors, because we use lot of motors in our robots 😀

Two elevators and vacuums were connected to this board.

Motor board uses I2C Bus to communicate with other boards.

motor board


Camera Logitech c270

Second year that we use a camera. This year, it was to detect color of atoms. We used OpenCV, HSV format, shape and color detection. We added a big led because on real table there is lot of light, it’s a fight between our led and lights of the area to control the camera exposition.

camera point of view (3 examples of acquisition)


The experience was triggered with a signal from the main robot via the wifi network. The invaders climbed with a motor gripping a belt with a pulley.



It’s an home made solution to help us to develop (and debug^^) our robots. It’s a server/client solution, with shell to control I/O, moving manager, motors, etc… of plvl and motor boards, from Mac or PC.

Note : there is no link with the Nucleus OS.

Next software are based on this solution.

Nucleus Server

It’s the kernel of Nucleus, which forward informations to the good client.

There is a status window, and a shell windows.

Interface of Nucleus Server



To set easily parameters of the moving manager, we have a GUI which can read current parameters of boards and write new parameters. We don’t need to reflash uC between each tests.

Main window of AversiveConfigurator

Some graphical data (live)



Our robots are able to choose strategy dynamically, according several parameters : priority, time of the match, score, tasks dependency, etc…

Of course, a GUI to validate it!

interface to validate this system



For LIDARs (compatible with TIM from Sick and RPLIDAR from… RPLIDAR), we have an application to check calculation of objects position.

LidarGUI interface