Стальной манипулятор HEXAPOD

    image

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

    Основной уклон на данном этапе был сделан в сторону аппаратной составляющей и не очень сложной программной части. В будущем планируется использовать BeagleBoard-xM, организацию автономных режимов работы и минимальную обработку видеоданных. Заниматься всем одновременно физически не хватает времени. Это мой первый опыт в робототехнике, поэтому некоторые аспекты устройства продумывались и подгонялись уже по ходу его реализации.

    Предпосылками для создания манипулятора являлся, ставший культовым, анимационный фильм Ghost in the shell. Вышедший практически два десятилетия назад этот фильм произвел неизгладимое впечатление на многих, и на меня в частности. Спустя годы, приобретя определенный уровень технических знаний, располагая временем и некоторым количеством свободных средств, я решил реализовать конструктив из области робототехники.

    Изначально оговорюсь, что в моем личном представлении каноническое понятие «робот» неотъемлемо связано с автономными алгоритмами работы. Так как данное устройство не может функционировать (на текущем уровне программного обеспечения) без участия человека, то в текущей статье будет использовано определение «манипулятор».

    В качестве изначальной конструкции был выбран один из открытых проектов с сайта grabcad.com. Было это относительно давно, еще до повального интереса к подобным шестиконечным устройствам. Поэтому выбор из существующих открытых проектов на тот момент был не велик, а разрабатывать свою первую робототехническую конструкцию подобного уровня с нуля было весьма затруднительно. Проект был доработан в сторону уменьшения веса конструкции и упрощения краевых линий деталей. Ниже приведен изометрический вид манипулятора в программном продукте SolidWorks (одна из предпоследних версий модификации; самую последнюю, по прошествии стольких лет, найти так и не получилось):

    image

    В качестве материала манипулятора изначально планировалось использовать алюминий. Но найти такую возможность в рамках моего периферийного города на тот момент так и не получилось (возможно, спустя годы, что-то и поменялось в этой области, однако, сомневаюсь). На помощь пришло наследие ушедших времен – остатки корабельной углеродистой стали и возможность плазменной резки по оной. К тому же в качестве исходных данных подходил проект из SolidWorks 2007, что упрощало подготовку к изготовлению. Толщина материала – 2мм. Изготовление конструкции из оргстекла или пластика было возможным, но изначально не рассматривалось, т.к. желание сделать манипулятор из металла преобладало над здравым взглядом на вещи. Некоторое время спустя детали были получены (извиняюсь за качество, некоторые фотографии в статье сделаны стареньким телефоном):

    image

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

    Спустя время я вновь вернулся к манипулятору, и начал продумывать систему питания, устройства связи, выбирать сервопривода и управляющую электронику. Исходя из желаемого подхода к реализации, было предположено, что конечный вес будет весьма существенным, поэтому сервопривода нужно было выбирать с некоторым запасом по усилию. Однако стоимость так же играла весомую роль. Исходя из соотношения цена/качество, были приобретены сервопривода HK15328A, имеющие металлический редуктор, двойной шарикоподшипник, латунные втулки, усилие 12.8 кг на см., при напряжении 6.0 В., вес 58 грамм. Качество изготовления терпимое, хотя отсутствуют какие-либо пылезащитные прокладки, управляющая плата свободно болтается внутри корпуса, выводы проводов не загерметизированы, смазка в половине из заказанных приводов практически отсутствует, при длительной нагрузке присутствует незначительный нагрев. Все вышеперечисленное компенсируется стоимостью привода ~7$. Было заказано 18 приводов, все были пересобраны, смазаны графитовой смазкой и проверены под нагрузкой. За длительное время эксплуатации ни один из оных не вышел из строя. Ниже приведено фото внутренностей сервопривода HK15328A:

    image

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

    image

    В качестве элемента питания был использован литий — полимерный аккумулятор 12.6 В., 9800 мАч., 360 грамм. Аккумулятор состоит из 3 элементов, соединенных весьма дешевым тонким проводом, контроллеров заряда для каждого из элементов, штекером зарядки и переключателем:

    image

    Контроллеры заряда также ограничивали отдаваемый аккумулятором ток в 1А. В качестве зарядного устройства планировалось использовать iMAX B6, поэтому контроллеры заряда были сняты, а проводники, соединяющие элементы, были заменены. Так же были выведены проводники от каждого элемента, для возможности сбалансированной зарядки аккумулятора. Из преобразователей напряжения были доступны DC-DC Turnigy UBEC-15A, DC-DC Turnigy UBEC-7.5A, DC-DC Turnigy Micro UBEC 5V/3A. Первые два используются для питания сервоприводов, последний преобразователь – для питания управляющей электроники.

    В роли управляющей электроники было принято использовать весьма распространенный проект от фирмы LynxMotion – SSC-32. Так как на руках имелась плата робо-контроллера MRC28, взятая в свое время с сайта RoboZone.su, было решено отталкиваться от оной. На том же сайте была найдена плата расширения для MRC28 под проект SSC-32:

    image

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

    image

    Для нижнего крепления конечностей использовались маленькие подшипники, снятые с японских шаговых двигателей (разборка старых японских принтеров) и установленные в металлическое крепление. Для максимально надежного контакта использовался клей Loctite 480. Для небольшого зазора между подшипником и нижней частью каркаса использовалась металлическая шайба. Винт крепления М5:

    image

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

    image

    Общий конструктив одной конечности приобрел следующий вид:

    image

    Для связи манипулятора с ПК использовался Bluetooth-модуль HC-05 и Bluetooth-адаптер Class 1. Для передачи видео использовалась самая простая китайская беспроводная аналоговая камера 2.4 GHz с приемником, подключенным к ПК через USB ТВ-тюнер EasyCAP. Разрешение изображения 720x576. Для управления манипулятором был приобретен беспроводной геймпад SpeedLink STRIKE FX.

    image

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

    image

    Для крепления аккумулятора (и всей управляющей электроники, крепящейся к нему) к корпусу манипулятора была организована алюминиевая скоба.

    image

    Ниже приведена фотография фронтальной стороны манипулятора:

    image

    С тыльной стороны манипулятора располагаются разъемы включения и зарядки аккумулятора:

    image

    Заряд аккумулятора производится внешним контроллером iMAX B6, установленным в сбалансированный режим заряда, и блоком питания RXN-305D:

    image

    После прошивки контроллера, установки всех необходимых модулей и калибровки конечностей манипулятор приобрел окончательный вид, приведенный ниже:

    image

    Конечный вес манипулятора составил ~ 3кг. Для поворота камера была установлена на сервопривод MG995. Время работы от одного заряда аккумулятора ~ 40 минут. Видеосигнал свободно пробивает 3-4 железобетонные стены. Дальность связи на открытом пространстве ~ 30 метров.

    Программное обеспечение для ПК было разработано в Microsoft Visual Studio 2008 и представляет собой функционал управления, калибровки и отображения видеоданных. Программа позволяет управлять как отдельно взятым сервоприводом, так и группой – суставами.

    image

    Все используемые в алгоритмах параметры выведены на графический интерфейс. Предусмотрено сохранение/загрузка данных калибровки для каждой конечности. Для получения видеоданных с ТВ-тюнера использовался DirectShow (попытки получить картинку по средствам OpenCV не увенчались успехом). Так же была необходима установка DXSDK_Jun10, и подключение к проекту библиотеки работы с графикой gdiplus. Виртуальный COM-порт, реализованный через Bluetooth, адекватно заработал с китайским Bluetooth-адаптером лишь при помощи библиотеки SerialGate.dll (вероятнее всего проблема в драйверах или адаптере, но экспериментировать с другими адаптерами/драйверами не стал). Для работы с геймпадом (HID-устройством) были подключены библиотеки hid.lib, hidpi.h, hidsdi.h, hidusage.h.

    image

    Для определения значений, используемых клавишами геймпада, был реализован дополнительный программный модуль:

    image

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



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



    Примерная стоимость всего комплекта ~400$.

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

    Спасибо за уделенное внимание.
    Поделиться публикацией

    Комментарии 26

      +9
      А кроме самого процесса была ли еще какая-то дополнительная заинтересованность? Какие-то дополнительные цели? Что будет с судьбой этого манипулятора?
      *кстати, всегда думал, что манипулятор — это кто-то или что-то способное чем-то манипулировать, какими-то дополнительными объектами.
        0
        На него еще маленькую стереокамеру повесить и будет отличная платформа для экспериментов.
          0
          И щипцы мины разминировать =)
          +1
          Дальнейшая судьба этого манипулятора — быть носителем для BeagleBoard-xM, на котором будут отрабатываться автономные режимы и прочий функционал, описанный выше в статье.
            +2
            Судя по видео, алгоритмы и математика хромает (каламбур, да).
            Иногда ноги проскальзывают по полу, хотя имея шаговые двигатели можно позиционировать очень точно и двигать с разной скоростью чтобы точка опоры была неподвижна относительно пола.

            А так ОЧЕНЬ круто!
              +2
              Там не шаговые двигатели а обычные DC двигатели. Обратная связь потенциометром.
              Внутри каждого двигателя свой контроллер. Вот он то и задает динамику движений.
              По уму его бы выкинуть и управлять двигателями напрямую. Вот тогда бы робот начал бы бегать!
              0
              А сколько времени ушло (всего, на железо, на софт)?
                0
                Сложно сказать. Делалось все промежуточными этапами, когда появлялось свободное время. Если прикинуть — месяца 3-4.
                +10
                Теперь пора за натурные размеры диаметром 2-3 метра, и уже можно ставить боевые задачи.
                  +1
                  Штука, конечно, невероятная получилась
                    0
                    Модель SolidWorks не выложите?
                      +1
                      Вечером выложу на Github.
                      0
                      Отличный проект, очень круто! А не было мыслей использовать для управления RC-аппаратуру?
                        +1
                        Было такое желание, но стоимость хорошей RC-аппаратуры его быстро отбила.
                          0
                          Хорошая — согласен, стоит недешево. Но есть, например, «народная» Turnigy 9X. Сам недавно развлекался с прикручиванием радиоуправления к роботу, получилось как-то так. :)
                        0
                        Мы с сыном неистово плюсуем!
                          +1
                          Ходить уже умеет. Пора учить его танцевать ;)
                            0
                            А какая максимальная скорость передвижения? Вроде пока не очень шустрый, верно?
                              0
                              Да, пока передвигается не совсем уверенно и быстро. Алгоритмы передвижения будут реализованы более грамотно и вероятнее использоваться более шустрые привода.
                              0
                              Здравствуйте. Скажите есть ли принципиальное различие с этим проектом — habrahabr.ru/post/225845/
                              Не планируете ли прикрутить к нему ROS? www.ros.org/
                                +2
                                Различия, конечно же, имеются. В конструктивную реализация я не углублялся, но вот программная часть автора указанной статьи выше всяких похвал! Я так же планирую использовать именно ROS. Только вместо BeagleBone будет использоваться BeagleBoard — xM.
                                0
                                Основательный подход. Вот как Gits на людей действует!
                                  0
                                  Выглядит грозно:)
                                  Похож на ходилку из red faction armageddon, только той лап не достает.
                                    0
                                    Бегать ему наверно удобнее, а значит быстрее, боком?
                                    типа как краб :)
                                      0
                                      выглядит круто. интересно какова живучесть в боевых условиях такой штуки размером порядка метров, кажется что повыше должна быть чем у колесной техники
                                        0
                                        «Мозг» знает на какой высоте и где находится нога? Очень часто делаются многоножки без мозгов, просто перебирая конечностями по круговому движению, но это выглядит как подпрыгивание, никакой плавности движения корпуса даже по ровной горизонтальной поверхности.

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

                                        Самое читаемое