Как стать автором
Обновить

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

Почему именно хексапод?
Он же очень энергозатратный, программируется тяжело (6 лап, каждая сама по себе).
Можно было начать с 4х колесной машинки. Мало проходимости? Примитивный до безобразия RHex вытворяет такое, что даже и не поверишь (например, бегает на 2-х лапах-колесах вертикально).
Хексапод именно потому, что хотелось попробовать программирование инверсной кинематики. Чем он лучше машинки — может взбираться на ступеньки. Еще можно подойти к препятствию и оттолкнуть его передней лапой в сторону, или поднять туловище повыше и переступить.
Но если говорить честно — я уже раз десять пожалел, что не выбрал гусеничную платформу. Когда не надо тратить энергию на просто стояние. Да и скорость, как видите по видео, у любого колесного шасси была бы быстрее.
Но как показал опыт — при прекращении подачи управляющего шима на сервомоторы или просто выключении питания — робот не падает. Просто продолжает стоять в той же позе, как на последней картинке — она не особо затратна по усилию на редукторы.
Добавьте слабые пружины, чтобы компенсировать вес. Тогда стоять будет без затрат энергии, а бегать — смотря как запрограммируете. пружины в прнципе там тоже должны помочь, если проводить аналогии с животным миром и функцией связок.
пружины оказались не нужны, сами сервомоторы в состоянии покоя держат его на весу за счет редукторов — серв не так легко провернуть, и энергию можно подавать только когда надо двигаться. А по поводу скорости — конкретно эти сервомоторы «Turnigy™ TGY-S4505B Dual Bearing Analog Servo 4.8kg / 0.10sec / 40g» не успевают поднимать и опускать ноги намного быстрее из-за инерции. Можно попробовать заменить их на аналогичные цифровые, но 20 тяжелых цифровых сервомоторов у меня уже валяются, и каждый такой эксперимент выходит в 100долларов. Проще переставлять по 2-3 ноги одновременно, но я пока не продовал.
Скорее всего вы правы, редуктор «съест» всю энергию, запасенную пружиной при сгибании ноги. Если был бы прямой привод, с пружинами можно было бы двигаться очень быстро и экономично, преодолевая только сопротивление воздуха и немного трения в шарнирах. Собственно, так и сделали робота-«гепарда» (когда то была статья на хабре), который ставил рекорды скорости. Но прямой привод для хобби-робототехники пока что сильно сложная штука, думаю ещё пару лет надо подождать.
Мне кажется, экономия на пружинах поддерживающих тушку будет скомпенсирована повышенным током на преодоление их сопротивления при движении
«деньги, которых мало, и руки, которые кривые»
Я увидел только обход второго препятствия =)
На написание статьи меня подтолкнули комментарии отсюда: https://geektimes.ru/company/intel/blog/275028/
Где было мнение о том что для самодельного робота меьнше чем в 1000 долларов на детали уложиться не получится.
Вы знаете как сделать еще дешевле? Я рассматривал так же вариант с HexyHexapod но он совсем мелкий, и в него просто сложно засунуть что-то кроме батареек
Я хотел бы в первую очередь извиниться за огромное количество опечаток в тексте, и добавить максимально полный прайс по деталям
Сразу же уточняю, что многое из этих деталей заметно отличается по цене от того что я брал

1) комплект железяк — 110.99$ (я выбрал тот где была робоклешня в комплекте, и пожалел, так как ее качество оставляет желать лучшего и лучше обойтись без нее), сейчас на алиэкспрессе нашлось за 65 долларов и беспатной доставкой
2) сервы Turnigy™ TGY-S4505B Dual Bearing Analog Servo 4.8kg / 0.10sec / 40g — 18 штук 110 евро
3) мелкие поворотные сервы для камеры — 5 штук за 10 баксов с али (шли одним комплектом)
4)крепежи для батареек — около доллара
5)контроллер заряда и повышатель напряжения в сумме 60 центов
6) распберри — 22 евро
7)камера около 20 евро, потерялся чек)
8)Шим контроллеры — 5.22$ x2
9)модуль gy87 — гироскоп, компас, акселерометр, барометр, термомет — 7 долларов, в последствии был заменен одним компасом за 2 доллара

