Модель четвероногого робота на Ардуино - Своими руками
Своими руками

Модель четвероногого робота на Ардуино

Модель четвероногого робота на АрдуиноСвое изделие мастер позиционирует, как “робот для Марса”. Этим обусловлено и передвижение с помощью “щупалец”, и наличие датчиков для анализа атмосферы.

В качестве контроллера для управления роботом мастер использует Ардуино.
Инструменты и материалы:
-Arduino Nano;
-Сервопривод – 14 шт;-Плата сервоуправления PCA9685;-9-вольтовая батарея;-Батарея 3,7 В – 4 шт;
-Крепеж;
-Провода;
-Ультразвуковой датчик HY-SRF 05;-Датчик газа MQ-2;
-Датчик температуры и влажности CNT5;
-Радиомодуль nRF24L01;
-Arduino Pro micro;
-Резистор 100 Ом;-Резистор 200 Ом;-Паяльные принадлежности;-3D-принтер;
Модель четвероногого робота на АрдуиноШаг первый: печать деталей
Первым делом нужно распечатать все детали. Файлы для печати можно скачать ниже.
quadruped-robot_body (2).stlfeet.stlleg.stlhip joint.stlbattery holder.stlelevation for circuit.stlultrasonic sensor part 1.stlultrasonic sensor part 2.stl
Модель четвероногого робота на АрдуиноШаг второй: схема
Есть две модели роботов данной конструкции. Одна модель базовая, на вторую устанавливаются различные датчики.
Мастер постарался сделать робот максимально модульным, чтобы в случае неисправности можно было быстро заменить детали.
Для робота с датчиками нужна дополнительная плата, на которую нужно распаять непосредственно модуль nRF24L01, а остальные датчики подключаются перемычками.

Робот в основном удерживается вместе серводвигателями и соответствующими винтами.
Модель четвероногого робота на АрдуиноМодель четвероногого робота на АрдуиноШаг третий: ультразвуковой датчик
Для обнаружения препятствий на устройстве установлен ультразвуковой датчик, который перемещается по двум осям с помощью двух двигателей.

Чтобы ультразвуковой датчик корректно работал, нужно как можно точнее рассчитать с какой скорость распространяется звук в атмосфере. Мастер включил в код корректировку по температуре. Для этого он использовал функцию, которая показывает скорость как функцию температуры. Строка в коде выглядит следующим образом:
distance_cm = ((0.03316 + temperatureC * 0.00006) / 2) * duration_us2; //sound depending on the temperature
Ультразвуковой датчик будет ориентирован вниз во время бега. При обнаружения препятствия датчик поднимается и сначала высчитывает, преодолеет ли робот препятствие. Если он не может перебраться, он смотрит влево и вправо, чтобы отследить, где больше места для маневра. Затем двигается в сторону с большим пространством.
Модель четвероногого робота на АрдуиноШаг четвертый: датчик газа + датчик температуры и влажности
Датчик газа MQ-2 может измерять концентрацию следующего газа:
LPG – сжиженный газ, который содержится в обогревателях и является легковоспламеняющимся и канцерогенным.
CO – окись углерода, прозрачный, токсичный газ без запаха, который образуется при неполном сгорании, то есть при недостатке кислорода во время сгорания.
Дым – образуется при пожаре.
Модель четвероногого робота на АрдуиноДля отслеживания температуры и влажности на устройстве установлен соответствующий датчик.
Модель четвероногого робота на АрдуиноШаг пятый: кинематика
Кинематика обычно занимается описанием движения объектов. В робототехнике кинематика также играет очень важную роль, поскольку это вопрос описания движения, которое выполняется исполнительными механизмами (например, двигателями). В случае с четвероногим роботом речь идет об описании движения ног.

