Создание четвероногого робота "Робокот"

XI Международный конкурс научно-исследовательских и творческих работ учащихся
Старт в науке

Создание четвероногого робота "Робокот"

Матвейцев А.Л. 1Сазанов З.А. 1
1МАОУ "Лицей №38"
Еделев А.Ю. 1
1МАОУ "Лицей №38"
Автор работы награжден дипломом победителя III степени
Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке "Файлы работы" в формате PDF

Введение

 

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

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

Робот — это кибернетическая система, способная выполнять операции, относящиеся к физической и умственной деятельности человека. Четвероногий робот компактен, мобилен, способен выполнять широкий спектр операций и передвигаться в условиях пересечённой местности, проще в создании (относительно человекоподобного), а благодаря наличию четырёх ног он устойчив к опрокидыванию или падению.

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

Проверка опасных зон с риском облучения радиацией

Проверка на наличие утечек газа

Наблюдение за территорией

Перенос относительно нетяжёлых вещей

Документирование

Разминирование

Цель работы: сконструировать и создать четвероногого робота на базе Orange pi способного самостоятельно передвигаться по команде оператора и определять препятствия перед собой.

Задачи:

Создание прототипа частей модели в программе «3D's MAX»

Печать модели на 3D принтере

Создание Аппаратной части

Итоговая сборка прототипа

Программирование прототипа

Методы исследования: При Работе над проектом мы использовали: сбор материала, моделирование, конструирование, эксперимент, анализ, метод технического проектирования

Глава 1. Создание прототипа частей модели в программе «3D's MAX»

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

Для данного проекта была выбрана программа Autodesk 3Ds Max. Итак, что же она умеет? В первую очередь следует перечислить основные возможности и особенности данного пакета. А именно:

1.1 3D моделирование

Основная функция программы – создание и редактирование 3D графики. Остальные опции предназначены для дополнения созданных объектов и доведения их до реалистичного внешнего вида. Программа оснащена огромным количеством разнообразных модификаторов, инструментов для работы с моделями. 3Ds Max предлагает такие типы проектирования трехмерных объектов:

Моделирование на основе примитивов. 3Ds Max содержит встроенную библиотеку стандартных объектов, так называемых примитивов. Во многих случаях создание моделей начинается именно с них, ведь к таким примитивам применимы разнообразные модификаторы;

Полигональное моделирование. Самый распространенный вид 3D-моделирования, встречающийся во многих пакетах трехмерной графики. Может использоваться для разработки моделей различной сложности;

1.2 3D визуализация

Autodesk 3Ds Max – это действительно мощная программа для визуализации. Приложение предоставляет возможность гибкого управления настройками, включая экспозицию, глубину резкости, и многое другое.

Окно Material Editor (редактор материалов) в 3Ds Max реализовано по нодовому принципу, т.е. каждая функция вынесена в отдельное диалоговое окно, за счет чего управлять материалами легко и удобно. В числе визуализаторов для программы такие модули, как Arnold, V-Ray, Mental Ray, RenderMan, FinalRender, Luxrender и многие другие.

1.3 Анимация

Анимация в 3Ds Max реализована очень качественно. Анимации поддаются как целые объекты, так и отдельные их элементы. Присутствуют эффекты движения частиц (огонь, дым, брызги, снег), жидкостные эффекты. Также есть возможность детального моделирования траекторий движения объектов. Пользователь вплоть до малейших перемещений определяет путь передвижения моделей. Вдобавок ко всему, инструменты анимации можно самостоятельно создавать и редактировать, а с их помощью формировать новые контроллеры анимации в среде создания графов. Помимо прочего программа предлагает возможность видеомонтажа анимационных сцен и множество фильтров изображений.

После выбора конструкции робота была поставлена задача спроектировать 3d модель для последующей печати на 3d принтере. Для этой задачи идеально подходит программа 3d’s Max, т.к. имеет обширный список функций, а также данная программа проста в использовании. В 3d’s Max были созданы:

Задние и передние конечности:

Лицевая часть:

Плечевой сустав:

Основной корпус:

Камера:

Целостная модель:

Глава 2. Печать модели на 3D принтере

2.1 Программа для 3D печати - Cura 3D

Для печати готовой модели была выбрана программа Cura 3D.

Cura 3D — это программа-слайсер для 3D–принтеров, которая берет 3D–модель и нарезает ее (slice) на слои, чтобы получить файл, известный как G-Code, в котором содержатся коды, которые понимает 3D–принтер.

Существует три основных этапа подготовки файлов для 3D–печати.

Экспорт 3D–файлов. После того как вы создали модель, ее нужно экспортировать либо в STL-, либо в OBJ-файл. Эти форматы понимает Cura 3D. Они отличаются от форматов приложений для 3D–моделирования, поскольку описывают только конечную геометрию, без индивидуальных параметров и редактируемого содержания.

Экспорт файлов послойной нарезки. После этого файл STL или OBJ может быть импортирован в Cura 3D, где он нарезается и преобразовывается в послойную структуру, называемую G-Code, являющийся по сути просто текстовым документом, содержащим список команд для 3D–принтера, которые принтер читает и выполняет: это температура хот-энда, такое-то перемещение влево, такое-то перемещение вправо и т.д.