Аккумуляторы уже не припомню по чем брал, литиевая батарея от старой мобилки, а возможность попечатать на 3д принтере коллеги — бесценна. На нем были изготовлены корпус для распберри, сервоконтроллеров и поворотный механизм камеры, но тут при отсутствии 3д принтера можно выкрутиться — у кого на что хватит фантазии. Я сперва исрользовал оргстекло, но из-за кривизны рук оно постоянно трескалось и ломалось.
> робот смог встать на ноги только используя минимум 10 Амперный станионарный БП, а никаких батареек ему не хватало
Возможно имело смысл с хоббикинга вместо новой партии серв заказать LiPo батарею. Для модельного лития 10А — вообще не ток.
Согласен. Следующий намеченный аппаратный апгрейд это как раз литиевая батарея.
Аккумулятор 18650 вам в помощь. Я на своем 4WD роботе быстро перешел с обычных аккумуляторов типа пальчиковых батарей на 2x 18650
18650 штука хорошая, но для токов в 10A лучше все же взять модельный LiPo.

Добрый день! Очень любопытно.

Увидел свой путь, но наоборот :-).
Я немного боле года назад начал делать колёсного робота.
Сначала казалось, что нужна многоядерная плата. Купил двухъядерную Banana Pi.
Первым ударом был ультразвуковой датчик. Я не мог предположить, что Linux с PREEMPT RT вообще не подходит для таких вещей.
Датчику нужно на одну ногу подать 10 микросекунд для запуска, а на второй ноге ждать пока сигнал станет ровен нулю. Эти вещи делать НЕЧЕМ!!! Конечно народ к Raspberry Pi подключает такие датчики и жалуется, что они не точные. Однако дело вовсе не в датчиках.
Приобрёл STM32 Nucleo-64 и подключил 10 датчиков через MCP23S17. Аллилуйя! Всё идеально. Однако к тому времени поменял платформу. Теперь было нужно 4 ШИМ и 4 энкодера (моторы с датчиком Холла). 64-х ног Nucleo-64 категорически не хватало. И тут появились STM32 Nucleo-144. Я сразу себе приобрёл с новеньким Cortex-M7. А он по USB подключен к Banana Pi (можно безболезненно на Raspberry Pi заменить).…

Потом узнал, что многие производители SoC дополнительно встраивают ядра Cortex-M (или собственные, например, в BeagleBone Black) для выполнения на них Real-Time OS.

