Pull to refresh

Comments 72

Интересно насколько материалы кубика ограничивают скорость. По идее, если бы он был сделан из более прочных материалов, то смог бы выдерживать большие ускорения. Ставим кубик из авиационного титана, моторы на несколько киловатт, установку саму запираем в вакуумную камеру и бьем новые рекорды.

Еще есть мысль, чтобы на каждую ось было два отдельных мотора с маховиками, которые постоянно крутятся с очень высокой скоростью в противоположные стороны. Когда нужно поворачивать кубик, то просто срабатывают муфты — некий аналог сцепления из авто. Для более равномерного распределения ускорения можно, помимо поворота кубика двигателями, ускорять другие его части с помощью струй сжатого воздуха (или может даже реактивных), которые появляются/исчезают за счет открытия/закрытия множества клапанов по периметру камеры. Можно также рассмотреть вариант использования одиночных звуковых импульсов большой амплитуды. Если будут проблемы с перегревом, то можно поставить по сторонам тепловизоры и в нужные моменты пшикать на кубик жидким азотом.

Накопить механическую энергию и как-то выпустить идея хорошая, например, https://youtu.be/daaDuC1kbds

Я тоже думал над разными вариантами альтернативных систем. Кроме маховика можно попробовать использовать пружины (как в часовых механизмах), можно попробовать использовать пневматику (там можно нагнать давления сколько не жалко, или даже взрывом быстро создать). Передавать вращение через трение (ака сцепление) не кажется самым реализуемым способом, но он тоже в рассмотрении.

По поводу самого кубика - пока что запас есть, можно ускоряться/замедляться быстрее. Но долго так кубик не проживет, я хочу действительно сделать свой из металла, но пока это нужно больше для износостойкости, чем для скорости.

Чтобы отдельные детали ускорялись вместе с центральной можно в кастомный кубик встроить соленоиды/электромагниты, это звучит более реализуемо чем внешнее воздействие на них.

Прямо сейчас, если один из моторов просто запустить вращаться секунд на 5-10, кубик внутри расплавляется и спекается сам с собой. Но в рамках 0.1 сек. особо значения не имеет. На особо больших скоростях будет проблематично успеть охладить кубик реакцией на температуру - если будет нужно, лучше по feedforward начинать охлаждение сразу.

Планы у меня есть на обновление рекорда до примерно абсурдных результатов, когда уже не будет казаться что с этим можно конкурировать)

Идея возникла. А что если сделать кубик вещью в себе, встроить в него моторы, про цвет своих граней он и сам знает. Скорее всего рекорд он не побьет, но просто прикольная игрушка получится. Переводим его в случайное состояние, запускаем, и он сам себя собирает..

Негодяи!!! Украли мою идею! :)))

Сцепление, моторы... На сколько там градусов обычно нужны повороты? Вроде все кратное 90 градусам. Можно поставить электромагниты и храповые механизмы (или кривошип). Можно вообще убрать сложные моторы с большой массой ротора и сделать некое подобие шагового двигателя всего с 4 обмотками, управляемыми по простейшему закону. Можно вообще попробовать пневматический двигатель (турбинку) с энкодером положения и фиксируемым стопором. Тут скорость сборки может возрасти кратно. Вопрос, выдержит ли сам кубик такие ускорения :)

Добавлю в копилку безумных идей - мальтийский скачковый механизм.

