Загрузка страницы

mirrcub3r | The new (formerly) fastest (~1.5 seconds average) Lego Rubik's Cube solving robot!

As of February 2020, the world's fastest Lego cube solver is my very own SquidCuber (https://youtu.be/wLzn1w8vgM4) with an average of 1 second flat!

In the mean time, I have upgraded mirrcub3r to make it even faster: https://youtu.be/a-wJPG1wNIo

For those interested, the full source-code is available here:
https://github.com/efrantar/mirrcub3r (robot)
https://github.com/efrantar/rob-twophase (solving algorithm)

Many years ago David Gilday's amazing Lego robots inspired me to start learning how to program computers. Over the past 6 years I have worked on several different cube-solvers, some of them decently successful, but most rather big (yet very educational) failures. Now, after many 100 hours of work starting this March, I am finally proud to present an extremely fast solver of my own! :D

Assuming that you count robots which use slightly modified cubes (official Guinness World Records seem to do), this is currently the fastest Lego-based Rubik's Cube solver in the world beating Reinhard Grafl's incredible (already more than 4 years old) CubeTwister by around 0.7 seconds (or ~30%) on average.

At its core, the design is quite similar to the prior record, however it features several significant but very challenging to implement improvements. First and most obviously, it uses 4 small mirrors precisely positioned in such a way that a single smartphone camera can see all 6 sides of the Rubik's Cube at once thus making it possible to scan the starting position within ~5 milliseconds. The mirrors unfortunately make the color matching very difficult due to varying angles and lighting conditions for different parts of the cube. This required the development of a fairly complex and highly tuned (also featuring some rather ad-hoc tricks) color recognition algorithm. The second main improvement comes from the solving algorithm. Not only does this project run an extremely efficient custom implementation of the full two-phase algorithm featuring essentially all state of the art tricks (many of them learned from Tomas Rokicki's cube20src) for making it as fast as possible, but it also has the capabilities of the robot deeply built in. In other words, Herbert Kociemba's standard two-phase algorithm has been adapted in such a way that it directly looks for solutions that are particularly fast to execute for this robot (but not necessarily the shortest in the total number of moves), like for instance ones that feature only few 180 degree turns (those typically take about twice as long as 90 degree ones) and contain many consecutive moves on opposite faces which can be executed in parallel (this should be particularly noticeable in the video). Furthermore, this solver fully utilizes all 6 cores / 12 threads of a Ryzen 3600 processor. Finally, the super fast turning speed is achieved by somewhat overlapping consecutive moves, i.e. starting the next rotation already slightly before the previous one has fully completed. This makes the turning not only faster but actually also improves the accuracy considerably as the next move helps with braking the prior one. For more robustness these optimizations are based on angle measurements rather than only timings. In general, the code also distinguishes between various corner-cutting scenarios all with distinct tuning values, this is however mostly turned off at the moment, but it will certainly return in a future version ;). Another interesting fact about the robot control is that it is implemented using EV3 Direct Comands via Christoph Gaukel's python-ev3 library, i.e. by sending it bit-commands over USB (normally these are the result of compiling a program with the Lego software). This makes it possible to use the official Lego Motors drivers (which are excellent) and additionally minimizes any extra latency imposed by any custom VMs (like ev3dev's Linux). At the same time it is also an easy way to communicate between EV3 and PC (which is unfortunately not very well supported by many frameworks ...).

While this robot is probably already very close to the Lego limit, it is not quite there yet and I will certainly be aiming for even lower times in the future!

Видео mirrcub3r | The new (formerly) fastest (~1.5 seconds average) Lego Rubik's Cube solving robot! канала Elias Frantar
Показать
Комментарии отсутствуют
Введите заголовок:

Введите адрес ссылки:

Введите адрес видео с YouTube:

Зарегистрируйтесь или войдите с
Информация о видео
6 октября 2019 г. 22:09:07
00:01:43
Яндекс.Метрика