Alexander Sokolovskiy (MS1), Sёma Lykhin (MS1), Batyrzhan Alikhanov (MS1), Nikita Gorbadey (MS1), Juan Heredia (MS1), Edgar Kaziakhmedov (MS1), Anton Egorov (MS1), Egor Pristanskiy (BS1), Alexey Kashapov (MS1), Nikolay Zherdev (MS1)
Sergei Vostrikov (MS2), Taras Melnik (MS2), Andrew Chemikhin (MS2), Evgeny Safronov (MS2)
Mikhail Kurenkov (MS2)
150 years ago Dmitri Mendeleev revolutionised 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 unknown. 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!
Team’s mission is to obtain as much points as possible. This can be done by collecting pucks and moving them to particular zones according to their color and weight: the heavier the puck, the more points it brings.
Particularly, there are three zones from which pucks can be collected:
“Starting Areas” – rectangles of different colours
“Chaos Zone” – near the center of the field
“Atom Distributors” – linear supports in which atoms are placed on the edge
And there are three zones where pucks can be dispatched:
“Weighing Scale” – robot should unload here pucks, and only six most leight are counted
“Particle accelerator” – here robot can unload up to 9 pucks and here the most precious puck can be obtained – the Goldenium.
“Periodic table” – which is exactly the starting zone and were robots also can unload pucks for a reasonable reward
Also teams can perform “an experiment” and predict their score, both actions are rewarded with bonus points.
For solving this year’s competition tasks we developed two omnidirectional mobile robots and implemented following modules for autonomous behaviour.
High-level part description
robots localize themself using particles filter and measurements from LIDAR and odometry;
to make robots move and rotate simultaneously and precisely we developed path-following algorithm consisting of linear movements and movements by arc;
in order to find pucks on the field, we first applied geometric transformations to correct perspective distortion from camera and to obtain ortho-projection of the field, and then we utilized various computer vision algorithms to retrieve pucks coordinates;
robot’s behaviour logic is constructed and maintained using Behaviour Tree model (work in progress);
Low-level part description
We implemented a brand-new firmware for low-level platform based on stm32f4 microcontroller and supplementary module on stm32f0 for fast I/O processing. A bunch of new features makes the platform resilient and scalable for future development:
all firmware runs within FreeRTOS operating system which makes future updates easier and structures all logic in a more comprehensive way;
all major modules are grouped and implemented within a dedicated thread and spend most of time in a sleep mode, waking up once triggered by the upper-level system or any other submodules (pure event-driven architecture);
apart from using operating system the program is organized in such a way that avoids deduplication of source code through the extensive use of code-generating macroses;
all communication is carried over UART interfaces which along with event-driven architecture makes data transferring is extremely efficient and effective;
the errors from all modules are collected by one module running on stm32f4 platform which keeps track of all possible faults and notifies upper-level once ones occur. Moreover it is able to reset automatically faulty submodule and leave everything just as if nothing had happened;