Шаговый двигатель с шагом 90 градусов плохой вариант, у него может быть грубый шаг. У шагового мотора шаг не ровно на 100%, а из-за нагрузки может оставаться смещение, то есть шаг по факту составит 80% или 115% от запланированного. Когда угол всего 0.9 градуса, это особо не заметно, повернулся он на 0.90° или на 0.91° градуса, при общем повороте на 270 градусов например, ошибка особо не заметна. Но если шаг 90°, то ошибка в 10% уже даст отклонение в 9° и кубик заклинит, а при большом усилии и разломит его. Плюс неизвестно положение мотора в произвольный момент времени, то есть подаем сигнал на перемещение и непонятно, через 1 мс или 10 мс он провернется. Нужно получать сигнал от энкодера или устанавливать время с запасом, 100 мс на шаг, когда мотор точно провернется. Получается что нужен энкодер. А с энкодером можно использовать на порядок более эффективный мотор от квадракоптера, обладающий высоким КПД, скоростью и моментом (сервопривод по сути). Шаговый мотор это весьма условный мотор, по всем параметрам он никакой, основное достоинство простота управления, точность позиционирования условная (может шаг пропустить и шаг с отклонением пропорциональном моменту), момент слабый, скорость низкая, тяжелый, потребляет большой ток даже при нулевой скорости.

В данном случае это не очень важно, само движение можно ограничивать стопорами. Честно говоря очень сомневаюсь, что сервопривод будет эффективнее четырех соленойдов каких-нибудь, или шаговика с четыремя положениями.

Что в реальной жизни сервоприводы всегда лучше вопросов нет, но тут уж больно задача узкая.

что сервопривод будет эффективнее четырех соленойдов каких-нибудь

Конечно будет эффективнее. КПД высокий, управляемое ускорение и торможение. Стопоры не подойдут, так как поворот не всегда 90 градусов. И на большой скорости стопоры дадут удар, кинетическую энергию кубика и мотора нужно будет поглотить чем-то за миллисекунду. Сильный удар поломает конструкцию.

Управление ускорением не бесплатно. И даже соленойд бесконечное ускорение развивать не будет. Им тоже в общем-то можно управлять по скорости.

Весь вопрос в "цене" этих фич. Сколько времени теряется на всё это. Впрочем, современные серводвигатели скорее всего кубик сломают, т.е. достаточно быстро они в состоянии работать. Но это, конечно, стоит проверить.

А зачем поворачивать не кратно 90 градусам ?

Иногда поворот на 180 градусов. Ну и на практике глупая механика может дать поворот не ровно кратно 90°, а 75° например. Сервопривод может одним махом давать ровно 90.0° и начинать новое движение после полной остановки или заранее. В "глупой" механике надо будет с запасом пережидать защитные интервалы времени.

Dan_sea, перелогинься :)

Это получится какой-то сферический кубический конь в вакууме)).

в нужные моменты пшикать на кубик жидким азотом.

Чтобы его разломать к чёртовой матери :)))

С жидким азотом пластик моментально хрупким станет.

Я имел ввиду вариант с металлическим кубиком

Это очень круто! Отличная реализация. Очень быстро собирается. Собираю руками за 2 минуты))).

Я умею собирать кубик рубика, но лучше б я умела создавать такого робота! Восторг🙃

Для VR такой формат этой головоломки хорошо подходит.

Да. Тема, правда, противопоказана людям, страдающим эпилепсией, а также "морской болезнью", может укачать. На экране смартфона нет эффекта присутствия.

С моей скоростью ютуба собирается не очень быстро )

Может стоило посмотреть в сторону FPGA для реализации ПИД контроллеров для моторов? Сейчас вполне реально сделать модель в Simulink и конвертировать алгоритм в Verilog. Тогда можно было бы:

  • механические резонансы фильтрами подрезать

  • выдержать строгий период петли упраления

  • обеспечить минимальную задержку в петле управления

В эту сторону смотрю, по поводу FPGA даже можно что-то найти - https://github.com/HaddingtonDynamics/Dexter/wiki/Gateware

  • Механические резонансы - пока с этим не столкнулся (точнее, пока исчезло после того как жесткость конструкции сильно повысил)

  • Строгий период петли управления - реализуется в софте, все (надеюсь, что все) FOC драйвера его имеют

  • Минимальная задержка - при наличии модели контролируемой системы не так важно, плюс с аккуратным кодом она тоже не слишком большая

  • Частота управления - вот тут уже интереснее. На текущих драйверах 8kHz, когда-нибудь их обновят и будет 24kHz. Есть альтернативные драйвера, к примеру, VESC, сейчас они поддерживают частоту больше чем 8kHz. Тут, действительно, есть ощущение что это уже влияет

