Содержание
Робот и кубик Рубика — презентация онлайн
Похожие презентации:
Пиксельная картинка
Информационная безопасность. Методы защиты информации
Электронная цифровая подпись (ЭЦП)
Этапы доказательной медицины в работе с Pico. Первый этап
История развития компьютерной техники
От печатной книги до интернет-книги
Краткая инструкция по CIS – 10 шагов
Информационные технологии в медицине
Информационные войны
Моя будущая профессия. Программист
МБОУ
«Гимназия №1»
Кубик Рубика
Выполнила
ученица 4 класса «В»
Васильева Анна
г. Ноябрьск
2015г.
Цель
•Научиться самостоятельно решать
технические задачи
• Сделать робота, который собирает
Кубик Рубика
Задачи
• Провести
обзор литературы и поиск
информации в интернете
• Собрать робота согласно найденным схемам и
картам
• Сделать презентацию по теме работы
• Презентовать свою работу одноклассникам
Правила техники безопасности и
организация рабочего места
* Расстояние от глаз до экрана монитора должно
быть не меньше 60-70 см, а рабочее место хорошо
освещено
* Убрать с рабочего стола все лишние предметы.
Мелкие детали конструктора лучше положить в
специальные контейнеры
* ЗАПРЕЩАЕТСЯ!
Класть на корпус компьютера посторонние
предметы
* ЗАПРЕЩАЕТСЯ!
Работать на компьютере мокрыми руками
* ЗАПРЕЩАЕТСЯ!
Работать
на
компьютере,
имеющем
видимые дефекты и самому устранять
неполадки
Существует 3 правила робототехники, которые сформулировал
в 1942 году автор научно-фантастических произведений Айзек
Азимов в своем рассказе «Хоровод»
Робот не может навредить человеку или, бездействуя,
допустить, чтобы человеку был нанесен вред
Робот должен подчиняться приказам, которые дает ему
человек за исключением случаев, когда такие приказы
противоречат первому правилу
Робот должен защищать свое существование до тех пор,
пока эта защита не противоречит первому или второму
правилу
Поиск информации
Tilted Twister (так был назван
робот) решает Кубик Рубика полностью
автоматически.
Световой датчик сканирует кубик
и определяет его цвета.
Затем
программа
вычисляет
последовательность вращений (шагов) для
решения и выполняет повороты кубика
На своём сайте, Ханс Андерссон
опубликовал инструкцию по сборке такого
робота из специального набора Lego
Mindstorms.
По этой инструкции я собрала
своего робота
Необходимые для работы инструменты и
материалы
Кубик Рубика
Конструктор Lego Mindstorms
Компьютер
Технологическая карта
Технологическая последовательность сборки робота
себя два этапа
I этап
Сборка
Сборка узлов двигателей
(3 узла)
Установка ультразвукового
датчика
Установка контроллера
Сборка и установка поворотной
платформы
Сборка и установка устройства
переворота кубика
Сборка и установка датчика
опознавания цвета
включает в
II этап
Программирование
контроллера
Подключить контроллер к
компьютеру посредством
USB кабеля
Запустить программу
LEGO MINDSTORMS
NXT Education
Загрузить исполняемую
программу в контроллер.
Отключить USB кабель
I ЭТАП
Сборка
Сборка узлов двигателей
(3 узла)
Установка ультразвукового
датчика
I ЭТАП
Сборка
Установка контроллера
Сборка и установка
поворотной платформы
I ЭТАП
Сборка
Сборка и установка
устройства переворота
кубика
Сборка и установка датчика
опознавания цвета
II ЭТАП
Программирование
контроллера
Подключить контроллер к
компьютеру посредством USB
кабеля.
Запустить программу LEGO
MINDSTORMS NXT Education
Загрузить исполняемую
программу в контроллер
Отключить USB кабель
Схема сборки робота Tilted
Twister
Технологическая карта
Результат
Интересно, что этот робот
работает
без
подключения
к
компьютеру, то есть вычисляет
алгоритм решения с помощью своего
процессора
Первая версия алгоритма
собирала кубик Рубика за 97 шагов.
Применяя различные комбинации,
Ганс Андерсон уменьшил количество
шагов до 60
Что в итоге?
В итоге — Лего-робот, который
собирает Кубик Рубика быстрее
чем это можете сделать вы!
Реклама
Живи в современном мире!
Собирает Кубик Рубик
Вычисляет сложный ход
Лучше всех он в этом рубит
Все решения найдет!
Ваша цель –
моё
решение!
Экологическое обоснование
Робот использует чистый вид
энергии. Электричество не загрязняет
окружающую среду и не имеет
вредных выбросов в атмосферу
Робот (детали конструктора
Lego Mindstorms)
выполнен
из
экологически чистых компонентов
Благодаря тихой работе, робот
не загрязняет окружающую среду в
шумовом диапазоне
Аккумуляторы, используемые
для питания робота, всегда можно
сдать на утилизацию в специальные
пункты
Экономическое обоснование
Несмотря на немалую стоимость конструктора
Lego Mindstorms, вложенные средства напрямую
инвестируются в будущее
Ребенок,
который
с
ранних
лет
изучает
программирование, кибернетику
и робототехнику, как правило, в
будущем может рассчитывать на
более
высокооплачиваемую
работу
Технически образованные дети
— будущее экономики нашей страны!
Самооценка
В ходе проекта я:
Определяла цели, ставила и
решала задачи
Анализировала, делала
выводы
Задавала вопросы, искала
факты, находила ответы
Находила и исправляла
ошибки
Преодолевала трудности,
добивалась достижения
результата
Я рада, что у меня получилось такое сложное и
кропотливое дело. Что довела его до конца несмотря
на трудности, что много раз хотелось бросить или
отложить, но я с собой справилась
Вывод
Варианты роботов, которые можно
собрать из конструктора Lego Mindstorms
З
ВН
И
МА
Н
И
Е!
Использованные интернет ресурсы
tiltedtwister.com — Официальный сайт Ханса Андерссона, где
размещена подробная инструкция по сборке робота Lego
Mindstorms NXT и исходные коды программы для него
http://legocomp.ru/2011/01/a-postroyu-ya-segodnya-robota-kotoryj-bysobiral-kubik-rubika/- детская технологическая школа ЛЕГОКОМП
http://androbots.ru/robototehnika/roboty_i_chelovek/roboty_v_zhizni.php Все о роботах. Роботы в жизни человека
English
Русский
Правила
Создан робот, собирающий кубик Рубика за одну секунду
Тема дня
- org/ListItem»>
Технологии
Главная
25 января, 2016, 11:03
Распечатать
Человек может собрать кубик примерно за пять секунд.
- Вам также будет интересно
>
Ученым удалось реконструировать геном первого млекопитающего
06.10 19:16
NASA показало самый детальный снимок спутника Юпитера Европы
06. 10 18:40
ESA показали последствия утечки газа на «Северном потоке»
06.10 13:14
Понадобилось всего несколько часов: ученые рассказали, как появилась Луна
06.10 12:35
Космический корабль SpaceX взлетел с российским космонавтом
05. 10 19:49
В Австралии нашли останки самой большой птицы на Земле
05.10 19:23
Ученым удалось выяснить, как двигаются бактерии
05.10 18:44
Убивший динозавров астероид вызвал глобальное цунами – ученые
05.10 15:10
В Израиле обнаружили древний клад с золотыми монетами
05. 10 14:35
Нобелевскую премию по химии присудили за технологию создания молекул
Обновлено
05.10 12:50Ученые проследили за эволюцией лягушек в Чернобыльской зоне
05.10 11:27
США готовят новые ограничения экспорта микрочипов в Китай
05. 10 05:58
Последние новости
Покровская родительская суббота: что нельзя делать в этот день
10:00
Япония увеличила свой санкционный список по РФ на 90 лиц и структур — Минфин
09:51
Трофейная техника РФ составляет значительную часть военного арсенала Украины — британская разведка
09:42
Работа и доходы украинцев: что изменилось во время войны
09:07
Войска РФ шесть раз ударили по Никопольскому району из РСЗО и тяжелой артиллерии — глава ОВА
09:02
Все новости
Добро пожаловать!
Регистрация
Восстановление пароля
Авторизуйтесь, чтобы иметь возможность комментировать материалы
Зарегистрируйтесь, чтобы иметь возможность комментировать материалы
Введите адрес электронной почты, на который была произведена регистрация и на него будет выслан пароль
Забыли пароль?
Войти
Пароль может содержать большие и маленькие буквы латинского алфавита, а также цифры
Введенный e-mail содержит ошибки
Зарегистрироваться
Имя и фамилия должны состоять из букв латинского алфавита или кирилицы
Введенный e-mail содержит ошибки
Данный e-mail уже существует
У поля Имя и фамилия нет ошибок
У поля E-mail нет ошибок
Напомнить пароль
Введенный e-mail содержит ошибки
Нет учетной записи? Зарегистрируйтесь!
Уже зарегистрированы? Войдите!
Нет учетной записи? Зарегистрируйтесь!
Робота, собирающего кубик Рубика за минуты, создал алматинский изобретатель
8 Октября 2020 13:13
АЛМАТЫ. КАЗИНФОРМ – Алматинец собрал робота, который за пару минут собирает кубик Рубика, передает корреспондент МИА «Казинформ».
В Facebook появилось видео где алматинский мальчик показал свое изобретение. Он собрал робота, который собирает кубик Рубика за считанные минуты. В сети его назвали казахстанским «Илоном Маском».
«Оцените мастерство нашего ученика. В то время, когда другие не умеют собирать кубик Рубика, наш Хангельды собирает робот. Хангельды наш ученик, наша гордость, гордость нашей школы, города Алматы и страны», — написал на своей странице заместитель директора по учебной работе школы №40 Ермек Ербошаев.
Как рассказала бабушка, у мальчика интерес к моделированию появился с трех лет.
«Робот, который собрал Серик, пять лет назад собрал в Америке один 62-летний изобретатель. После его работу повторили в России. Вот теперь Серик впервые повторил это изобретение в Казахстане. Он с детства увлекается роботехникой. Это его четвертая работа. Но мы до этого времени не афишировали его изобретения «, — рассказала Айтгуль Абдрахманова.
По состоянию здоровья Серик Хангельды с первого класса учится на дому. Сейчас он ученик 9-го класса. В свободное от учебы время он любит играть в шахматы и увлекается роботехникой.
«Специальные уроки по робототехнике я не проходил. Когда создавал робота, инструкцию и программу смотрел в интернете. Весь процесс сбора занял 7 дней. Робот способен собирать кубик Рубика без помощи человека. Машина собрана из Lego и способна правильно сложить кубик за пару минут, в зависимости от сложности комбинаций, освещения и прочих параметров»,- рассказал Серик Хангельды.
Сейчас работой казахстанского изобретателя заинтересовались в одном из китайских компании. Серику Хангельды предложили присоединиться к занятиям робототехники в специальном сайте в режиме онлайн.
«Мы буквально вчера зарегистрировались на этом сайте. Теперь Серик начнет конструировать разные модели роботов вместе с китайскими изобретателями. Пока процесс будет проводиться в онлайн режиме. Надеюсь, это поможет ему многому научиться и набраться опыта», -добавила бабушка изобретателя.
Новости по теме
Книгу подарили Президенту учащиеся павлодарской гимназии имени Абая
Увлечение сватингом среди казахстанских школьников отмечают полицейские
Илон Маск представил прототип человекоподобного робота
Теги:
Алматинская область
Поделиться:
Подписывайтесь на наш канал
Читайте также
Отец и трое детей насмерть отравились газом в Алматинской области
Полезные ископаемые на миллиард тенге незаконно добыли в Алматинской области
Приток россиян и удорожание жилья — прокурор города Конаева обратился к жителям
Кыргызстан изучает опыт Казахстана по организации первичной медико-санитарной помощи
Группу квартирных воров задержали в Алматинской области
Назначена руководитель управления финансов Алматинской области
Растет число госпитализированных с ОРВИ в Алматинской области
Назначен руководитель управления строительства Алматинской области
Новости партнеров
Популярное
1
Игорь Лепеха назначен заместителем министра внутренних дел РК
2
Жанар Айтжан назначена постпредом Казахстана при ВТО и международных экономических организациях
3
Назначен новый посол Казахстана в Великобритании
4
Алматинка обманула продавцов золота
5
Казахстанский боксер Ербосынулы проведет самый большой бой за карьеру
Лента новостей
13:07
13:00
12:51
Тенденции
12:42
12:37
12:34
12:29
12:25
12:11
12:07
12:00
11:43
11:34
11:26
11:18
11:05
10:57
10:42
10:30
10:15
Использование кубика Рубика для улучшения и оценки манипулирования роботами
Ингрид Фаделли, Science X Network, Tech Xplore
Кредит: Ян и др.
Исследователи из Вашингтонского университета недавно разработали новый протокол для обучения роботов и проверки их работоспособности при выполнении задач, связанных с манипулированием объектами. Этот протокол, представленный в статье, опубликованной в IEEE Robotics and Automation Letters основан на кубике Рубика, известной комбинированной 3D-головоломке, изобретенной венгерским скульптором и архитектором Эрно Рубиком.
В одном из своих предыдущих исследований команда внимательно изучила, как роботы приобретают навыки последовательного манипулирования, например, необходимые для работы с кубиком Рубика. В своих экспериментах они наблюдали несоответствие между тем, что люди и роботы считают сложными при выполнении 3D-головоломки.
«Для нас, людей, сложно решить, какие движения нужно сделать, чтобы собрать кубик Рубика, но нам довольно легко физически манипулировать кубиком и крутить его по желанию», — Болинг Ян, один из исследователей, проводивших исследование. исследование, рассказал TechXplore. «Для роботов все наоборот. Роботам требуется всего несколько секунд, чтобы выполнить основанный на поиске алгоритм, который может определить последовательность ходов, которые позволят собрать куб. Однако выполнение отдельных манипуляций в реальном мире требует меньше времени. сантиметровая точность позиционирования».
Научиться манипулировать кубиком Рубика может быть очень сложно для роботов, поскольку оно включает в себя ряд последовательных движений. Это означает, что отдельные ошибки, которые совершает робот, могут накапливаться, влияя на его общую производительность при выполнении задачи.
Ян и его коллеги считают, что накопление ошибок является ключевой проблемой, влияющей на производительность роботов при выполнении последовательных манипуляционных задач. Поскольку кубик Рубика включает в себя последовательные манипуляции, они предлагают использовать головоломку для оценки манипулятивных навыков роботов и сравнения их с навыками других роботизированных систем.
Кредит: Ян и др.
«Работа с кубиком Рубика требует достаточной точности, особенно при длинных последовательностях манипуляций, — сказал Ян. «Поэтому способность робота правильно и быстро манипулировать кубиком Рубика свидетельствует о высокой производительности манипуляций. В нашем протоколе требуется, чтобы робот выполнял последовательность манипуляций с кубиком Рубика как можно быстрее».
Протокол, разработанный Янгом и его коллегами, оценивает как скорость, так и точность робота при сборке кубика Рубика. В рамках своего исследования исследователи продемонстрировали его потенциал и применимость в серии тестов.
В первом тесте они использовали его для оценки двух базовых алгоритмических методов улучшения манипулятивных навыков робота с использованием PR2, роботизированной платформы, разработанной Willow Garage. Впоследствии команда наметила ряд шагов, которые позволили бы другому известному роботу по имени Херб собрать кубик Рубика. Это подтвердило, что их протокол можно применять к различным роботизированным платформам.
«Роботы могут получить высокие баллы по нашему протоколу, успешно выполняя большое количество манипуляций и/или сводя к минимуму время, необходимое для выполнения манипуляций», — объяснил Ян. «Таким образом, наш протокол устанавливает базовый уровень, с которым другие исследователи могут сравнивать свои системы».
В будущем протокол, разработанный Янгом и его коллегами, можно будет использовать для оценки различных вычислительных методов, позволяющих манипулировать роботами, и сравнивать их скорость, точность и общую эффективность. Кроме того, первоначальные выводы команды показывают, что протокол хорошо обобщается на различных роботизированных платформах.
«Мы считаем, что наличие такого стандарта позволит исследователям робототехники более четко определить направления прогресса в манипулировании роботами», — добавил Ян. «Что касается более широкой аудитории, кубик Рубика понятен и даже приятен для просмотра почти всем, поэтому он может служить воротами для знакомства учащихся с робототехникой. Сейчас мы заинтересованы в приглашении исследователей, специализирующихся в разных областях, таких как как датчики, планирование и проектирование манипуляторов, чтобы протестировать наш эталон и использовать его для улучшения манипулирования роботами с точки зрения точности и скорости».
Узнайте больше
Сбор кубика Рубика ловкой рукой
Дополнительная информация:
Болинг Ян и др., Сравнительный анализ манипулирования роботами с помощью кубика Рубика, IEEE Robotics and Automation Letters (2020). DOI: 10.1109/LRA.2020.2969912. О Arxiv : arxiv.org/abs/2202.07074
Болинг Ян и др., Предварительное касание для последовательных манипуляций, Международная конференция IEEE по робототехнике и автоматизации (ICRA), 2017 г. (2017). DOI: 10. 1109/ICRA.2017.7989594
Информация журнала:
архив
Предоставлено
Сеть науки X
© 2022 Наука Х Сеть
Цитата :
Использование кубика Рубика для улучшения и оценки манипулирования роботами (21 марта 2022 г.)
получено 7 октября 2022 г.
с https://techxplore.com/news/2022-03-rubik-cube-robot.html
Этот документ защищен авторским правом. Помимо любой добросовестной сделки с целью частного изучения или исследования, никакие
часть может быть воспроизведена без письменного разрешения. Контент предоставляется только в ознакомительных целях.
Сборка робота для сборки кубика Рубика — Подвал схем
Может ли микроконтроллер PIC32 собирать кубик Рубика быстрее, чем человек? Чтобы выяснить это, эти два студента из Корнелла построили автономного робота, который может собирать кубик Рубика. Система использует скрипт Python для обработки изображений и специализированные алгоритмы для решения головоломки.
Сидя дома с парой друзей, мы наткнулись на старый кубик Рубика. Никто из нас на самом деле не знал, как собрать кубик Рубика, поэтому мы решили поставить перед собой задачу. Двое наших друзей пытались научиться собирать кубик Рубика вручную, а мы пытались построить робота, который собирал кубик. Когда мы оба закончим, мы устроим соревнование, кто быстрее соберет кубик Рубика.
Этот проект представляет собой автономного робота, который собирает кубик Рубика. Роботу требуется только вмешательство человека, чтобы сначала разместить куб, нажать «захват» для нашей камеры и внести незначительные изменения в куб на этапе решения. После первоначального размещения куба наш робот следует заданной последовательности, чтобы сфотографировать каждую сторону куба. Эти фотографии передаются скрипту Python для обработки изображений, который генерирует массив кубов по цветам для использования в алгоритме Коциембы [1]. Как только алгоритм Коциембы идентифицирует ходы, необходимые для сборки куба, он отправляет ходы, сохраненные в виде массива, через последовательное соединение на наш микроконтроллер Microchip PIC32 (MCU). Это решение отправляется в сжатой форме «Вращение правой стороны по часовой стрелке», «Поворот нижней стороны на 180 градусов» и так далее. Затем наше программное обеспечение дает указание четырем рукам робота выполнить необходимые вращения, используя определенные команды управления двигателем.
Сами руки состоят из напечатанных на 3D-принтере деталей, в которых используются два сервопривода: один для выдвижения и втягивания руки, а другой, оснащенный когтем, для вращения куба. Эту систему можно визуализировать с помощью диаграммы состояний, показанной на рис. 1 .
РИСУНОК 1 – Диаграмма состояния всей автономной системы. Сценарий Python запускается на ноутбуке.
ФИЗИЧЕСКАЯ СТРУКТУРА
Поскольку наш проект был ограничен бюджетом в 125 долларов, наши планы относительно конструкции робота пришлось соответствующим образом скорректировать. Хотя наличие шести рычагов было бы наиболее эффективной установкой, покупка 12 сервоприводов, необходимых для идеальной конфигурации, была невозможна с финансовой точки зрения. Кроме того, наличие шести рук создало бы многочисленные сложности для фотографирования куба. Это оставило наш окончательный проект с четырьмя рычагами, все в одной плоскости. Однако такая компоновка также создавала проблему эффективности, поскольку не могла напрямую взаимодействовать с передней и задней гранями куба. Глядя прямо на куб в нашей установке (тот же вид, что и камера, делающая фотографии в Рисунок 2 ), руки были обозначены «Вниз», «Вверх», «Влево» и «Вправо».
РИСУНОК 2 – Вид всей физической структуры (вид через камеру на куб)
Другим ограничением бюджета было то, что нам пришлось понизить качество физической структуры, держащей руки. В нашем окончательном проекте прочный кусок дерева (11″ × 24″) является основой, с двумя тонкими деревянными брусками (0,25″ × 1,5″ ×14″), выступающими вертикально, и еще одним куском (0,25″ × 1,5 дюйма). ″ × 11″), соединяющий две вертикальные части. К каждой из этих конструкций был прикреплен рычаг, в том числе две очень маленькие детали (0,25 дюйма × 1,5 дюйма × 5 дюймов), которые удерживали нижний рычаг на месте. Следовательно, строить нашу структуру было утомительно, и потребовалось несколько попыток заставить когти схватить куб с необходимой точностью 9.0003
Рычаги сами по себе состояли из внешней втулки, в которой размещалась скользящая внутренняя деталь ( Рисунок 3 ), которая могла выдвигаться из внешней втулки и втягиваться в нее. Это стало возможным благодаря прикреплению сервопривода сбоку к внешней втулке с подсоединенной шестерней. Зубья шестерни захватывают деталь, вставленную в скользящую внутреннюю деталь. Скользящая внутренняя часть также была оснащена очень прочным сервоприводом, 20 кг/см, который был оснащен клешней, напечатанной на 3D-принтере. Это была точка соприкосновения робота и куба. Чтобы соответствовать нашим бюджетным ограничениям, мы получили сервопривод с достаточным диапазоном движения (около 60 градусов), чтобы выдвинуть коготь к кубу и отвести от куба достаточно, чтобы вращаться, не задев его. В общей сложности каждая рука состояла из пяти напечатанных на 3D-принтере деталей, двух сервоприводов и приличного количества смазки, помогающей деталям двигаться.
— РЕКЛАМА—
—Реклама здесь—
РИСУНОК 3. Изображение CAD (a) показывает внешний рукав, в котором размещалась скользящая внутренняя деталь (b). На изображении (c) показан окончательный проект с внешней обложкой, окрашенной в черный цвет, и внутренней обложкой, окрашенной в зеленый цвет.
УПРАВЛЕНИЕ ДВИГАТЕЛЕМ
Сервоприводы приводились в действие с помощью переменных ШИМ-сигналов, которыми мы управляли через микроконтроллер PIC32. Схема цепи, которую мы использовали, показана на рис. 4 . Схема оснащена оптоизолятором, который отделяет MCU от сервоприводов, чтобы предотвратить повреждение транзисторов в порту MCU любыми большими индуктивными выбросами от сервопривода. Источник питания стенда Keysight (ранее Agilent) E3630A обеспечивал достаточный ток для питания всех сервоприводов, пока несколько сервоприводов не пытались двигаться одновременно. Если мы попытались переместить несколько сервоприводов одновременно, моторы потребляли больше энергии, чем мог обеспечить источник питания, и сервоприводы действовали хаотично и не двигались должным образом. Это несколько ограничивало то, как мы могли взаимодействовать с кубом, и приводило к тому, что движения были менее конкретными, чем мы могли бы их сделать.
РИСУНОК 4 – Полная схема всех наших цепей
Сигналы управления ШИМ (широтно-импульсная модуляция) для сервоприводов имели ширину импульса 20 мс с коэффициентом заполнения от 0,025 до 0,125 (от 0,5 мс до 2,5 мс). ШИМ-управление для когтевых сервоприводов должно было быть намного более точным, чем для шестеренчатых сервоприводов, поэтому для генерации этих сигналов использовались четыре выходных блока сравнения на PIC32. Поскольку у нас было только пять выходных блоков сравнения на нашем микроконтроллере PIC32, нам нужно было использовать процедуру обработки прерываний (ISR) для создания оставшихся четырех управляющих сигналов ШИМ.
ISR, который запускался таймером, работающим на частоте 100 кГц, содержал счетчик, который увеличивался на каждой итерации, чтобы установить определенные выводы на плате в высокий или низкий уровень. Это вручную создало необходимые управляющие сигналы ШИМ. Счетчик сбрасывался каждые 200 итераций ISR, чтобы дать нам ширину импульса 20 мс. Хотя этот метод ISR работал, мы заметили, что генерируемые управляющие сигналы ШИМ не были такими точными или чувствительными, как сигналы, генерируемые выходными блоками сравнения; однако это не было большой проблемой для нас, поскольку сервоприводы всегда должны были находиться только в одном из двух положений.
РАЗРАБОТКА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
Большая часть нашего программного обеспечения состояла из функций, необходимых для фактического перемещения когтей и выполнения ими движений, необходимых для сборки кубика Рубика. Чтобы когти втягивались, выдвигались и вращались, не мешая друг другу, они должны были быть почти идеально выровнены. Сигналы PWM позволили нам установить сервоприводы когтей либо в вертикальное, либо в горизонтальное положение, а сервоприводы с шестернями — в выдвинутое или втянутое, путем изменения рабочего цикла сигналов. Сначала эти значения были приблизительно откалиброваны, а затем дорабатывались на протяжении всего времени, пока мы строили робота.
Мы использовали поэтапный процесс проектирования для программирования и тестирования всех функций движения робота. Во-первых, мы получили самые основные движения (вытягивание и вращение когтей), работающие и протестированные. Как только мы убедились, что эти движения работают правильно, мы объединили эти основные движения, чтобы сформировать более сложные движения, такие как установка когтей на кубе в правильной ориентации. Они, в свою очередь, составляли еще более сложные движения, такие как вращение куба и поворот каждой из его граней. Этот инкрементный процесс проектирования значительно упростил отладку функций движения, чем если бы мы просто попытались сразу запрограммировать сложные движения.
Our final move-list consisted of the following moves: turnCCW_Up
, turnCW_Up
, turnCCW_Down
, turnCW_Down
, turnCCW_Left
, turnCW_Left
, turnCCW_Right
, turnCW_Right
, rotate_Left
, rotate_Right
, rotate_Forward
, rotate_Back
и show_Face
. В этой схеме именования CW означает «по часовой стрелке», а CCW — «против часовой стрелки». Поворотные движения предназначались для фактического поворота каждой из четырех граней куба, с которыми клешни соприкасались, в обоих направлениях. Функции поворота требовались для взаимодействия с передней и задней гранями куба, а также для того, чтобы каждая грань куба была направлена в сторону камеры. show_Face
удерживала куб таким образом, чтобы ни одна из секций на его грани не закрывалась когтями. Вместе эти функции позволили нам выполнить все движения, необходимые для фотографирования и решения куба.
ОБРАБОТКА ИЗОБРАЖЕНИЙ
Чтобы получить автономного робота, нам пришлось разработать способ, с помощью которого робот мог бы получать начальное состояние куба. Самым очевидным решением было использовать камеру, чтобы сфотографировать каждую сторону. Наш скрипт Python начинал с того, что делал фотографии каждый раз, когда нажималась клавиша «Enter», и сохранял эти изображения в том же каталоге, что и сам скрипт.
Когда все фотографии были сняты, мы использовали библиотеку Python под названием openCV [2], чтобы выяснить, какого цвета каждый квадрат. Это работало путем проверки каждого пикселя изображения и сравнения его с «маской». Эта маска представляла собой просто диапазон значений RGB, соответствующих шести цветам кубика Рубика. Мы использовали следующие значения: от [45, 55, 225] до [120, 120, 255] для красного; от [70, 132, 245] до [177, 220, 255] для оранжевого цвета; от [120, 220, 225] до [219, 255, 255] для желтого [78, 112, 0] до [160, 200, 70] для зеленого; [180, 61, 39] до [255, 145, 120] для синего; и от [220, 220, 220] до [255, 255, 255] для белого цвета.
Выяснение того, какие диапазоны использовать для каждого цвета, было калибровкой всего проекта. В зависимости от освещения цвета на фотографиях могут меняться, поэтому мы постарались ограничить вариации в настройках освещения. Если пиксель не попадал в диапазоны маски, мы знали, что это нерелевантный пиксель и его можно отбросить. Мы решили сделать ненужный пиксель черным. Как только маска была применена к изображению, мы взяли в среднем примерно 3000 пикселей из области, которую мы идентифицировали как куб. Куб никогда не находился в одном и том же месте из-за несовершенного вращения. В результате иногда наш усредненный квадрат оказывался немного за пределами куба и в области, которую маска считала нерелевантной. Эти пиксели просто игнорировались, и мы сделали их зелеными, чтобы понять, когда это произошло.
— РЕКЛАМА—
—Реклама здесь—
Этот скрипт в действии показан на рис. 5 . Вы заметите, что выходные данные в нашей командной строке имеют цвета с точки зрения «Назад», «Спереди», «Вверх», «Вниз», «Влево» и «Вправо», поскольку именно так алгоритм Косьембы принимает ввод. Вы также заметите, что мы не берем среднее значение центральной грани. Это связано с тем, что мы помещаем куб в структуру одинаково при каждом запуске, а наш код определяет порядок просматриваемых граней. Это означает, что мы могли жестко закодировать цвет центральной грани, потому что мы точно знали, на что смотрим, без обработки изображения.
РИСУНОК 5. В среднем используются розовые пиксели, зеленые пиксели отбрасываются, выходные данные Python отображаются в командной строке справа. Это код, работающий на одном лице.
АЛГОРИТМ КОЗИМБЫ
Мы решили использовать алгоритм Кочиембы [1] вместо оптимального решения (обычно называемого «алгоритмом Бога»), потому что он дает нам «разумное» решение за короткое время вычислений. Алгоритм Коциембы гарантирует решение менее чем за 30 ходов. Напротив, алгоритм оптимального решения мог бы выполняться очень долго, поэтому мы его не использовали.
Алгоритм Коциембы использует двухэтапный подход, который позволяет быстрее искать решение. Первая фаза — перевести куб в «состояние 1». С точки зрения непрофессионала, состояние 1 — это любое подмножество куба, которое может быть достигнуто путем выполнения движений: вверх по часовой стрелке, вниз по часовой стрелке, вправо 180, влево 180, вперед 180 и назад 180 от собранного куба. Алгоритм Коциембы использует обширный набор таблиц сокращения, чтобы сформулировать наиболее эффективный «набор движений» для преобразования зашифрованного куба в состояние 1. Затем он использует те же действия, что и выше, для преобразования куба из состояния 1 в «решенное состояние». В нашей реализации «Вверх» относится к синей стороне, «Право» — к желтой, «Левая» — к белой, «Передняя» — к красной, «Вниз» — к зеленой, а «Задняя» — к оранжевой; а «180» относится к двум поворотам лица.
Из состояния 1 вы можете перейти к собранному кубу, выполняя только ходы: R по часовой стрелке, R против часовой стрелки, L по часовой стрелке, L против часовой стрелки, F по часовой стрелке, F против часовой стрелки, B по часовой стрелке и B против часовой стрелки. Алгоритм проверит, может ли более длинная фаза 1 привести к более короткой фазе 2 и, следовательно, к более короткому общему решению. Алгоритм использует обширные таблицы поиска для создания решения. Наш первоначальный план состоял в том, чтобы запустить этот алгоритм на PIC32, но у нас просто не было памяти, необходимой для хранения справочных таблиц. Вместо этого мы запустили алгоритм на ноутбуке и отправили результат на PIC32.
Результатом работы алгоритма Коциембы была строка, состоящая из ходов, необходимых для сборки кубика Рубика из исходного состояния. Чтобы передать эту строку с ноутбука на микроконтроллер PIC32, мы подключили PIC32 к ноутбуку с помощью кабеля USB-последовательный порт и использовали последовательный канал управления для связи со сценарием Python, работающим на ноутбуке. Настройка последовательного порта на PIC32 была довольно простой и выполнялась в основном с помощью функций, предоставляемых библиотекой Protothreads [3], [4]. Точно так же настройка последовательного порта на стороне ноутбука также была легко выполнена с использованием простой библиотеки последовательного порта.
Перед отправкой выходная строка алгоритма Коциембы была немного изменена, чтобы обозначить начало и конец ходов. Как только эта строка была получена PIC32, мы декодировали ее и преобразовали строку в массив ходов, которые затем можно было повторять и выполнять когтями для сборки куба.
РЕЗУЛЬТАТЫ И ОБСУЖДЕНИЕ
В целом, наш робот оправдал большинство наших ожиданий от проекта. Хотя напечатанные на 3D-принтере детали для руки были слишком большими, после ручной шлифовки сцепляющихся частей и добавления силиконовой смазки они двигались безупречно. Руки должны были быть откалиброваны так, чтобы все они могли выдвигаться, чтобы встретиться на кубе, и втягиваться достаточно, чтобы клешни могли вращаться, не разрушая при этом куб. Поскольку когти также были напечатаны слишком большими и не подходили к креплениям сервопривода, как ожидалось, когти были немного более хрупкими, чем нам хотелось бы. Из-за этого они несколько раз ломались в ходе проекта, и каждый раз, когда они ломались, нам приходилось перезапускать процесс калибровки.
После калибровки с использованием различных ШИМ-сигналов мы добились постоянного вращения когтей. Единственной проблемой была сама структура физической поддержки. Это сделало необходимым небольшое человеческое взаимодействие, чтобы сбросить куб, если он сидел неправильно. В целом, по нашим подсчетам, примерно треть ходов требовала легкого постукивания по кубу, чтобы вернуть его на место. Тем не менее, когти, вероятно, проигнорировали бы небольшие смещения и двигались вперед. Менее чем в 10% ходов куб приходилось значительно перемещать, чтобы вернуть его в правильное положение. Купленные нами кулачковые сервоприводы обещали вращение на 180 градусов, но, к нашему большому разочарованию, оказалось, что они имеют только около 160 градусов. Это лишило возможности делать повороты на 180 градусов и вместо этого вызвало потерю эффективности за счет замены двух 90 градусов поворотов.
Еще одна серьезная трудность в этом проекте заключалась в получении постоянно правильных результатов от скрипта Python для обработки изображений. Верхнее освещение было чрезвычайно ярким, поэтому возникающие блики на кубе иногда делали неразличимыми оранжевый и желтый цвета. После попытки откалибровать этот блик с использованием переопределенных диапазонов RGB мы обнаружили, что вместо этого было бы лучше использовать время для управления освещением. Мы использовали картонный экран, чтобы блокировать блики, и это сработало немного лучше. Но программа тогда перепутала оранжевый и красный. Тем не менее, это работало намного лучше, чем наша первоначальная установка. Чтобы компенсировать потенциальное несоответствие, мы создали ручное переопределение пользователем, которое позволяло нам при необходимости передавать собственные входные данные в алгоритм Коциембы.
Все учтено; наш робот работал довольно хорошо. Он собирал куб с незначительной помощью человека в большинстве попыток, что в среднем занимало 4-5 минут, в зависимости от количества ходов, требуемых для решения. Большая часть этого времени была связана с задержками между ходами, когда нам приходилось переориентировать куб. Если бы у нас была более надежная система поддержки, этих задержек не было бы, и время выполнения значительно сократилось бы.
Если быть до конца честным, нашим друзьям понадобилось всего 20 минут, чтобы научиться собирать кубик Рубика, по сравнению с целым семестром работы, который у нас ушел на проектирование, сборку и тестирование робота. Итак, хотя это был веселый и интересный проект, который многому нас научил, если ваша главная цель — быстро собрать кубик Рубика, мы рекомендуем научиться делать это вручную.
РЕСУРСЫ
Ссылки: [1] Коциемба, Герберт. «Алгоритм Коциембы». Двухэтапный алгоритм , kociemba.org/cube.htm
[2] «Opencv-Python». PyPI , pypi.org/project/opencv-python/
[3] Дункельс, Адам. Протопотоки . dunkels.com/adam/pt/
[4] Лэнд, Брюс Р. «Корнельский университет ECE 4760». Веб-сайт курса ECE 4760 , Корнельский университет, people.ece.cornell.edu/land/courses/ece4760/
Цой Максим. Коциемба . github.com/muodov/kociemba]
«Полностью напечатанный на 3D-принтере робот для сборки кубика Рубика». Thingiverse , 2019 г., thingiverse.com/thing:2471044.
— РЕКЛАМА—
—Реклама здесь—
Keysight Technologies | www.keysight.com
Технология микросхем | www.microchip.com
ПУБЛИКУЕТСЯ В ЖУРНАЛЕ CIRCUIT CELLAR • МАРТ 2021 г. № 368 – Получите номер в формате PDF
Будьте в курсе наших БЕСПЛАТНЫХ еженедельных информационных бюллетеней! | Не пропустите предстоящие выпуски Circuit Cellar. Подписаться на журнал Circuit Cellar Примечание. Мы сделали выпуск Circuit Cellar за май 2020 г. бесплатным образцом. В нем вы найдете большое разнообразие статей и информации, иллюстрирующих типичный номер текущего журнала. |
Хотите написать для Circuit Cellar ? Мы всегда принимаем статьи/сообщения от технического сообщества. Свяжитесь с нами и давайте обсудим ваши идеи. |
Спонсор этой статьи
Джеймс Коннелли и Шиванш Гупта
+ сообщения
Джеймс Коннелли ([email protected]) получил степень бакалавра. получил степень бакалавра электротехники и вычислительной техники в Корнельском университете в 2019 году. После окончания учебы он работает инженером по интеграции программного обеспечения.
Шиванш Гупта ([email protected]) получил двойную степень бакалавра наук. в области электротехники, вычислительной техники и компьютерных наук в Корнельском университете в 2020 году. В настоящее время он получает степень магистра компьютерных наук в Корнельском технологическом институте.
Список роботов, решающих кубики
|
Создание робота, способного собирать кубик Рубика «самостоятельно», было популярной задачей для инженеров.
«Полное время решения» — среднее время решения, включая проверку.
Имя | Создатель | Год | Головоломки | Метод | Полное время решения | Механизм | Видео | Примечания |
---|---|---|---|---|---|---|---|---|
Манипулятор кубика Рубика | Клод Шеннон | 1981? | 3x3x3 | ? | ? | Две руки? | — | В настоящее время находится в Музее Массачусетского технологического института: «Подарок Мэри Элизабет Шеннон от имени семьи Клода Э. Шеннона». Пока неясно, как работал робот и сколько он мог сделать сам по себе. |
Робби Рубик | Дэниел Толкен, Дуглас Род, Роберт Сум | 1982 | 3x3x3 | ? | ~12 минут | Нет камер. Состояние зашифрованного куба вводится в компьютер. Куб многократно переворачивается, а верхний слой поворачивается шаговыми соленоидами. | — | Сделано 3 студентами Университета Иллинойса. (Газетные статьи: 1, 2, 3.) Ideal Кубик Рубика Информационный бюллетень Vol. 1 № 2 (август 1982 г.). |
Кубот | Роберт Дайер и др. | 1982 | 3x3x3 | ? | ~4 минуты | Использует камеры («система цветного зрения»). Два ортогональных манипулятора захватывают края куба. | — | Сделано командой из примерно 20 человек в лабораториях Battelle’s Pacific Northwest Laboratories. (Бумага 1983 г.). См. эта газетная статья. Решил «любой скремблированный кубик Рубика менее чем за четыре минуты»: [1]. |
Тико и Теко | Родриго де Алмейда Сикейра | 1995 г. | 3x3x3 | ? | ? | 2 манипулятора | Создано в Университете Сан-Паулу, Бразилия. Два робота «Тико и Теко» также получили английские имена «Чип и Дейл». (Исходное объявление о Cube Lovers : [2].) Веб-сайт с видео: [3]. | |
Глубокий куб | Эван Гейтс | 2004 г. | 3x3x3 | Коциемба | ~10 секунд | 6 рычагов (6DOF) | видео на ютубе | Рассказ Эвана Гейтса Нет рабочих камер, сохранено внутреннее состояние. |
РуБот | Пит Редмонд (из Дублина, Ирландия) | 2006 г. | 3x3x3 | Два перпендикулярных плеча (4 степени свободы) | Демонстрация прототипа RuBot RuBot II | |||
ЛЕГО РУБИК УТОПИЯ | Даниэле Бенедеттелли | 2007 г. | 3x3x3 | Коциемба | ~50 секунд | Робот LEGO MINDSTORMS NXT (3 DOF), решение найдено на ноутбуке, подключенном через USB | Видео на YouTube | Веб-сайт Дэнни Первый робот LEGO MINDSTORMS NXT, собирающий кубик Рубика |
Решатель кубика Рубика LEGO/Nokia 4x4x4 на базе ARM | Дэвид Гилдей (главный инженер ARM) | 2009 г. | 4x4x4 | собственный табличный алгоритм создателя | 19 мин для 4x4x4 | Телефон Symbian (с приложением Java), управляющий y-поворотным столом LEGO MINDSTORMS NXT, шарнирным удержанием/подъемом и x-вращением (3 DOF) | Видео решения 4x4x4 | |
Куб Штормер | Майк Добсон | 2010 | 3x3x3 | Коциемба | ? | LEGO MINDSTORMS RCX, четыре ортогональных поворотных рычага (8 степеней свободы) | Видео на YouTube | |
Машина для сборки кубов Университета Роуэна (?) | Зак Грейди и Джо Риджуэй (в Университете Роуэна) | 2010 | 3x3x3 | ? | ~15 секунд | ПЛК и алюминиевые детали, куб токарный на угловой базе и выдвижной «степпер» (3 степеней свободы) | Интервью с демонстрацией темы | |
ARM Спидкубер | Дэвид Гилдей (главный инженер ARM) | 2010 | 3x3x3 | 15 с («за хорошее решение») | Android (собственное приложение на C++), LEGO MINDSTORMS NXT, четыре руки (6 степеней свободы) | Видео демонстрации на ARM Techcon 2010 | ARM Powered LEGO/Nokia 4x4x4 Решатель кубика Рубика | |
Android на базе ARM LEGO MultiCuber 777 | Дэвид Гилдей (главный инженер ARM) | 2010 | 7x7x7 | , основанный на таблицах, способный решать кубы любого размера. | 40 минут для 7x7x7 | (приложение Java), LEGO MINDSTORMS NXT, вертикальный рычаг с шарниром по оси X и клеткой, вращающейся по оси Y. (3 степени свободы) | Видео решения 7x7x7 | Сообщение в блоге Дэвида |
Android Megaminxer на базе ARM | Дэвид Гилдей (главный инженер ARM) | 2010 | Мегаминкс | собственный табличный алгоритм создателя | 8 мин | (приложение Java), LEGO MINDSTORMS NXT, вертикальный рычаг с шарниром по оси X, вращением по оси Y и клеткой с вращением по оси Y. (3 степени свободы) | Видео решения Megaminx | Сообщение в блоге Дэвида |
Робот Руби | Дэвид Бейн, Ричард Бейн, Дэниел Первис, Джаррод Бойес, Мириам Паркинсон и Джонатан Голдвассер (Технологический университет Суинберна) | 2011 г. | 3x3x3 | Коциемба | ~10 с (включая осмотр) | Два перпендикулярных плеча (4 степени свободы) | Статья на сайте Swinburne Статья из The Age | |
Куб Штормер II | Майк Добсон и Дэвид Гилдей | 2011 г. | 3x3x3 | Двухфазный алгоритм Дэвида Гилдэя | (неофициально) лучшее 4,762 с, среднее ~ 5,9 с (200 решений) | LEGO MINDSTORMS NXT и смартфон Samsung GALAXY S II. Четыре ортогональных поворотных рычага (8 степеней свободы) | CubeStormer II (видео на YouTube) CubeStormer II — Лучше увидеть (видео на YouTube) Это УДИВИТЕЛЬНО! CubeStormer ll бьет мировой рекорд на ARM TechCon 2011 (видео на YouTube) | CubeStormer II — Дэвид Гилдей и Майк Добсон — ARM TechCon 2011 (видео на YouTube) Сборка кубика Рубика — ARM TechCon 2011 — Дэвид Гилдей беседует с Томасом Рокицки (видео на YouTube) Мировой рекорд Гиннеса: 5,270 с, установленный 11 ноября 2011 года на Wired.co.uk (статья и видео) |
МайндКубер | Дэвид Гилдей | 2011 г. | 3x3x3 и куб пустоты | 9-ступенчатый стол с приводом | 1 мин 55 с (2 мин 30 с с опубликованным ПО) | , собранный всего из одного набора LEGO MINDSTORMS NXT 2. |