Для каждой ноги необходимо ввести координаты в программу. Таким образом, нужно вычислить углы для каждой ноги относительно начала координат. Синие координаты показывают, где находится тело относительно начальной позиции. Оранжевые координаты показывают положение ног относительно координат тела. Если есть желтый +50, этот отрезок сделал шаг и в дальнейших вычислениях должен быть рассчитан для x +50. Отдельные координаты ног (оранжевые) должны быть введены в программу, вставлены в программу Arduino.
Модель четвероногого робота на АрдуиноМодель четвероногого робота на АрдуиноМодель четвероногого робота на Ардуино Для преобразования углов в значения ШИМ мастер измерял максимальное и минимальное значение, а затем использовал функции map (). Эти функции выглядят так:
Модель четвероногого робота на Ардуино Показать / Скрыть текст// you probably have to change these values according to your motors
int map_values(int index){
//front right
if(index == 0)
pwm[0] = map(angle[0], 20, 270, 550, 100);
if(index == 1)
pwm[1] = map(angle[1], 35, 325, 100, 680);
if(index == 2)
pwm[2] = map(angle[2], 35, 210, 130, 650);

//front left
if(index == 8)
pwm[8] = map(angle[8], 20, 300, 100, 600);
if(index == 9)
pwm[9] = map(angle[9], 35, 320, 650, 100);
if(index == 10)
pwm[10] = map(angle[10], 45, 210, 650, 170);

//back right
if(index == 4)
pwm[4] = map(angle[4], 40, 270, 180, 650);
if(index == 5)
pwm[5] = map(angle[5], 45, 320, 650, 100);
if(index == 6)
pwm[6] = map(angle[6], 85, 215, 650, 250);

//back left
if(index == 12)
pwm[12] = map(angle[12], 20, 300, 650, 200);
if(index == 13)
pwm[13] = map(angle[13], 25, 325, 100, 650);
if(index == 14)
pwm[14] = map(angle[14], 80, 210, 100, 520);

//ultrasonic sensor
if(index == 7)
pwm[7] = map(angle[7], 45, 200, 100, 600);
if(index == 3)
pwm[3] = map(angle[3], -90, 65, 170, 650);

//return a value
return pwm[index];
}
Благодаря этой функции нужно только ввести соответствующие углы, то есть угол [0] = 200; и программа будет работать.
Модель четвероногого робота на АрдуиноШаг шестой: окончательный код Arduino
Код работает таким образом, что температура, влажность и показания датчика газа измеряются и отправляются на приемник. После этого измеряется расстояние и решается, идет робот вперед или назад. Если он возвращается назад, он поворачивает ультразвуковой датчик в обоих направлениях и измеряет, с какой стороны у него больше места, чтобы повернуть туда.

Код разделен на как можно больше функций, чтобы он в цикле был как можно меньше и, следовательно, более управляемым.
Скачать код можно ниже.
autonomous_quadruped-robot2.ino
Модель четвероногого робота на АрдуиноШаг седьмой: приемник
Чтобы удаленно получать данные, от робота, понадобится приемник. Этот приемник состоит из Arduino Pro Micro, модуля nRF24L01 и делителя напряжения, который снижает выходное напряжение Arduino до 3,3В.
Модель четвероногого робота на АрдуиноМодель четвероногого робота на АрдуиноПриемник получает данные от робота и затем передает их по последовательному интерфейсу. Оттуда программа обработки выводит данные для пользователя. Код для приемника можно скачать ниже.
Receiver_autonomous.ino

Для отображения обработанных данных мастер разработал интерфейс. Все, что связано с синим шрифтом, – это значения непосредственно от датчиков. Желтый текст всегда читается по-разному, потому что он меняется в зависимости от того, что делает робот. Изображение в правом нижнем углу показывает, находится ли ультразвуковой датчик вверху или внизу.
Quadruped_Robot.pde

Здесь важно знать, что Processing просматривает список последовательных портов и выбирает один из них. Соответствующая строка в коде выглядит так:
//open the port
port = new Serial(this, Serial.list()[2], 9600); //you might have to adjust this
Модель четвероногого робота на АрдуиноМодель четвероногого робота на АрдуиноМодель четвероногого робота на АрдуиноВсе готово, и не забываем добавить аккумуляторную батарею.
Модель четвероногого робота на АрдуиноНу и в конце демонстрационное видео.

SitesReady

Только те, кто предпринимают абсурдные попытки, смогут достичь невозможного. - Альберт Эйнштейн

Follow us

Don't be shy, get in touch. We love meeting interesting people and making new friends.