Клешня


Решил, тут, построить что-нибуть роботовское из ПКЛа. Долго думать не пришлось – давно хотел манипулятор=)
Сразу оговорюсь — решил ПОЛНОСТЬЮ отказаться от продумывания и делать всё от балды. Чистая импровизация и полнейшее прототипирование мыслепотока=)
Поплатился. И не единажды=\.
Расскажу всё как было со всеми граблями и промахами.

Далее ЗДОРОВЕННЫЙ, ПОДРОБНЫЙ фотоотчёт о постройке + видео испытаний

Cписок основных инструментов:
Фен
Руки,
Отвёртки
Канцелярский нож,
Горячая вода в термосе,
Два толстых стекла (или кусок доски=)
Паяльник/дрель/развёртка/шило (- чтоб отверстия ковырять, можно что-нибудь одно)

Вообще-то фена было целых два – строительный и паяльный, но обойтись можно и обычным феном для волос – только с тонкими насадками надо что-нибудь придумать.

Из материалов только ПКЛ, сервы, провода и разъёмы (ну и CraftDuino =)
(про приёмы работы с ПКЛом, которые придумали, проверили и применили в процессе реализации этого проекта можно почитать здесь)

Поехали!
Прикинув на доске только количество степеней свободы (решили 6 в самый раз будет) и имея лишь смутное представление о том, что буду делать, запарил первую порцию ЧудоПластика=)

Первым делом облепил SG5010, по моему разумению, пригодную для поворота будущей конструкции

Получилось симпатичное увесистое гнездо – входит и выходит=)

Да, также решил, что ничего портить безвозвратно не стоит и старался делать всё безболезненно разборным.
Следом надо было водрузить узел наклона «плеча». Освоив изготовление листов, их резку, гибку и сварку, получил такой вот обрезок пластикового швеллера=)

Подварив заднюю стенку этой рогульки, пристроил её наверх первой серве

В рогульку должна встать серва, являющаяся частью «плеча», приступим к изготовлению кейса для неё

Пластмассовый вал – это конечно SG5010, по размеру (почти=) такая же как MG995 – самая мощная из имеющихся у нас сервомашинок – именно её я рассчитывал установить в плечо.

Поначалу я опасался сильно нагревать лист ПКЛа – чтоб не прилип к серве, чтоб не уползла толщина и т.п. Не догретый лист остаётся немного упругим – при остывании нужны струбцины (или сидеть держать=) а потом уползает размер. В последствии на местах сгиба грел до прозрачности- ничего не липло, толщину выдерживал, размеры получались точь в точь. А сидели очень плотно, как влитые, никакого дополнительного крепежа не понадобилось.

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

Пришло время задуматься над внешним видом будущей руки. Решил, что неплохо будет использовать трубчатые кости «рычаги».
Освоили производство труб=)

Просто труба мне показалось скучной и я решил её немного распялить

На нашем тотемном бутыльке технического спирта=)
Потом приварили к плечевой серве – получилось не очень конично, но достаточно плавно

Команда помогала, охотно отвлекаясь от своих дел на более интересную работу=)

Приварили заднюю ось сервы плеча

Многих попыток стоило проделывание соосного (качалке севы) отверстия в задней стенке=\

ПКЛ мужественно терпел заплавление неудачных отверстий и ковыряние новых=)
Раза четыре =)
Принялись изготавливать локтевой сустав.
С учётом полученных шишек уже более смело заплавил локтевую серву в развёртку кейса

Лепил по SG5010 =/ А ставить рассчитывал MG995
Заблуждение насчёт полной идентичности корпусов стоило переделки кейса – крепёжные лапы металлической модели несколько ниже=(
ПКЛ стерпел и это – там наплавил, тут подрезал:

Входит и выходит. С натягом =)
С локтевой вилкой

традиционно промахнулся=)
Дуем, разгибаем, гнем как надо

Протопим окно в лето во льду пластмассы=)

Привариваем к плечу

Дырку расширим ножом, все обрезки во вторсырьё=)

И придадим плавность линиям

Кейс тем временем abbivan приплавил к предплечью, без конусностей всяких=\

И тут наши ряды расколол спор о том, как делать собственно сам захват.
Попрепиравшись остановились на самой простой и сулящей максимальный профит конструкции. Шестерёнках в основаниях пальцев=)
Выбрали мастер модель

Решив, что изготавливать зубчатые колёса обкаткой будет неспортивно и неточно, остановились на «литье». Главный литейщик abbivan засел за освоение метода.