Да, обычный контроллер в таких делах как замер испульсов ничем не заменить, и я сейчас как раз верчу в руках Ардуину мини, чтобы повесить ее на i2C а на нее ультразвуковой дальномер и использовать АЦП для контроля уровня заряда батарей.
А зачем, собственно, заменять банану на распберри? Если для подключения камеры, то мне кажется USB веб камера будет намного удобнее в плане интерфейса с OpenCV.
Это я чисто гипотетически предполагаю возможность лёгкой замены, если вдруг чего. Пока до камеры не дошел. Долго ещё идти :-)
RPi3 же с WiFi и Bluetooth вышла. Может быть проще её купить, чем отдельно USB-свистки.
Я ориентировался по потребляемому току- хотелось получить автономную конструкцию. У распберри А+ рекорд — 150мА, 2й распберри — 300, а вот у коллеги вчера на столе лежал odroid C2, запитанный от БП с амперметром, и на амперметре я видел 550мА. Интересно как с этим у банана.
У меня самая первая плата. Сам не измерял, но верю во этому: http://www.bananapi.org/2014/06/measure-power-consumption-of-banana-pi.html
А по поводу Wifi — 150мА это с Wifi, 2мя сервоконтроллерами, гироскопом и компасом. Они запитываются от Raspberry PI. Но вот такой мелкий WiFi работает не очень хорошо. По тестам большой USB свисток TPLink выдавал куда лучший пинг и скорость передачи в одной и той же сети. Когда я не смог добиться хорошего ФПС при стриминге видео, а потом взял у коллеги его большой Wifi адаптер — скорость волшебным образом выросла в несоклько раз и даже задержка видео пропала.
Думал. С самого начала. Сперва думал вывести агалоговый выход, но всё встало на 18 канальном АЦП. Понятно, что можно, конечно, взять 3 atmega16, но это показалось чересчур хлопотно. Потом нашел http://www.openservo.com/ — проект сервоконтроллера, управляюшегося по i2C, умеющего говорить свое положение и даже, кажется, температуру сервомотора. Просто шикарная идея, особенно остро стоявшая когда я понял что у меня есть 20 ненужных сервомоторов, которым было бы неплохо допилить электронику, чтоб сделать их слабее. Но проблемы такие — где купить их плату — непонятно, сделать самому — она 4х слойная, спроектировать самому — долго. А так, конечно, было бы удобно протянуть одну шину i2c ко всем моторам цепочкой.
Всегда хотел сделать робота. Только вот не разбираюсь в этом вообще. Не подскажете с какого робота лучше начать новичку? есть ли какие то полезные ресурсы?
НЛО прилетело и опубликовало эту надпись здесь
Я согласен, мне и самому хотелось бы сделать еще проще и быстрее, но пока это самый быстрый вариант который я знаю.
Вам может быть стоит посмотреть на HexyHexapod — его продают собранным,, достаточно вставить батарейки и можно начать что-то делать. Да и цена выходит даже дешеле чем тут. Возожности, жалко, не те.
А по моему рецепту — запаяно 6 проводов, в общей сложности. Пусть будет 2 часа. Их видно на фото, выходяшими из распберри. Сервмоторы все вставлены в разъемы. Еще парой припаян контроллер зарядки батареи. Сама отверточная сборка корпуса первый раз заняла около 3-4 часов. ( с деталями не пришло ниаких инструкций и руководствоваться пришлось фотографиями готовых роботов) Я бы сказал что за пол дня всё можно скрутить в кучу. если бы не 4 детали распечатанные на 3д принтере. Они-то за пол дня тоже напечатались, но 3д принтер пока есть не у всех, и смастерить самостоятельно крепежи, чтоб описанные платы прикрутить к корпусу таки займет какое-то время. А если притнер есть, то в итернете можно сразу же найти готовые модели. Вот, например, крепеж камеры image
Когда то игрался с созданием хексапода и его управлением…

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

Упершись ножкой в препятствие серва говорит хрусть-хрусть и срезаются зубцы шестеренок (испортил 3 сервы в результате).
Конечно, для этого нужны определенные условия и вероятность этого события не высока. Но она есть. Особенно, когда хексапод на автономном управлении. Застрял и… пытается двигать лапками без шансов сдвинуть корпус.

И использование Малины для управления… сомнительный выбор. Автономность сильно снижается (в режиме ожидания) да и плохо подходит для управлению железом в режиме реального времени… Лучше уж взять нормальный контроллер управления железом (ARM Cortex M3..4).

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

Можно попробовать вначале в эмуляторе (я использовал Java 3D библиотеки), прежде чем тратится на физическое воплощение.
Спасибо за предупреждение, постараюсь всячески избегать такого финала. Пока перебираю варианты дальномеров, чтоб установить параллельно камере и строить карту препятствий, Потом наверно есть смысл мерять ток на сервомоторах. Про дальномеры пока знаю лишь 3 варианта
-ульразвуковой
-лазерная указка параллельно камере(мерять расстояние от центра камеры до красной точки впереди)
-раскачиваясь влево-вправо сделать 2 кадра и построить карту глубины из стереоизображения