Текущая реализация использует то что было под рукой, при этом без вложений слишком большого количества времени. Пока что. Я планирую улучшить результат, и FPGA это один из вариантов

Кроме того, вместо FOC можно использовать DB-DTFC, хотя есть мнение что FOC с моделью системы и feedforward не особо хуже. Пока я в эту сторону не копал, в качестве входной точки использую этот коммент к ODrive

А вообще, вместо сложной схемы управления электромоторами, может иметь смысл упростить задачу - мне нужны повороты только на 90 и на 180, при этом я могу использовать механический стопор.

Как будто достаточно придумать физический механизм, который накачать энергией и потом просто отпустить. Может оказаться что в таком случае можно больше энергии закачать в один поворот.

По факту, в моторы тоже можно закачивать энергию, но нужно управляющую электронику для этого использовать подходящую и следить чтобы моторы не нагрелись и магнитное поле не превысило порог и не размагнитило ротор (хотя, в теории, это решается индукционными моторами)

упростить задачу - мне нужны повороты только на 90 и на 180, при этом я могу использовать механический стопор.

Не факт, возможно что большое ускорение не выдержит сам кубик. Там и так на глазок под 500G ускорения, что на пределе механической прочности. Моторы могут ограничивать ускорение. А стопор даст жесткий удар.

обработка была переписана с Python на Rust и стала занимать <0,5 мс

Расскажите дяденьке про ассемблер, кто-нибудь...

0,5 мс - это примерно 3-5% от общего времени. Если сильно вложишься в ассемблер, ну может добьёшься 2-4%, до нуля всё равно не дострелишь.

Можно попробовать какую нибудь нейронную сетку натренировать с целевой метрикой на количество поворотов. Может быть найдёт поинтереснее алгоритмы, по сравнению с текущими.

Камеры может можно чем нибудь заменить - светодиодной матрицей какой-нибудь и по отражению цвет определять.

Можно ещё попробовать заменить поворот на 180 градусов, на два в 90 градусов в противоположенном направлении, но там наверное слишком сложная система получается.

Нейронные сети, FPGA... Простите, кто-нибудь про аналоговые ПИД-регуляторы вспомнит? )

кто-нибудь про аналоговые ПИД-регуляторы вспомнит? )

"Не, братан, так ты слона много видеокарт не продашь!"

Обоснуй.

Как пид поможет вычислить оптимальный алгоритм сборки для конкретного случая.

Причём тут алгоритм сборки? ПИД регулятор не для этого. "FPGA для реализации ПИД" - кринж, это делается на простой аналоговой схеме.

Ну ты дядя написал под моим коментом и приплёл нейронные сети к пидам, я писал про использование нейронных сетей для попытки найти оптимальный алгоритм решения. Не говорю что будет выйгрыш, но можно поэкпериментировать.

Ну а fpga даёт такой уровень гибкости, который в принципе не достижим в аналоговых схемах.

Если бы мы говорили про серийный образец из миллиона штук, тогда да.

А тут экспериментальный продукт, где важна возможность проверить сотни разных режимов, а тут ты такой красивый со своим экспертным мнением "Дураки вы все, надо как деды завещали, на аналоговых пидах, а сверху асмом присыпать".

А вдруг я тётя, а не дядя?)))

OK, не под тем комментом ответ поставил, пояснил же цитатой. Я писал только про ПИД, а не про алгоритм поиска. Где я про асм писал? И ПИД регулятор в том или ином виде у автора есть, так что не понятен "типа" ваш сарказм.

Но раз уж начали. В данной задаче, какой "такой" уровень гибкости даёт FPGA и в какой метрике, "который в принципе не достижим в аналоговых схемах" в реализации ПИД регулятора?

И почему бы нам в данном конкретном "экспериментальном продукте" не проверить использование квантового компьютера, ну в самом деле, эксперимент же? ))

Я бы с удовольствием проверил использование квантового компьютера. Если за счёт работодателя.