Весьма успешно=)


По результатам двух попыток получили (разрезанием заготовок) три довольно приличные шестерёнки


Собрав поворотный «стол», «плечо» и «предплечье» в одного уродца покрутили его простейшим скетчем (своп из примеров, разом на все сервы). ВНЕЗАПНО обнаружили, что нижняя SG5010 совершенно не сопротивляется наклону оси. И вообще переворачивается под весом всего этого дела=\
Встала необходимость изготовления какого-нибудь опорного подшипника, ну и подставки заодно.
Опять захотелось прекрасного и округлостей=)
Притащил колпак с балконного фонаря.

И принялся его облеплять. Сначала хотел, чтоб всё было ровно и гладко – обернуть листами. Не вышло=\ А облепил за несколько минут

Пока горячий, водрузил этому снеговику ведро на макушку =) Тем же ведром выдавил из свежераздавленного листа два блина.

По полученной линии легко срезал тюбетейку с этой чудо-каски. На её место вплавил один из блинов и подрезал низ.

Второй блин приплавил к нижней рогульке. Нагрев поверхности которые будут тереться, прижал к стеклу для выравнивания и «полировки»

Получился отличный локатор=)

Нижней серве приделал крылья и закрепил ими в подставке

Вот такая конструкция получилась.

Качалка стоит на винтах (после регулировки дополнительно облепил ПКЛом) в верхней части «подшипника», и притягивается к валу сервы винтом, сквозь отверстие для проводов между рогами (на фотке винт снят)

В сборе:

Для наклона кисти мне ПОКАЗАЛОСЬ будет достаточно MG90 (металлическая серва, чуть более мощная чем MS90s)принялся увлечённо запаивать её в локтевую трубу попутно заужая его для эстетики.

Слепив две качалки получил механизм поворота кисти

И отвлёкся на лепку клешни=)
Решил что захват стоит сделать полым, для облегчения конструкции

Получились не очень симметричные и не очень лёгкие =)

Приделал шестерёнки и после долгих поисков центра — оси

На специально приготовленную кистевую пластину насадил пальцы
И закрепил клёпками

немного подумав, соединил верхнюю часть пальца и клёпку

Вот такая вот получилась загогулина=)

Добавил механизму наклона кисти заднюю ось и вылепил на пластине кейс для сервы поворота кисти. Всё разборное, только MS90s заплавилась наглухо.

Да, мелкие сервы (MS90s, SG90) имеют корпуса из пластика, который очень «любит» ПКЛ – чуть перегрел — зубами отдирать придётся. И с проводами надо поосторожней. Тоже липнут легко.
Следом я ПРЕДПОЛОЖИЛ что на закрытие клешни вполне хватит MS90s, и сделал ей крепёж.

Собрал всё в кучу полюбовался



и принялся делать провода для подключения серв.
Вот такие получились. Кстати, для любителей (вроде меня) закреплять разъёмы на проводах «соплями китайских девствениц» — термоклеем, сообщаю – ПКЛом круче.

