CraftDuino v2.0
  • - это CraftDuino - наш вариант полностью Arduino-совместимой платы.
  • CraftDuino - настоящий конструктор, для очень быстрого прототипирования и реализации идей.
  • Любая возможность автоматизировать что-то с лёгкостью реализуется с CraftDuino!
Просто добавьте CraftDuino!

LEGO Mindstorms. Snatcher. Часть-1

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

Однако на данном ресурсе статьи об этом конструкторе встречаются редко. Скорее всего это связано с высокой стоимостью наборов (от 20 тыс. рублей), не каждый может себе позволить такую игрушку. Ведь на эту сумму можно купить кучу всего (arduino, stm32, куча шилдов и рассыпухи). Мне в этом плане повезло, сначала в университете, а теперь и в школе где я преподаю, этих конструкторов предостаточно.
Комплектация набора

Об одном реализованном проекте я бы хотел рассказать. На просторах интернета была найдена инструкция для сборки робота под названием Snatcher и понеслось… Конструкция робота разработана Лауренсом Валком (Laurens Valk). Робот представляет собой гусеничную платформу с манипулятором, способную передвигаться по заданной траектории, захватывать, поднимать и переносить предметы.

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

Общий вид робота (кликабельно)


Датчик цвета, установленный в клешне


Дальномер, позволяющий роботу определять препятствия


Датчик касания ограничивающий ход манипулятора


Контроллер NXT используемый в наборах LEGO Mindstorms позволяет подключать до 3-х сервомоторов (порты A, B, C). Скоростью вращения каждого из сервомоторов можно управлять, задавая значения от -100 до 100. При этом отрицательные значения означают инверсию направления вращения мотора. Сервомоторы имеют встроенные датчики угла поворота (энкодеры), что позволяет опрашивать их с целью вычисления пройденного расстояния. Точность составляет 1 градус.

Моторы, управляющие движением робота, подключены к портам B и C. Они позволяют роботу двигаться поступательно по прямолинейной траектории (двигатели В и С синхронизированы). Поворот робота происходит за счет увеличения мощности (скорости вращения вала двигателя) одного двигателя относительного другого. Конструкция робота примечательна тем, что один мотор, подключенный к оставшемуся порту A, используется как для открытия/закрытия захвата, так и для его поднятия/опускания. Реализовано это за счет сложной механической части. В связи с этим робот имеет определенные ограничения – например, невозможно раскрыть захват в поднятом состоянии. Подключение к порту A сервомотора, управляющего захватом, обусловлено схемотехникой управляющего контроллера: данный порт способен выдавать больший ток на двигатель, что позволяет поднимать предметы с большим весом.

Поскольку контроллеры NXT оснащены 4-мя входными портами, остается незадействованным еще один порт. В ходе работы было предложено добавить датчик-гироскоп, как наиболее перспективный вариант развития возможностей робота. Датчики гироскопы играют важную роль в современной робототехнике.

Для этого в конструкцию был добавлен датчик-гироскоп компании HiTechnic. Датчик представляет собой одноосный гироскоп. Он измеряет скорость и направление вращения в горизонтальной плоскости. Датчик позволяет измерять скорость до ±360° в секунду. Знак скорости зависит от направления вращения. Частота опроса датчика может достигать до 300 Гц.

Крепление датчика гироскопа


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

Средства программирования
Контроллеры LEGO Mindstorms NXT могут программироваться с использованием как графических, так и текстовых сред разработки. В графических средах программирования программы «собираются» из отдельных «кубиков», каждый из которых представляет набор определенных команд. Графические среды программирования наглядны и очень просты в использовании, что позволяет быстро освоить их человеку с любым уровнем подготовки. Самым распространенным примером подобной среды является среда NXT-G. Однако недостатком графических сред является сложность разработки объемных программ (ввиду большого количества блоков), а также ограниченные функциональные возможности.

Другим типом сред программирования являются текстовые среды. В настоящей работе для разработки программ использовалась среда RobotC – текстовая среда программирования, позволяющая разрабатывать программы для управления LEGO Mindstorms, используя популярный язык программирования Си. Среда разработана в Академии Робототехники Карнеги-Меллона и ориентирована в первую очередь на студентов.
RobotC обладает простым в использовании интерфейсом, а также имеет мощный интерактивный отладчик, позволяющий производить отладку программы в режиме реального времени. Это значительно сокращает время, необходимое для поиска и исправления ошибок в программе. Для выполнения программ, написанных на RobotC, необходимо предварительно загрузить специальную прошивку. Использование данной прошивки позволяет получить доступ к большим возможностям управляющего контроллера, а также увеличить скорость работы программ.

Интерфейс RobotC


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





В следующей статье я опишу как все это работает, а также возможности беспроводного управления роботами на базе Mindstorms.
  • +1
  • 31 мая 2016, 21:00
  • Skyer

Комментарии (0)

RSS свернуть / развернуть

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.