2.2 3D Принтер и выбор пластика:

3D модель мы печатали на принтере Geetech A10M, т.к. он обладает рядом преимуществ таких как:
1. Смешанная цветная печать с двойным экструдером
2. 220 * 220 * 260 мм размер печати
3. С детектором накаливания
4. Высокоадгезивная строительная платформа
5. Панель управления с открытым исходным кодом GT2560
6. Модульная конструкция для легкой сборки
7. 360 ° дизайн вентиляции, увеличивает рассеивание тепла
8. V-образные рельсы и колеса на каждой оси
9. Точность печати 0.1мм

Фото принтера:

Выбор пластика: Для печати мы выбрали пластик двух видов PLA и ABS, т.к. это самые доступные виды пластика.

Глава 3. Электронные комплектующие

Помимо 3д печати нам нужно было чтобы наша модель двигалась, для этого мы установили в неё электронные комплектующие представленные ниже.

3.1 Orange pi - это микрокомпьютер, состоящий всего из одной платы, но по своим характеристикам, способный тягаться с полноценными компьютерами. В нашем роботе управляет серводвигателями, также позволяет дистанционно осуществлять управление

 

Технические характеристики Orange Pi PC 2

Процессор: Allwinner H5 Quad-core 64-bit Cortex-A53 H.265

Графический процессор: Mali450

ОЗУ: 1 ГБ DDR3

ПЗУ: microSD (до 64 ГБ)Б)

Ethernet: 10/100/1000Mbps Ethernet

Видео вход: 1 x CSI входной разъем камеры:

Обладает 40-пинами для подключения любых других устройств.

3.2 Сервопривод MG996R Улучшенная версия сервопривода MG995. Часто используется для установки на радиоуправляемые модели самолётов и планеров. По сравнению с предыдущей моделью обладает повышенным крутящим моментом при стандартном напряжении в 4,8 - 7,2 В. Является виброустойчивым. Именно благодаря сервоприводам наш робот может двигаться, ходить.

Характеристики сервопривода MG996R

Вес: 55 г

Усилие: 10 кг/см

Скорость: 0.2 с/60о (при 4.8 V)

Рабочее напряжение: 4.8 - 7.2 V

Рабочая температура: 0 - 55оС

Размеры: 40.7 x 19.7 x 42.9 мм

Разъём: JR (подходит к JR и Futaba)

Угол поворота: 180 градусов

3.3 Модуль PCA9685 Является 16-канальным ШИМ контроллером с управлением через I²C шину с помощью которого можно управлять 16 сервоприводами. Он позволяет используя лишь I2C шину Orange Pi управлять 12 сервоприводами.

Технические характеристики

► Напряжения питания контроллера: 3.3 или 5 В;

► Питание сервоприводов: до 5-6 В;

► Частота ШИМ: 40-1000 Гц;

► Возможность подключения 16 сервоприводов;

► Возможность подключения до 62 устройств к одной шине;

► Размер платы: 66 х 25 мм;

Глава 4. Итоговая сборка

После печати модели на 3D принтере была произведена общая сборка устройства, внутрь корпуса были вмонтированы электронные модули, в голову была вмонтирована веб-камера.

Глава 5. Программирование

Была написана программа на языке программирования python специально для микрокомпьютера orange pc, ниже представлена часть программы.

from enum import Enum

from time import sleep

from leg import Leg

from leg import LegName

import smbus

import PCA9685

import ServoPCA9685

import threading

class DogError(Exception):

def __init__(self, message):

self.message = message

pass

class Dog:

def __init__(self):

self.legs = {

LegName.FORWARD_LEFT :None,

LegName.FORWARD_RIGHT :None,

LegName.BACKWARD_LEFT :None,

LegName.BACKWARD_RIGHT:None

}

pass

def configure_forward_left_leg(self, pca, channelKnee, channelElbow, channelShoulder):

leg_name = LegName.FORWARD_LEFT

reverse = False

self.legs[leg_name]=Leg(pca,channelKnee, channelElbow, channelShoulder, reverse, leg_name)

pass

def configure_forward_right_leg(self, pca, channelKnee, channelElbow, channelShoulder):

leg_name = LegName.FORWARD_RIGHT

reverse = True

self.legs[leg_name]=Leg(pca,channelKnee, channelElbow, channelShoulder, reverse, leg_name)

pass

def configure_backward_left_leg(self, pca, channelKnee, channelElbow, channelShoulder):

leg_name = LegName.BACKWARD_LEFT

reverse = False

self.legs[leg_name]=Leg(pca,channelKnee, channelElbow, channelShoulder, reverse, leg_name)

pass

def configure_backward_right_leg(self, pca, channelKnee, channelElbow, channelShoulder):

leg_name = LegName.BACKWARD_RIGHT

reverse = True

self.legs[leg_name]=Leg(pca,channelKnee, channelElbow, channelShoulder, reverse, leg_name)

pass