Подключили, убрали все провода аккуратненько внутрь. Нарисовали простенький скетч – все на 90 град.
Включили…
ЭТА ХРЕНЬ ДАЖЕ СЕБЯ ПОДНЯТЬ НЕ СМОГЛА =(((((((
Это была засада и мощный пинок АЛЯ-УЛЮйскому подходу к не очень важным делам =\
Рискуя пожечь вообще всё к едрене фене и жукам майским, поднял питание до 7В (для всех установленных серв максимум — 6В).
Паркинсонически дрожа поднялась.
И даже потянула какой-то грузик. Появилась надежда…
Сначала решено было максимально облегчить всё, что выше плеча, и заменить мелкие сервы наклона кисти и сжатия клешни на SG5010 (сжималась слишком слабо)
Дестрой фо криэйшэн.

Новая более короткая и лёгкая труба для предплечья

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

Закрепил серву сжатия захвата на более лёгкой полке, подрезал кейс сервы поворота кисти — оставили SG90s, решили только добавить подшипник (как в основании)

Делаю подшипник

И вплавляю новую серву наклона кисти

Новая кисть в сборе

Угрюмо почерепив над механизмом подъёма плеча решили усилить его установкой дополнительной сервы MG995.Сначала поставил стойки, потом сделал тугой кейс

Стойки наростил до косынок – так жёстче и красивей=)


Вплавленная в плечо серва вертит корпус относительно качалки, а дополнительная – наоборот — качалку относительно корпуса. Короче вертелись они в разные стороны от одного сигнала, пришлось дополнительную инвертировать (в следующий раз расскажу как это=) Синхронизации дополнительной не потребовалось – вертятся слаженно, при закреплённой качалке ничего не трясётся, не жужжит и не греется.
Итого весь обновлённый манипулятор в сборе


Burjui написал скетч (о нём чуть позже) для управления от 6-ти потенциометров.
Воткнули их в макетку, включили – работает!
Но как-то не прикольно. Нет ощущения управления, динамики не хватает=)
Решил, что управление реализую, тоже, какое давно хотелось – типа пантограф, как у ядерщиков и у мужика в большом роботе из «Аватара»=)
Начал лепить «манипулятор манипулятора». Опять без задней мысли=) Точнее опасения были, но проверить их не представлялось возможным=\


Вышла очередная затейливая загогулина

Для тех, кто до сих пор не понял, что это и зачем, не буду расковать интриги=))
Скажу лишь, что ОНО не заработало – не читались резисторы и всё тут, или читались, но частично. Тестер тоже показывал странную хворь всех без исключения потенциометров=\
И тут я вспомнил о своих сомнениях. Ведь по большому счёту резисторы не предназначены для восприятия сколько-нибудь ощутимых нагрузок – как осевых так и радиальных. Выражаясь простым языком – им перекосило валы, внимательный осмотр и расковыривание одного из них это подтвердили=\

Видна вывороченная перекосом вала крышка. Стёрта кондуктивная дорожка – внутреннее колечко проводящего напыления держит контакт с бегунком – видна выработка до текстолитовой подложки.
Пришлось всё опять начинать сначала=(
Пластик то переплавили, а вот 6 резисторов покинули нас безвозвратно.
На этот раз снабдил каждый резистор вот таким подшипниковым узлом

все перекосы и нагрузки будут воспринимать они, передавая на вал резистора лишь вращение.
Заготовку валов катал на тех же свёрлах, которыми потом сверлил «втулки»,

Но подгонять всё равно пришлось. И не всё идеально встало – некоторые вращались потуже, некоторые полегче=\

Вот такой, очередной, уродец вышел

В работе

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

И для более надёжной фиксации предметов, на пальцы клешни натянули по напальчнику=)

Кликабельные картинки:

Вышла прикольная фиговина =) Благодоря скетчу от burjui-я легко откалибровал управление и начал получать удовольствие от управления=)

#include <Servo.h>


struct Joint
{
  uint8_t pot_pin;
  uint8_t servo_pin;
  int pot_min, pot_max;
  int servo_min, servo_max;
  Servo servo;
};

Joint joints[] =
{
  { 0, 2,     // захват
    10, 600,
    0, 180,
    Servo()
  },
  { 2, 3,     // поворот кисти
    0, 1024,
    180, 0,
    Servo()
  },
  { 1, 4,     // наклон кисти
    0, 550,
    0, 180,
    Servo()
  },
  { 3, 5,     // локоть
    350, 950,
    180, 0,
    Servo()
  },
  { 5, 6,     // поворот
    0, 1024,
    180, 0,
    Servo()
  },
  { 4, 7,     // плечо
    0, 1024,
    180, 0,
    Servo()
  },
};

enum { JOINTS_AMOUNT = sizeof(joints) / sizeof(joints[0]) };


void setup()
{
 for (int i = 0; i < JOINTS_AMOUNT; ++i)
  {
    Joint &joint = joints[i];
    joint.servo.attach(joint.servo_pin);
  }

}


void loop()
{
  for (int i = 0; i < JOINTS_AMOUNT; ++i)
  {
    Joint &joint = joints[i];

   int pot_angle = analogRead(joint.pot_pin);
   int servo_angle = map(pot_angle, joint.pot_min, joint.pot_max,
     joint.servo_min, joint.servo_max);

   bool inverse = joint.servo_min > joint.servo_max;
   servo_angle = constrain(servo_angle,
       (inverse ? joint.servo_max : joint.servo_min),
       (inverse ? joint.servo_min : joint.servo_max));

     joint.servo.write(servo_angle);
  }

  delay(10);
}

А теперь всё это в динамике:
Просто тестовые размахивания с суицидом в финале=)

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

Манипулирование предметами

Мысли, выводы ощущения.

