Первый мой робот quadruped spider

RicardoRossi
Offline
Зарегистрирован: 15.01.2013

Всем привет !

Год назад заинтересовался микроконтроллерами "arduino" и постройкой четырехногово робота-паука на Arduino Uno R3. Интерес возник после чтения различных статей, просмотра видео на портале youtube. Больше всего впечатлили роботы "PhantomX hexapod" и муравей "A-pod", которые переработал парень под ником Zenta (Коре Халворсен) . Первый его робот создан на сервомашинках "dynamixel AX-18" от компании "Robotis", а второй на сервомашинках "Hitec". Эти сервомашинки одни из дорогих. Создавать пробную модель, которую запланировал на базе этих машинок, мне будет не по силам. В качестве сервомашинок выбор пал на "Tunigy TGY-S9010" (13 кг.), заказал шилд dfrobot i/o expansio v 5.0, в дальнейшем будет установлен модуль bluetooth xbee, батарея 7,4v 5100mah,  и SBEC на 20A сила тока при ходьбе будет скорее всего превышать 12А, поэтому заказал с запасом. После просмотра множества картинок и фото, я решил создать робота по своему дизайну. Сделал эскизы. Эти рисунки перенес в чертежи, делал в компасе, что то в солидворксе.

Чертежи -

После выполнения чертежей создал примерную 3d модель. Анимация получилась корявая видео выкладывать не буду.

Запчасти на робота заказывал из Китая. Первая часть деталей пришла в течении 1,5 месяца, а последующие 2 посылки в общем пришли в течение 7 месяцев. Задержка в доставке была из-за сбоя в работе китайской фирмы и российской таможни. В углу слева на фото предварительная сборка робота.

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

Постепенно доделывал детали и собирал робота. Болтики имбусы м3, гайки колпачковые все нержавейка. На фото подготовка к сборке соединения сервомашинки корпуса и бедра.

Вот так выглядит в собранном виде - 

Полностью лапка паука. Болтики имбусы крепления м2 

Корпус, соединения бедра и лапки укреплены. Все трубки из телевизионной антенны. Контроллер установлен на нейлоновых стойках и прикручен нейлоновыми винтами. Под контроллером будет установлен аккумулятор ниже sbec 20A. Получилось все компактно и доступно. Высота от пола до нижней части 4 см.

Планировал вес до 1,5 кг, но получилось с аккумулятором 1,6 кг. На фото ниже вес без акб.

Общий вид. В ходе сборки выявились два недостатка - 1. лапы скользят, 2. соединения под сервомашинкой корпуса отгибаются. Решение второго недостатка есть. буду с другой стороны сервомашинки на станке фрезеровать планки из оргстекла, и через трубку на винты крепить. По первому сомнения либо резину на винты,  либо жидкой резиной заливать кончики.

Вид сверху.

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

Обращаюсь к аудитории помогите пожалуйста с написанием кода. Дайте совет с чего начать.

Всем спасибо. С Уважением Сергей.

 

 

inspiritus
Offline
Зарегистрирован: 17.12.2012

Супер...

программирование надо начинать с двух-трёх сервового манипулятора.

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

А... Далее один такой манипулятор это одна нога Вашего чуда...

 

axill
Offline
Зарегистрирован: 05.09.2011

Зачетный робот! Поздравляю! Пишите о прогрессе

на лапки можно приделать резину sugru.com

RicardoRossi
Offline
Зарегистрирован: 15.01.2013

Спасибо за ответ !

Почитал в этом посте http://arduino.ru/forum/obshchii/prezhde-chem-sprosit-pro-servomashinku-servo-posmotri-tut

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

Посоветуйте как описать для 12 серво., что бы его поставить на ноги. 

Спасибо.

 

RicardoRossi
Offline
Зарегистрирован: 15.01.2013

В этом скетче пытаюсь описать  движения «ЛЕЖАТЬ» - «ВСТАТЬ»:

Правильно ли я понимаю само действие.

1. Выставить сервомашики на позиции в градусах. Робот делает движение  – «ВСТАТЬ» далее делаем паузу в секундах.

2. Начало действия - "ЛЕЖАТЬ" - сервомашинки, которые двигают лапки должны изменить градусы и не доходя корпуса сложиться. Пауза в милисекундах.

3. Сервомашики , которые двигают сами лапки должны приподняться над плоскостью на заданный угол. Пауза в секундах и выполняем обратное действие робот встает.

Что не так ? Помогите разобраться.

#include <Servo.h> // Подключаем библиотеку
 
Servo motor; // Создоём инстанцию нашей сервомашинки
Servo motor2;
Servo motor3;
Servo motor4;
Servo motor5;
Servo motor6;
Servo motor7;
Servo motor8;
Servo motor9;
Servo motor10;
Servo motor11;
Servo motor12;
 
uint8_t servo = 12;   // Пин к которому подключена сервомашинки
uint8_t servo2 = 13;
uint8_t servo3 = 11;
 
uint8_t servo4 = 10;
uint8_t servo5 = 8;
uint8_t servo6 = 9;
 
uint8_t servo7 = 7;
uint8_t servo8 = 5;
uint8_t servo9 = 6;
 
uint8_t servo10 = 4;
uint8_t servo11 = 3;
uint8_t servo12 = 2;
 
 
uint8_t pos = 90;    // Позиции, на которые нужно выставить сервомашинки в градусах
uint8_t pos2 = 100;   
uint8_t pos3 = 80;    
 
void setup(){
 
  motor.attach(servo);     // Указываем к какому пину подключена сервомашинка
  motor2.attach(servo2);
  motor3.attach(servo3);
  
  motor4.attach(servo4); 
  motor5.attach(servo5); 
  motor6.attach(servo6);
  
  motor7.attach(servo7);
  motor8.attach(servo8); 
  motor9.attach(servo9);
  
  motor10.attach(servo10);
  motor11.attach(servo11);
  motor12.attach(servo12); 
 
}
 
void loop(){
 
  // Устанавливаем сервомашинку "servo" на позицию "pos" и удерживаем.
 
  motor.write(pos);
  motor4.write(pos);
  motor7.write(pos);
  motor10.write(pos);
  
}
 
void loop(){
 
В этом месте вот такая ошибка -
 
 
  // Устанавливаем серву "servo" на позицию "pos2"
 
  motor2.write(pos2);
  motor5.write(pos2);
  motor8.write(pos2);
  motor11.write(pos2);
  
  // Увеличивать позицию на 5° через каждый шаг
 
  // После того как позиция превысит 70° установить её на 100°
  
 if((pos+=5)>100) pos=70;
 
  delay(200);
 
}
 
void loop(){
 
 
  // Устанавливаем серву "servo" на позицию "pos3"
 
  motor3.write(pos3);
  motor6.write(pos3);
  motor9.write(pos3);
  motor12.write(pos3);
  
   // Увеличивать позицию на 5° через каждый шаг
 
  // После того как позиция превысит 90° установить её на 80°
  
 if((pos+=5)>80) pos=90;
 
  delay(200);
 
}

 

inspiritus
Offline
Зарегистрирован: 17.12.2012

Картинка низкого разрешения невидно вааще.

лучше текст закопипасьте.

RicardoRossi
Offline
Зарегистрирован: 15.01.2013
Вот такая ошибка
QR4_Robot.ino: In function 'void loop()':
QR4_Robot:69: error: redefinition of 'void loop()'
QR4_Robot:58: error: 'void loop()' previously defined here
QR4_Robot.ino: In function 'void loop()':
QR4_Robot:88: error: redefinition of 'void loop()'
QR4_Robot:58: error: 'void loop()' previously defined here
 
DireSnake
DireSnake аватар
Offline
Зарегистрирован: 15.01.2013