Идея в том чтобы делать то что тебе нравится, а не чтобы втиснуться в минимально возможные рамки.

Конкретно этот проект, как раз позволяет тебе заниматься оверинженирингом по полной. Если тебя вштыривает от этого.

"который в принципе не достижим в аналоговых схемах"

Ну например я хочу сделать условие чтобы в зависимости от текущей фазы луны учитывалась погрешность от изменения гравитации.

Как долго мне придётся пилить аналоговые версии? На fpga вполне возможно и не сильно дольше чем любое другое.

Конечно можно сказать "нахрена тебе это нужно", но это как раз пример гибкости.

И какова будет эта погрешность, и какая формула, и как это повлияет на результат?

Интересно, нужен ли нам тогда FPGA, чтобы учитывать изменение силы трения элементов кубика от их нагрева под влияние ИК излучения от чашки чая, стоящей на соседнем столе?

А вдруг я тётя, а не дядя?

(Отвлекаясь от просмотра Олимпиады и горестно вздыхая): Тёти тоже разные бывают!

Не расстраивайтесь, будет на вашей улице праздник. ))

Камеры можно поставить черно-белые, а цвета различать по изменению яркости квадратов в разных цветах, светить на кубик RGB светодиодами по очереди, а еще лучше и оранжевым, ультрафиолетовым, инфракрасным, бирюзовым и прочими. В одном из узких спектров один из цветов будет виден наиболее четко. Нам же нужно 6 цветов различить, в пространстве RGB эта задача решается, но в еще большем количестве цветов подсветки будет проще. Например в оранжевой подсветке ожидается что оранжевые квадратики будут светится наиболее ярко, а остальные будут почти черные. Но может краска будет отражать не оранжевый спектр, а R+G что визуально даст оранжевый, но на самом деле это смесь цветов 500-740 нм, а не "истинно" оранжевый 590-625 нм.

"Рекорд зафиксировали на специальном мероприятии 5 июля 2024 года" Негоже на авторитетном ресурсе (RIA) загнивающие страны указывать....

Дальтоник Олег думает, что собирает кубик Рубика за 2 секунды

Ну, кстати, текущий мировой рекорд для человека — около трёх секунд.

Только эти три секунды не включают рассматривание кубика, в отличие от рекорда робота.

Всё так. Более того, в эти три секунды не входит и этап «планирования в голове». По сути, только последний этап из трёх входит. А робот за доли секунды всё делает.

Рассказ крутой, в распознавалку стоит все таки мелкую нейронку какую-нибудь запихать, тогда будет надёжно и так же быстро и не надо будет от мелких изменений освещения тюнить.

Проект крутейший. Я не уловил одного: состояние кубика распознаётся каждый раз после каждого поворота, или только один раз в начале процесса?

Единожды

Каждый раз распознавать -- избыточно же, если ты полностью контролируешь сборку :)

Комментатор выше говорил, что на ассемблер надо переписывать, я и засомневался. Избыточно безусловно, хотя с электромеханикой в цепочке возможны ошибки, а с повторным распознаванием их можно корректировать.

Да какой ассемблер? Надо камеру с фпгашкой брать и сразу в неё зашивать распознавание, чтобы от камеры на каждом кадре летели распознанные грани :)

Или напрямую к матрице подключаться.

Для увеличения скорости можно отказаться от камеры и распознавания на CPU - поставить фотоприёмники со светофильтрами и распознавать на MCU. И там же общий алгоритм крутить.

Матрица камеры и есть набор фотоприемников. Мне кажется нет смысла изобретать велосипед. Матрица может дать картинку за менее 1 мс, распознание без нейросети 0 мс, просто сравнение уровней нескольких пикселей.

Это долго. Сейчас камера подключена к компьютеру. Там везде есть задержки, Задержка есть у камеры, задержка есть у интерфейса передачи, задержка есть у процессов операционки по распознаванию. Задержка есть у передачи результатов на контроллер. И все эти задержки не сильно детерминированные. и только начиная с MCU можно говорить о детерминированных процессах.

