Проект шагающего робота
- Войдите на сайт для отправки комментариев
Вс, 15/11/2015 - 21:38
Приветствую!
Сделал такой проект - http://www.youtube.com/watch?v=MD6YdmacAhI
Ищу идеи для его дальнейшего развития !
Приветствую!
Сделал такой проект - http://www.youtube.com/watch?v=MD6YdmacAhI
Ищу идеи для его дальнейшего развития !
А почто "шагание" делается только одной ногой по очереди? А сразу двумя по диагонали, как у всех животных - не получилось? Для устойчивости можно наклонять его немного вперед на оставшейся паре ног, ну и можно гироскоп прикрутить для контролю устойчивости. Это предложение в плане "куда двигаться". :)
Спасибо за комментарий!
Для того чтобы сделать этого робота я внимательно изучил вот это - http://roboticslib.ru/books/item/f00/s00/z0000016/st027.shtml
То что Вы говорите о животных для меня крайне интересно, но я не смог найти рабочий материал о том как это сделать. Буду признателен если дадите ссылку.
? руками конечно же. Ну и головой тож. :)
Прикручиваете гироскоп и смотрите как бегают роботы-балансировщики о 2-х колесах.. по аналогии регулируете от гироскопа наклон вашего бота на тех ногах, на которых он сейчас стоит, а две оставшиеся - двигаете вперед одновременно, ну или "почти". И так "по очереди": 2 ноги ходят, две - держат равновесие от гироскопа. А за животными .. ну понаблюдайте за своим котом или собакой как они ходят. У них тоже 4 "ноги". Снимите кино и рассматривайте его в замедленном режиме .. много чего "обнаружите". :)
В очередной раз очень познавательно :) Вы слышали что-нибудь о динамическом равновесии ? Погуглите, там не все так просто на самом деле. Вот ели бы Вы нашли статью описывающую методологию шагания с гироскопом где есть рассчеты, выкладки, алгоритм то я бы был благодарен. Я так ничего и не нашел.
Ну .. сейчас у нас задача сделать катающуюся тележку, перевозящую теннисные шарики по лабиринту... надо успеть до 20..25 ноября, к соревнованиям. А там, позже .. тоже займемся ибо "есть интерес" к шагающим изделиям. Описание наших поделок есть тут: http://arduino.ru/forum/proekty/lego-kirpich-iz-mega2560
Там же и буду продолжать ведение истории поделок далее.
Пока у нас небольшая проблема с механикой: самодельные редукторы, те что сделаны не выдают достаточную мех. мощность и либо "не тянут" (червячные - большая потеря из-за низкого КПД червяков) либо медленно едут и ломаются (недостаточная прочность корпуса редуктора из пластика от СД-дисков) .. а покупать леговские "жаба давит" да и не входит "в нашу программу освоения".
Я просто описал подход, который планирую использовать сам в таких поделках:
гироскоп следит за равновесием, и может регулировать оперативно наклон бота для удержания равновесия, пока остальные ноги "шагают". Уже собирали типового робота-балансировщика на паре колес. Думаю даже можно сделать даже что-то "самообучающееся" с эффектом памяти и упреждения потери равновесия. Примерно как сейчас, наш бот пытается "запомнить" лабиринт и уточнить набор движений по нему при повторных перевозках шариков с ростом скорости перемещения: каждый следующий проезд можно делать быстрее предыдущего.
Но у нас "мега" и "автоматное программирование" с отработкой всего что можно на прерываниях (замер расстояний, цвета, пути энкодерами, регулировка скорости моторов и т.д - всё это большей частью на прерываниях, изменяющих состояние нужных конечных автоматов и только) и аппаратном ШИМ .. возможностей экспериментировать несравненно больше. Пока, лабиринт, путь, конечные автоматы и т.д. всё умещается в 4 кила скетча и килобайт оперативы...
Ну попробуйте с гироскопом, расскажете потом что получилось :)
Посмотрел я тему сделать из ардуино лего, мне кажется там очень много вопросов возникает. Я в свое время изучал этот вопрос и литературы нет никакой и у меня идей тоже особо не нашлось. Лего сам по себе громозкий и страшный выходит. Я сторонник специализированных комплектов с минимальной массой и размерами. Вот у меня такой еще есть проект -
http://www.youtube.com/watch?v=wUh0fVf7KjE
Сделано на коленке но можно идею развить и сделать красиво.
Пасибки, интересно. А каким образом сделано управление "усложненным вариантом" так что он покатался и поставил предмет на место или это ручное управление? Не заметил на тележке никаких датчиков.
С лего все на самом деле "не так просто" как кажется. И громоздко. Первая проблема в том, что есть 2 вида лего: обычное и техник. И переходные "балки", которых как всегда маловато. Есть ещё "роботы", но в силу их тяготения к техник отдельно можно не рассматривать. И вот тут засада в том, что система креплений у них принципиально различается, и крепить обычное лего достаточно надежно - "задача ещё та". Именно она "крадет вес". А техник - получается сильно неуклюжим и тоже недостаточно прочен, да и деталек накопить сложнее, а часть специфичных деталек, к сожалению, есть только в наборах Майндшторм, EV3 и им сопутствующим: разные "доп. наборы к". но именно они существенно упрощают задачи сборки "итого" - и это "вторая проблема". Уже задумался: а не склепать ли из второй уны 3D-принтер? Только врядли он сможет обеспечить требуемую точность изделий.
Ну и третья засада - это моторы. Потери мощности в лего соединениях - значительны, вес изделий тоже не мал .. моторы нужны от 500 гр*см, нормально в районе 2кг*см, и это при хороших оборотах ХХ: от 80-100rpm, нормально от 300rpm. Это "на выходе" редуктора. Наши 130-е моторы такую механическую мощность, если и тянут то где-то на пределе габаритов мотора .. пробовали перематывать (ребенок сам перемотал 2шт) .. все равно "маловато будет". Лучшее что пока получилось на сегодня, это останавливающий момент в 1.6-1.9кг*см при токе КЗ в 0.5А/9-11В и оборотах ХХ в 160-180rpm. Это примерно в 1.5-2.5 раза хуже чем моторы Lego EV3: момент в 3-4кг*см при оборотах ХХ в 220rpm с токами КЗ 1.5А/9В.
Но, с другой стороны, для целей обучения и освоения - все-таки, это "лучшее решение", имхо конечно. По Лего проходит много соревнований, оно распиарено и даже изучается в школе, на занятиях по робототехнике, есть соревнования по Ардуино, но они больше "для старших" .. наш пока ходит в кружок с Lego WeDo и занимаемся дома с Ардуинкой постепенно осваивая язык С и уже способен понимать "как" устроены картинки в стандартном программировании Лего. А чуть позже они тоже перейдут на Lego MindStorm и EV3, и это означает, что играясь с лего, даже в разрезе Ардуино дома, он вполне способен общаться со сверстниками на одном языке, что тоже далеко не маловажно.
Мне просто показалось несколько расточительным закупать домой майндшторм. Это надо потратить бюджет в районе 30-50тыс. руб. ибо с дополнениями. А без дополнений, как показывает гугление - это просто игрушка, надоедающая детям в течении 2-6 месяцев. И .. дабы потом переходить на Ардуино или куда ещё .. и выбросить всё это барахло (особенно если оказалось неинтересно!). На сегодня, все наши закупки вытянули менее чем на 12тыс. и это с учетом того, что примерно половину можно было пока и не брать: в частности, набор датчиков 37 в 1 - по сути лежит "без применений", разные реле, Rfid, индикаторы, разъемы, шаговики .. потом конечно пригодится, но сейчас - вот нафиг не нужно. И такого "в запас" получилось тысяч на 5.
А у дитенка есть явный интерес к этой теме, лет так с 3-х. С того самого момента как он в гостях "познакомился" с говорящим японческим роботом на 60 штук зеленых, его тогдашних габаритов и общался с ним часа 3 (ходили за ручку, обменивались апельсинами, что-то там рассказывали друг дружке .. родителям не мешает и ладно) .. так с тех пор периодически и возникает "а я вырасту и сделаю такого робота сам".. так что "шагающие боты" у нас точно впереди. :)
Управление через смартфон :)
вообще говоря для малышей ардуино - слишком сложно. Лего упрощенный адаптированный вариант. Я ориентируюсь на аудиторию от 12 лет. Проекты рисую в автокаре и заказываю лазерную резку. Смотрел шагающих Леговских роботов, с моим не котируются. Они все упрощают. Манипуляторы тоже слишком громоздкие. И все очень, очень дорого.... Я собираю ветку дешевых комплектов для рабочего класса, чтобы не дороже 1000 рублей, стараюсь нести свет в массы ;)
Сложнее - да. Особенно если программировать на "чистом С/С++". Но, "мы пошли другим путем" :)
Каждое устройство - это конечный автомат с заготовленным комплектом "функций". Практически, сильно похоже на картиночное программирование в Лего: программа собирается из таких кирпичиков, разве что без картинок. Возможно "пока". Каждый кирпичик - просто переводит состояние конечного автомата, а исполнение действия - делается скрытно, в loop(), который практически "типовой": перечисление исполнения шага автомата, если "настало время". Просто надо "не забыть" воткнуть в loop() ещё и шаг "этого автомата".
Типа пример:
Все эти "функции" по сути просто вызов одной и той же команды tsc_next(автомат, номер состояния); разве что с "укладкой" каких-то параметров в структуру автомата: скорость, шаг, направление, угол вращения и т.д. Есть чисто вычислительные функции, типа "найти дырку" в массиве расстояний по направлениям и получить "направление" .. но они как раз пишутся мною пока ещё и даются ребенку уже готовыми к применению. :)
Функция tsc_step() тупо исполняет текущее состояние и выставляет время задержки до следующего исполнения. Видоизмененный классический макрос
if( millis() - startTime >= timeout ){ запомни следующую и делай_текущую_команду_автомата; }
, но позволяет "скрыть" исполнение последовательности команд, когда это необходимо. Например "плавный разгон мотора" - последовательное исполнение серии команд по изменению значения аппаратного ШИМ у счетчика с небольшими, типовыми задержками.
.. вполне по силам ребенку и он уже хорошо понимает, что "принципиальной разницы" между картинками лего и написанием названий функций - нет.
Дополню. Само программирование каждого конечного автомата, тоже по сути тривиально: это массив структур из "действия", "следующего состояния" и "времени исполнения" (задержки). Поскольку следующее состояние фиксируется "до" исполнения действия - никто не запрещает изменить как "следующее дейтсвие" так и время исполнения текущего (следующая задержка) вручную в текущем действии автомата.
Выглядит типа так:
Тут выход из состояния 1 и переход в состояние 2 - разгон мотора, происходит за счет смены состояния внутри функции motor_up_forward() по достижению заданной скорости. Она тупо увеличивает ШИМ мотора и смотрит достиг ли он заданного предела.
Состояние 2 - "мотор едет вперед" - пустая функция, с небольшой задержкой. Требуется дабы в loop() опрос автомата происходил с заданной частотой. Его состояние могло измениться внешним автоматом. Так, автомат "узв. датчик" по завершению замеров изменяет состояние своего серво двигателя с "доехал" на "повернись на угол".
Перечисление enum указывает "допустимые" команды, которые можно устанавливать данному автомату.