Итого работы – две недели
Грузоподъёмность мах 250 гр
Уверенное манипулирование до 200 гр
Вес ПКЛа в манипуляторе 580 гр
Степеней свободы – 6 (поворот, наклон плеча, наклон локтя, наклон кисти, поворот кисти, захват)
Сервомашинок 7 шт. (3 — MG995, 3 — SG5010 1 — MG90s)

Проект получился вымученным и значительно меня утомил. Правда, в основном из-за собственной спешки и ошибок (дурная башка…)
ПКЛ хороший материал, но отказ (умышленный) от использования чего бы то ни было ещё, несколько усложнил задачу=) Некоторые части стоило не лепить, а использовать готовые. Некоторые можно было бы сделать и поизящнее – не полностью раскрыта гибкость материала, хотя потенциал, надеюсь, продемонстрирован – сделать можно всё что угодно=)

Но задача выполнена – получили не отвратительного вида рабочий манипулятор из абсолютно минимального набора материалов с минимальным набором инструментов.

Недостатки клешни на данном этапе –
Не достаточно плавное и отзывчивое управление (в основном из-за заеданий подшипников потенциометров сделанных на скорую руку)
Недостаточная грузоподъёмность и жёсткость (это вряд ли будем исправлять=)

Планы развития – обширные=) На него уже кучу планов настроили, будем на нём отрабатывать и показывать разные штуки.

Далее: Теперь клешня и по Bluetooth