Очевидно нужны кастомные могучие моторы управляемые фактически одним импульсом. Программно можно улучшать, но много не выиграть.

Насколько высокая точность поворота нужна ? Сколько в среднем движений на 90 градусов нужно для сборки ?

По условиям гиннеса можно ли свой кубик использовать?

Те что стоят и есть могучие моторы. Количество импульсов не имеет значения. И ускорение тоже имеет ограничения, резкий удар расколет кубик, а не повернет. То есть с неким ускорением нужно набирать скорость вращения, потом замедлять.

Нет предела могучести. Я интуитивно уверен, что стокилограммовый соленойд сообщит нужное движение с гораздо большим ускорением...

Бить по кубику не надо, однако вопрос "можно ли сделать кубик" был задан не просто так. Очевидно, что кубик может пережить конечное ускорение и именно это является ограничением при решении задачи.

Механическая система никогда не даст бесконечного ускорения. Однако момент который развивает серводвигатель конечен и прямо зависит от его мощности, которая косвенно зависит от его массы. И тут имеет смысл попробовать что будет при использовании, скажем десятикиловатных приводов :). То что на фото визуально тянет на сотню ватт... Это, если хочется s-кривые итд итп.

десятикиловатных приводов

Ну тогда уже можно смотреть в сторону гидравлики или пневматики. Заранее создать в баллоне давление 200 атмосфер и простыми механизмами вращать кубик.

Не факт, что будет быстрее и предсказуемее. Ну т.е. тут уже понятно, что надо попробовать найти для начала электродвигатели, которые смогут сломать самый хороший кубик ускорениями. И если не удастся, тогда уже городить срецрешения.

и самое главное - сколько времени всего ушло на то, чтобы это все изучить и сделать? выглядит как фуллтайм-работа

Классно, какие талантливые в Яндексе разработчики!

Вот бы ещё они в своих основных продуктах компании баги хотя бы пятилетней давности начали исправлять, совсем хорошо стало бы.

Используется кубик, предназначенный для скоростной сборки ?

И сколько времени занимает (без читерства :) ) выход из композиции суперфлипа и четырёх точек (26q*) ?

Привет, мне как куберу (8.5 секунд личный рекорд) удивительно, что вы ни слова не сказали про сам кубик и про смазку. Хорошие кубики имеют очень легкие внешние стенки и поэтому у них меньше инерция вращения, в кубинге это называется овершутинг. Ещё они невероятно режут углы, то есть я когда руками собираю то поворачиваю, например, верхнюю грань не на 90 градусов, а всего на 50(!) и уже сразу начинаю поворачивать следующую, например, правую, когда она повернётся на 50°то уже можно следущую поворачивать, английский термин corner cutting. Не знаю будет ли это работать на таких скоростях, но на ваших слоумо этого совсем нет, наоборот грани поворачиваются на все 100° из-за инерционного овершута. Но у вас я так понимаю инерция степперов больше чем кубика? Корнеркатинг срезает не меньше четверти времени сборки у людей имхо и помогает не овершутить. Чтобы резать углы надо не сжимать кубик слишком сильно, он должен немного (заметно) растягиваться в процессе.

Ещё хорошие кубики имеют стабилизирующие магниты, а последние одобренные WCA модели имеют стабилизирующее шарообразное ядро и отталкивающие магниты уменьшающие трение. Более того вклеивание своих более мощных магнитов, кажется, разрешено WCA. Флагманские кубики ещё имеют кучу настроек жёсткости.

Ваш кубик выглядит раритетом — у него есть наклейки! топовые кубы их не имеют уже лет семь. Рекомендую для новых рекордов покупать флагманы MoYu и Gan. Например соответственно WeiLong V10 и Gan 12, например. Вейлон на али 800₽ всего. Gan любит чтобы их флагман имел такой же номер как текущий топ айфон, и цена как у айфона. Хорошую смазку трудно достать, но в Калифорнии можно DNM 37 найти думаю на cubicle или speedcubeshop, например, на озоне Maru lube есть. Иногда (постоянно) можно чистить кубик от запыления и спёкшийся смазки в ультразвуке или хоть руками. Пыль там внутри это частицы самого кубика, она сильно замедляет и смазку превращает в клей. MoYu иногда делают кубики из премиального пластика как их Super Weilong и WRM 2019, имеют на поверхностях скольжения PTFE (тефлон) если не ошибаюсь.