Интересно, есть ли какой-то дешевый вариант лазерного дальномера?
-ульразвуковой

Самый простой вариант.
Делал с круговым обзором. Дает довольно четкую картинку (прямо на экранчике на роботе).
Вот здесь наверное должно быть видно. Правда на этом виде в режиме прямого управления ездит. Но делал и пробовал и автономный режим перемещения. https://www.youtube.com/watch?v=iq8M-esM4QQ

Интересно, есть ли какой-то дешевый вариант лазерного дальномера?

Лазерная указка или, что лучше, лазерная линия. Только не параллельно камере, а вынесенная в сторону на заведомо известное расстояние и с определенным углом относительно оси камеры.
Можно еще и не фиксированный угол, а лазер на шаговик. тогда вообще 3D сканер получится.
Малина вполне справится с расчетами. Они не сложны (простая геометрия и пред рассчитанные тангенсы.).

На Малине не пробовал, но на Samsung S5 обсчет кадра через rederscript занимает 40ms на все (+ время на получение bitmap RGB в 50ms * 2):
  • снимок без лазера (можно без этого, но выделить лазерную линию при естественном освещении довольно трудно)
  • включить лазер + снимок с лазерной линией.
  • Вычесть 2 кадра (лазерная линия становится контрастней)
  • Выделить линию (координаты x,y в px на снимке) и рассчитать расстояние в mm до каждой точки линии (простейшая тригонометрия).


-раскачиваясь влево-вправо сделать 2 кадра и построить карту глубины из стереоизображения

Медленна малина для обработки изображения. Пробовал в системе видеонаблюдения делать обработку изображения в OpenCV.
Не для реального времени. Ну разве что если робот будет двигаться ооочень медленно и таскать за собой тележку с аккумуляторами для обеспечение Малины.
На Малине не пробовал, но на Samsung S5 обсчет кадра через rederscript занимает 40ms на все (+ время на получение bitmap RGB в 50ms * 2):


Не будете ли добры поделиться фотографиями, ссылками или кодом? Стало реально интересно. Инструкция подробная, но хотелось бы посмотреть на готовый результат.
Готовый результат (статью) выложу, когда закончу этот проект (3D сканер на базе телефона). Закончу… соберу фотографии, выложу видео и исходники на GitHub. В принципе, немного осталось…

Но вот как, например выглядит расчет координат по точкам выделенной лазерной линии (кусочек файла с renderscript):
// screenAngleCoefficientW = ConfigDDD.cameraViewWidth / ConfigDDD.cameraViewDistance;
// tangentScreenW = tangentScreenCoefficientPerPixel * (sreenPosW - screenWidth / 2);
double tangentScreenCoefficientPerPixel; // = (screenAngleCoefficientW / screenWidth)
double tangentLaserValue;
double laserGreenL, laserRedL;

float3 __attribute__((kernel)) getGreenLaserPointsCloud(float3 in, uint32_t x) {
  float3 out;
  short *p = (short*)rsGetElementAt(gGreenLaserPoints, x);
  short sreenPosW = p[0];
  if(sreenPosW < 0) {
   out.z = -2; out.x = 0;  out.y = 0;
   return out;
  }
  short sreenPosH = x;
  double tangentScreenW = tangentScreenCoefficientPerPixel * (sreenPosW - halfScreenWidth);
  out.z = laserGreenL / (tangentLaserValue + tangentScreenW);
  out.x = out.z * tangentScreenW;
  double tangentScreenH = tangentScreenCoefficientPerPixel * (sreenPosH - halfScreenHeight);
  out.y = out.z * tangentScreenH;
  return out;
}

ну что бы не было сомнений, что я этим плотно занимаюсь…
Да я ж не ставил под сомнение… просто сам пока только начал знакомиться с OpenCV, и пока учусь по чужим примерам. Было бы очень здорово приделать лазерную линию к сервомотору или шаговику и получить 3д сканер. Жду Ваш проект на гитхабе)

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