резиновые колбачки одень на концы ног. перестанут скользить.

runikcom
Offline
Зарегистрирован: 03.02.2015

Вопрос к топикстартеру, есть ли возможность получить чертежи по которым выполнялась резка?

annakin
Offline
Зарегистрирован: 01.06.2015

Да если можно чертежи и название заказаных запчастей.

Beg_Rob
Offline
Зарегистрирован: 07.01.2016

У вас есть название запчастей?

kvaDrug
Offline
Зарегистрирован: 02.01.2016

Очень крутая тема, автор все сам смоделировал, детали заказал, респект! Вот только не видно его уже два года, видимо забил :(

felix3001
Offline
Зарегистрирован: 14.02.2016

Конечно забил, после того как понял, что с четырьмя ногами робота будет сложно заставить двигаться . Любые существующие модели имеют как минимум 6. А для 4-х нужна сложная система балансировки и переноса веса, да и конструкция будет совсем другая.

foks13
Offline
Зарегистрирован: 03.08.2016
Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Мои поздравления автору - здорово сделан дизайн и круто что все сделано самим, ну и немного критики:

1. Робот не выглядит настолько большим, чтобы использовать конкретно эти достаточно мощные серводвигатели. ИМХО, вполне можно было обойтись и SG-90 или подобными. Сильно не ошибусь, если скажу что общий вес робота могли выиграть раза в 2 и вопрос недостаточной прочности деталек и креплений отпал бы "сам собой";

2. Зачем на каждую ногу по 3 сервы? При таком дизайне вполне достаточно 2-х. Третья, непосредственно на лапке интересна только для "понтов" - выполнения сложных программно и демонстрационных "танцев пауком" и только. Для хождения она избыточна. Это тоже кстати к вопросу веса и прочности креплений;

3. Использовать УНО или её аналоги для таких роботов - однозначно замыкать программные решения в области эмуляции ШИМ, что сразу же приводит или к необходимости использования библиотек эмуляции или к дополнительному программному геморою. ИМХО, правильнее было воспользоваться вариантом Мега2560 - 15 аппаратных ШИМ и всё становится значительно проще в части пррограммирования.

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

А так, в целом - респект. Очень хорошая работа и ещё раз мои поздравления, особенно если с программированием всё удалось и это явилось причиной пропадания автора (нет вопросов).

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

foks13, вот у вас тоже 12 серв, по 3шт на лапку .. подскажите - зачем по 3? Лапка движется в 2-х плоскостях: вправо-влево и вверх-вниз .. что дает третья серва "вверх-вниз"?

nevkon
Offline
Зарегистрирован: 20.01.2015

Предположу что это нужно для поднятия/опускания тушки робота. Иначе говоря может быть использовано для прыжка если скорости серв будет достаточно.

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Ну .. вот как раз "танцы с бубном", пардон поднятия/упускания тушек я и видел в Сети .. не могу сказать что это "прыжок" .. для реального прыжка нужны иные скорости серв. совсем иные .. раз в 100 больше. :)

foks13
Offline
Зарегистрирован: 03.08.2016

Считаем  от корпуса,

первая - поворот , вторая - высота , третья - вынос ( дальность) шага.  Итого, три плоскости движения (3D)

 

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Третья - избыточна. Размер шага можно регулировать первыми двумя: углом поворота и высотой корпуса. Первым шаг регулируется "явно" - чем больше углы - тем "шире шаг", а вторым - в небольших пределах регулируется как раз "вынос" клешни от корпуса вместе с высотой корпуса. Заданный и фиксированный наклон ноги к полу независимо от положения второй сервы - делается параллелограмным механизмом - просто и дешево.

dronsoft
Offline
Зарегистрирован: 02.06.2011

RicardoRossi. как паук ?

knevech
Offline
Зарегистрирован: 18.01.2017

Доброго времени суток.

Можно скинуть чертежи рами?