38 комментариев на «“Клешня”»

    • На это применение (выкладывать smd на плату) зреет другая задумка=)

    • Проще?
      Из головы?
      Без инструментов?
      Без чертежей-набросков-продумывания?
      Прям на ходу — что в голову стукнуло, то и сделал?
      Чот не верится=))
      А сколько безвозвратных отходов будет, даже от выпиливания продуманной конструкции?
      Но надёжней, точно, это да=)

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

  2. Недостатки все видно сразу:
    — Я конечно в код не глядел но по общим ощющениям могу сказать следующее (поправьте если я где-то ошибаюсь):
    В тяжелойпромышленности похожий принцип работы использовать не получится т.к. если прикинуть, что серва дает усилие в несколько десятков килограмм, оно просто раздавит деталь, либо разрушит сам механизм «клешни», здесь это сработало только по тому что серва когда стопорится её зубья начинают трещать(это кстати слышно на видео). Нужно это учесть.
    Как я понял, здесь используется обыкновенное пропорциональное управление, а вот если это дополнить до ПИД регулятора то получатся более динамичные движения, мало того можно будет даже координату задавать.
    ИМХО.

    • Масштабировать это «решение» ни в уменьшение(smd-манипулятор) ни в увеличение (тяжёлая промышленность) не собираемся=)
      Да и не планировали — всё это только для развлечения и демонстрации возможностей пластика и машинок=)
      ПИД тут ни к чему.В принципе=)Т.к. его уже реализуют сервы (относительно своего текущего положения и поступающего сигнала). И большей динамичности не получить — сервы просто точно повторяют движения оператора, если махать слишком быстро — не будут успевать — и не из-за отсутствия в коде ПИДа=) — просто у серв, всётаки, ограниченная скорость вращения.
      Правда, это я намериваюсь подработать=)

  3. Ээээ какие редукторы?=)
    Да, кстати, какие бы, не были — во сколько раз усилят конструкцию, во столько раз и затормозят 😉 И ни трёхшаговое управление, ни стартовый импульс не позволят прыгнуть выше заводских характеристик(скорости и динамики) сервомашинки=(

    Не плавность это в первую очередь от заеданий «подшипников» резисторов, ну и от нежёсткости конструкции клешни — раскачивается немного=\

    • в конце заметки указано, что потребовалось всего 580 грамм 😉

    • Согласно объявлению структуры Joint, поле для пина управления сервой servo_pin — второе, так что в объявлении массива нужно смотреть второе число в фигурных скобках: 2, 3, 4, 5, 6, 7. Учите C++ (:

  4. я в програмировании неочень квалифицированый гуру полный чайник, вчера только пришли сервы и ардуино мега, пока что научился ей забавно двигать немного изменив скетч sweep: Р

    • любые практически (1к-100к), у нас все 10к.

  5. Проэкт супер! Хочу тоже заняться.Хотел спросить если вам не трудно скинуть мне на почту схемы спайки и какие платы вы использовали! И рассказать всё поподробней! Зараннее спасибо!)Почта [email protected]

    • Напрямую питать такое количество серв стабилизатор дуины немного не выдержит=)
      Питали отдельным стабилизированным источником, крафтдуина — от УСБ.
      Подробнее:
      Сигнальные выводы серв напрямую в пины дуины. Питания и земли всех серв запараллелены. На фотках видны чёрный и красный провода тянущиеся к блоку питания — он и даёт нужные 5В. Земли блока питания и дуины соединены.

  6. всем привет! пытаюсь повторить ваш опыт (сервы другие) и возникло несколько вопросов:
    1) какие цифры в масиве что обозначают?
    2) при попытке запуска серва колеблется сохраняя определенное положение. на поворот резистора не реагирует. почему может быть такое?
    Спасибо!

    • 1. Это не массив, это структура
      Она объявлена в самом начале скетча и с довольно говорящими именами полей:

      struct Joint
      {
        uint8_t pot_pin; // номер пина для движка потенциометра
        uint8_t servo_pin; // пин для сервы
        int pot_min, pot_max; // min и max значения analogRead-а потенциометра
        int servo_min, servo_max; //min и max углы сервы
        Servo servo;
      };

      да и в каментах выше есть;)
      2.Если скетч использовали из статьи то, возможно, по тому что не так подключили сервы/потенциометры=) Ну и земли обьединили у силового питания серв и дуины? Потенциометры как подключаете — между дуиновскими 5в и GND?

    • Спасибо за скорый ответ! Вроде разобрался. Но возникла новая проблема — пытаюсь подключить серву к стабилизированному блоку питания 1.5-12.0В 500 мА, но серва молчит — никакой реакции. В чем может быть проблема?

  7. Хочу повторить ваш опыт, всю механику уже сделал, а с питанием проблемы. Использую блок питания от розетки на 1000ma. Хватает только на один двигатель при максимальной нагрузке.
    Проблематично использовать 6 розеток. Хотелось бы узнать как вы решили проблему с питанием.

    • А сейчас, кстати, стоит 12в сетевой БП от ноута, от него питается крафтина, а через такую штуку (настроенную на 5В и максимальный ток) — сервы.
      А вот в этом примере мы клешню вообще через LM-ку 5-и амперную питали(то же на 5в настроенную), правда за пару дублей она нагрелась как утюг при небольшом радиаторе.

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

  9. Слушайте ребят огрымные молодцы. Проект суперский. Ну вот и я захотел сделать этот манипулятор. Вы можете мне в вк скинуть подробную инструкцию по установке плат и всего прочего, ссылка-http://vk.com/id231153050

  10. Давно искал информацию как управлять серво моторами при помощи потенциометров больше чем 4шт.
    И вот наконец то нашел ее тут )
    Воспользовался скетчем, соединил все как положено.
    Сервы на отдельное питание + общая земля с ардуино.
    Итог — ардуино нано слетела прошивка (судя по ошибкам и описанию в гугле)
    Переставил все на УНО — 3 серво идеально работают, а 3 дергаются рычат и даже греются. (как это исправить? в чем может быть проблема?)
    Попробывал на УНО подключить серво на 3, 5, 6, 9, 10, 11 — так вот,3 5 6 отлично, а вот 9 10 11 ппц какой то…

Добавить комментарий

Arduino

Что такое Arduino?
Зачем мне Arduino?
Начало работы с Arduino
Для начинающих ардуинщиков
Радиодетали (точка входа для начинающих ардуинщиков)
Первые шаги с Arduino

Разделы

  1. Преимуществ нет, за исключением читабельности: тип bool обычно имеет размер 1 байт, как и uint8_t. Думаю, компилятор в обоих случаях…

  2. Добрый день! Я недавно начал изучать программирование под STM32 и ваши уроки просто бесценны! Хотел узнать зачем использовать переменную типа…

3D-печать AI Android Arduino Bluetooth CraftDuino DIY IDE iRobot Kinect LEGO OpenCV Open Source Python Raspberry Pi RoboCraft ROS swarm ИК автоматизация андроид балансировать бионика версия видео военный датчик дрон интерфейс камера кибервесна манипулятор машинное обучение наше нейронная сеть подводный пылесос работа распознавание робот робототехника светодиод сервомашинка собака управление ходить шаг за шагом шаговый двигатель шилд юмор

OpenCV
Робототехника
Будущее за бионическими роботами?
Нейронная сеть - введение