Есть китайские дешевые мини LED проекторы. Но в нижнем ценовом диапазоне «карманных» проекторов (размер матрицы для проецирования 480 x 320..320x240 и 100$) сотые mm не получить. Это легко считается. Даже mm не получить…
Ну и в первую очередь с яркостью у них проблемы. Не только же в темноте робот ездить должен.

Лазер для сканирования (и пр. в обвязке) в общем выйдет немногим дороже таких проекторов (20$ лазер..+ шаговик+контроллер..).
Хотя и существенно медленней. Но и точность повыше и менее критичен к освещению.
А если нужно только дальномер по курсу робота то ультразвуковой датчик ну гораздо проще и лучше. Смысл в лазере и точности < 1mm? Хватить 1-2 см, что дает ультразвук.

Если бы у меня встала задача грубого сканирования помещения с точностью 1-5 см и до 2-х метров, то я бы взял кучку ультразвуковых датчиков (не готовых моделей, а именно излучателей/приемников без обвязки) и сделал бы из них. Ничего сложного разводке платы с накачкой излучателя и ОУ на приемник нет.

Дешево и сердито и по потреблению тока не много. Народ такое на квадракоптеры вовсю ставит.

Это легко считается. Даже mm не получить…

там не сильно высокое разрешение было, но была какая-то фишка. Хитро подобранные паттерны, которые проецировались на объект. Это была не просто сеточка, а последовтельность из сеточек и полосочек с разным шагом. Я видид это только со стороны.
Да в принципе, никакой магии нет. Особенно это ничем не отличается от расчетов по лазерной линии.
Но точность определения координат ограничена как разрешением камеры, так и разрешением проектора/шага лазера/ширины лазерной линии.
Простая геометрия. Паттерны просто позволяет один кадр обрабатывать, получая сразу много данных (точек с заданными патерном координатами). В отличие от лазерной линии, где все что можно снять — это по одной точки на линии.
Выгодно, если обработка (комп) кадра быстрая. За меньшее количество кадров можно сделать полный скан, чем лазером.
>Интересно, есть ли какой-то дешевый вариант лазерного дальномера?
Почитайте эту тему, да и форум вообще полезный: http://roboforum.ru/forum10/topic12095.html
> Лучше уж взять нормальный контроллер управления железом (ARM Cortex M3..4)
Ага. У них гарантированное время реакции на прерывание. И вложенные прерывания…

Было любопытно посмотреть на решения проблемы.
Один человек портировал FreeRTOS на Xen и запустил параллельно с Linux (в Cortex-A7 аппаратная виртуализация).
Есть порт FreeRTOS на Raspberry Pi.
Плату на Cortex-M соединяют с платой на Cortex-A (SPI, USB ...).
Производители SoC на одном кристалле размещают Cortex-A Cortex-M. Это самое правильное и удобное для использования. Эх, если бы знать всё заранее :-), то выбрал бы изначально такой вариант.

на одном кристалле Cortex-A и Cortex-M — это экзотика… (ну где такое в ширпотребе найдешь).

>Плату на Cortex-M соединяют с платой на Cortex-A (SPI, USB ...).
Решение, в котором котроллеру — контроллерово, а высокоуровневыми задачами (распознавание изображения и принятие решения и пр.) занимается другой модуль — это классика, проверенная временем.

>Один человек портировал FreeRTOS на Xen и запустил параллельно с Linux (в Cortex-A7 аппаратная виртуализация).
Все равно на Малине выведенных физически GPIO ножек не хватит для всех задач…

> на одном кристалле Cortex-A и Cortex-M — это экзотика… (ну где такое в ширпотребе найдешь).