Насчёт алгоритма сборки не знаю, вы не приводите результаты, но топ спортсмены собирают за 40-60 вращений, "число Бога" то есть минимум для любого скрамбла - 20 вращений, для среднестатистического скорее 15. Я его называю число Гугла, потому, что математики гугла нашли и доказали его значение, может у них и алг есть на гитхабе, и возможно он даже быстро работает. Или может вы можете найти другой алгоритм который ближе к этому числу чем тот, что сейчас у вас есть.

Ну кстати искать лучшее решение можно в процессе сборки. То есть сначала сборка по обычному алгоритму. А когда пошла медленная механическая работа, на каждом ходу можно проверять более медленным способом есть ли вариант сборки более быстрый (все равно процессор простаивает). И если найден вариант сборки быстрее, не за 30 ходов, а за 20, то сразу на него переходить. Хотя это и маловероятно.

24 строки кода решения в записи рекорда на видео

D’U’ L2 U’ B2 D’U’ L2R2 B2 R’ UD F’ D’ B’ L BF L’R B’ D F (24q)

Если объединить вращения противоположных граней, выполняемые роботом одновременно, и считать это за единичные повороты, то получится следующий результат:

D’U’ L2 U’ B2 D’UL2R2 B2 R’ UD F’ D’ B’ L BF L’R B’ D F (18q)

Из них 4 на поворота на 180 градусов.

Отсюда следующие выводы:

Робот RustyCuber позволяет понизить даже «число Б-га»! Решение суперфлипа с 4 точками (26q*) может уложиться в 17q :

U2D2 LF2 U’D R2 B U’DRL F2 R UDR’L U F’B’ 

Алгоритм поиска решения должен учесть все возможные плюсы, как одновременность вращения противоположных граней, количество полуоборотов, последовательность вращений с учетом допустимых углов резки и, наверное, многое другое, что рекордсмену виднее (к примеру запуск вращений до окончания расчёта).

Остается пожелать (для уменьшения накладных расходов) колоборации с изготовителями кубиков и приводов. И дальнейших рекордов!

Ошибочка

может уложиться в 17q :

U2D2 LF2 U’D R2 B U’D’ RL F2 R UD’ R’L U F’B’ 

следует читать:

может уложиться в 18q :

U2D2 L F2 U’D R2 B U’DRL F2 R UDR’L U F’B’ 

Треть поворотов выиграть у Б-га, неплохо, да?

Наверное не q а h? U2 никак не quarterturn?

согласен не q, а f (или h), мысли бегут быстрее клавиш :)

Я тут проделал работу над ошибками в собственной путанице метрик и пришел к такому выводу:

Пора ввести (в положение WCA пунктом 12. a7) новую метрику RTM (Robot Turn Metric), которая определяется следующим образом: каждое движение грани, слоя, не считающимся перехватом ( в отличии от нескольких внешних слоёв ETM) или перехват считается за 1 ход. 

Роботы мировые рекордсмены 0,3 [Mitsubishi] и 0,2 s [RustyCuber] ) позволяют, как впрочем и человек, вращать противоположные грани одновременно, делая это без перехвата(12a4 WCA). Мировой рекорд, установленный роботом RustyCuber имеет следующий результат:

D’U’ L2 U’ B2 D’UL2R2 B2 R’ UD F’ D’ B’ L BF LR B’ D F (18RTM),

что ниже числа Б-га в метрике FTM (20f*)

Из этого нововведение вытекает следующая математическая задачка - установление «числа Б-га» в метрике RTM.

Класс! А как кубик запихивается в этого робота?

Sign up to leave a comment.