def is_inited(self):

return self.legs[LegName.FORWARD_LEFT] != None and self.legs[LegName.FORWARD_RIGHT] != None and self.legs[LegName.BACKWARD_LEFT] != None and self.legs[LegName.BACKWARD_RIGHT] != None

def get_leg_forward_left(self):

return self.legs[LegName.FORWARD_LEFT]

def get_leg_forward_right(self):

return self.legs[LegName.FORWARD_RIGHT]

def get_leg_backward_left(self):

return self.legs[LegName.BACKWARD_LEFT]

def get_leg_backward_right(self):

return self.legs[LegName.BACKWARD_RIGHT]

def start(self):

if not self.is_inited():

raise DogError('Legs havent initialised')

leg_forward_left = self.get_leg_forward_left()

leg_forward_right = self.get_leg_forward_right()

leg_backward_left = self.get_leg_backward_left()

leg_backward_right = self.get_leg_backward_right()

threading.Thread(target = leg_forward_left.main_thread).start()

threading.Thread(target = leg_forward_right.main_thread).start()

threading.Thread(target = leg_backward_left.main_thread).start()

threading.Thread(target = leg_backward_right.main_thread).start()

def walk(self):

leg_forward_left = self.get_leg_forward_left()

leg_forward_right = self.get_leg_forward_right()

leg_backward_left = self.get_leg_backward_left()

leg_backward_right = self.get_leg_backward_right()

leg_forward_right.set_speeds(5,2,1)

leg_backward_left.set_speeds(5,2,1)

leg_forward_left.set_speeds(5,2,1)

leg_backward_right.set_speeds(5,2,1)

time_delay = 0.3

while True:

#elbow

elbowForwardAngle = -40

elbowBackAngle = -60

#knee

kneeBackwardAngle = 70

kneeForwardAngle = 90

leg_forward_right.set_angles(kneeForwardAngle, elbowForwardAngle, 0)

leg_backward_left.set_angles(kneeForwardAngle, elbowForwardAngle, 0)

leg_forward_left.set_angles(kneeBackwardAngle, elbowBackAngle, 0)

leg_backward_right.set_angles(kneeBackwardAngle, elbowBackAngle, 0)

sleep(time_delay)

leg_forward_right.set_angles(kneeBackwardAngle, elbowForwardAngle, 0)

leg_backward_left.set_angles(kneeBackwardAngle, elbowForwardAngle, 0)

leg_forward_left.set_angles(kneeBackwardAngle, elbowBackAngle, 0)

leg_backward_right.set_angles(kneeBackwardAngle, elbowBackAngle, 0)

sleep(time_delay)

leg_forward_right.set_angles(kneeBackwardAngle, elbowBackAngle, 0)

leg_backward_left.set_angles(kneeBackwardAngle, elbowBackAngle, 0)

leg_forward_left.set_angles(kneeForwardAngle, elbowForwardAngle, 0)

leg_backward_right.set_angles(kneeForwardAngle, elbowForwardAngle, 0)

sleep(time_delay)

leg_forward_right.set_angles(kneeBackwardAngle, elbowBackAngle, 0)

leg_backward_left.set_angles(kneeBackwardAngle, elbowBackAngle, 0)

leg_forward_left.set_angles(kneeBackwardAngle, elbowForwardAngle, 0)

leg_backward_right.set_angles(kneeBackwardAngle, elbowForwardAngle, 0)

sleep(time_delay)

i2cBus = smbus.SMBus(0)

pca9685 = PCA9685.PCA9685(i2cBus)

dog = Dog()

dog.configure_forward_left_leg(pca9685, PCA9685.CHANNEL00,PCA9685.CHANNEL01,PCA9685.CHANNEL02)

sleep(0.2)

dog.configure_forward_right_leg(pca9685, PCA9685.CHANNEL03,PCA9685.CHANNEL04,PCA9685.CHANNEL05)

sleep(0.2)

dog.configure_backward_left_leg(pca9685,PCA9685.CHANNEL09,PCA9685.CHANNEL10,PCA9685.CHANNEL11)

sleep(0.2)

dog.configure_backward_right_leg(pca9685,PCA9685.CHANNEL06,PCA9685.CHANNEL07,PCA9685.CHANNEL08)

sleep(0.2)

dog.start()

sleep(0.2)

dog.walk()

Глава 6. Выводы

В ходе работы был сконструирован и создан четвероногий робот на базе Orange pi способный самостоятельно передвигаться по команде оператора и определять препятствия перед собой.

Так же были достигнуты поставленные задачи:

Был создан прототип частей модели в программе «3D's MAX»

Модель была напечатана на 3D принтере

Была создана собственная сборка электронных компонентов для данного проекта

Итоговая сборка прототипа

Была написана программа

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

Список литературы

https://www.raspberrypi.org/blog/mini-raspberry-pi-boston-dynamics-inspired-robot/

https://www.bostondynamics.com

https://ru.wikipedia.org/wiki/Робот

https://3ddevice.com.ua/blog/reviews/obzor-3ds-max/

https://github.com

Просмотров работы: 25