Почему? Freescale™ i.MX 6. Много чего на нём есть.
Вот попалось: http://www.udoo.org/udoo-neo/
НЛО прилетело и опубликовало эту надпись здесь
$50-70…
Не получится. Сервомашинку на коленке не сделать.
Основная цена — стоимость сервомашинок. (6*3=18 шт).
НЛО прилетело и опубликовало эту надпись здесь
Шаговые двигатели для автономного робота с аккумуляторным питанием?!!!
Оригинальная мысль…
Но все же осмелюсь предположить, что не сработает.

Единственное преимущество между классическим сервоприводом (а сервомашинка это частный случай сервопривода) отсутствие дополнительных программно-аппаратных схем удержания угла поворота.
А в остальном — сплошные недостатки.

Поверьте, даже 28BYJ48 c редуктором и дохленьким усилием сильно нагревается за пару минут работы.
А уж как греются (радиаторы ставить приходится) NEMA-23 у меня на станке…

Так что вполне можно уложиться.

Пусть, считаем что батареи, корпус (ноги/крепления) все «бесплатно».

Найдете комплект «движетелей» для платформы хексапода с полезной нагрузкой 1 кг (на батареи и пр.) и током потребления, позволяющем хотя бы 30-40 минут передвижения за < $300 — дайте пожалуйста знать…

Только перед тем, как говорить, что нашли, сами проверьте по паспортным данным — точно потянут или нет.

НЛО прилетело и опубликовало эту надпись здесь
Говоря про «нагрев» и «автономность», я пытался намекнуть на такой параметр, как потребляемый ток.
Ну есть еще такой параметр как масса двигателя на мощность/угловой момент (еще один намек).

удержание механикой (червячный привод что ли) это потеря информации о положении через N снятий тока удерживания.

Конечно сработает

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

НЛО прилетело и опубликовало эту надпись здесь
В кладовке валяется 15 штук SG-90 купленных когда то для хексапода (жадность — это плохо… пожалел денег на нормальные).
Из них 3 штуки с выкрашенными зубьями (усилие которое они развивают на грани срезания зубьев с их же пластиковых шестерней).
Еще 5 пошло на пульт управления манипулятором робота (https://www.youtube.com/watch?v=iq8M-esM4QQ).
Больше их ни на что так и не придумал приспособить. Хексапод даже ходил… вот только нагружать его аккумуляторами и доп. оборудованием для длительного автонома не получалось.
400 грамм веса все конструкции — максимум с чем SG-90 справляются. Для игрушки с радиоуправлением хватит, для чего то интересного — нет.
Да и угробив за неделю 3 сервы, решил, что хватит и разобрал.

А 28BYJ48 (как 5V так и 12V) куда я только не пихал (не менее 7 штук)… и прекрасно знаю и скорость и угловое усилие для разных режимов управления шагами. И как они греются при использовании ul2003 в качестве драйвера (ну не делать же для этого убожества нормальный драйвер с контролем по току и ШИМ).

И Вы будете мне таки рассказывать про скорость, ток и усилие на валу 28BYJ48 и SG-90…

И то и другое для хексапода с весом на платформе в 1 Кг просто не подходит.
Для SG-90 велика вероятность выкрашивания шестерней (да и на грани это его усилия), а 28BYJ48 просто не потянет по моменту на валу. Он у него совсем мизерный.

А просто сравнивать SG-90 и 28BYJ48 (ежа с ужом) просто бессмысленно. Они для разных целей.

И это не теоретические рассуждения. А мой личный опыт.
Интересно, а подобие вот такого робота (без прыжков конечно же):
https://geektimes.ru/post/180571/
на шести шаговых двигателях реально сделать?
Думаю даже можно проще: обычные двигатели+редукторы+энкодеры.
Проще потому, что отслеживается угол поворота?
Проще в плане дешевле, да и редукторы могут удерживать положение с отключенным двигателем. А положение ног для такого робота знать нужно обязательно и учитывать это в программе движения.
Про удержание положения я что-то не подумал…
Спасибо.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации