Русский   English

Реферат за темою випускної роботи

Зміст

Вступ

Роботи – частина стрімко насуваючогося майбутнього високих технологій. На планеті Земля в сфері робототехніки, революції відбуваються мало не щотижня. Роботи рятують людей, працюють в екстремальних умовах, замінюють живе спілкування, досліджують планети Сонячної системи і багато іншого. Від слуг до наставників, роботи розвиваються надзвичайно швидкими темпами. І тому кожна людина хоч частково зацікавлена цією темою, з іскрою в очах і бажанням творити, втілювати в реальність колишні мрії письменників фантастів, просто зобов'язана доторкнуться, стати частиною цього стрімкого ходу технологій.

Ми з моїм напарником не стали винятком. Ця ситуація мотивувала нас створити свого робота-шагохода, який хоча б частково допоміг втілити наші прагнення, і проявити наші здібності.

1. Проектування і розробка шагоходу

Проектування і розробку шагоходу ми розділили на дві частини: фізична реалізація і програмна. В свою чергу мені дісталася програмна.

Проектування і створення програми для шагоходу включає в себе:

  1. Оцінка та ознайомлення з обладнанням і конструкцією робота.
  2. Реалізація та налагодження початкового положення.
  3. Створення алгоритмів руху.
  4. Адаптація та налагодження алгоритмів руху.

Програмування робота можна назвати остаточним процесом його створення.

2. Обладнанням і конструкція робота

Початковий вибір конструкції робота зупинився на крокуючому роботі квадроподі з трьома ступенями свободи для кожної ноги, і весь початковий підбір обладнання обумовлений саме цим вибором. З вибором обладнання можна ознайомитись за цим посиланням.

Платформою для реалізації робота була обрана Arduino. Простота реалізації програм на С-подібній мові привернула увагу програміста робототехніка. Компактна плата Arduino Nano v3.0 цілком задовольняла поставленим завданням, і наявність 12 дискретних входів/виходів підходило для вибраної кількості сервоприводів.

Початковий вибір конструкції спричинив безліч проблем. Реалізація алгоритмів для такого робота вимагала високої точності кінематичних розрахунків, правильного розподілу мас і точного відпрацювання кутів сервоприводу. Але наше обладнання не дозволяла досконально відпрацювати такі алгоритми, що спричинило некоректну реалізації розподілу мас, просідання сервоприводів при русі.

Рішенням цих проблем стала зміна в конструкції робота. Перетворення квадропода в гексапод, додало дві додаткові точки опори що покращило стабільність системи робота і зменшило навантаження на сервоприводи. До того ж за задумом, це розширило функціонал можливостей реалізації різних алгоритмів рухів, взаємодії з різними об'єктами, і дало більше можливостей для виконання різних ідей.

3. Реалізація та налагодження початкового положення

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

Початкове положення робота реалізовувалося шляхом виставлення всіх сервоприводів в положення 90 °. Виставлення початкового положення здійснювалось первинно механічним шляхом (збірка робота з урахуванням його початкового положення).

Всі алгоритми руху які будуть реалізовані, будуть створені з урахуванням схеми напряму руху сервоприводів (від 0 ° до 180 °) Рисунок 1.

Схеми напрямки руху сервоприводів.

Рисунок 1 – Схеми напряму руху сервоприводів.

У програмах алгоритмів будуть присутні скорочення та позначення, наведені нижче.

Через 12 дискретних входів / виходів і 16 сервоприводів всі алгоритми руху спрощуються, шляхом спарювання руху ніг LF і LB, RF і RB. Таке спрощення обмежить варіації алгоритмів рухів.

Позначення по типу s1LF, s2LF, s3LF – з приставкою s і номером, позначають номер серводвигуни згідно зі схемою, Рис. 1.

Рух здійснюється від заданого початкового положення приводів, в градусній мірі, яка задається величиною s1LFinV (із зазначенням на inV – initial valueц (початкове положення)).

Програма початкового положення

Для роботи з сервоприводами в середовищі Arduino є спеціальна бібліотека < Servo.h >, вона дозволяє задавати положення сервоприводу значенням кута. Для керування швидкістю відпрацювання кутів, для наступних алгоритмів керування я скористався неофіційною бібліотекою < VarSpeedServo.h >. Першим кроком при створення програми здійснюється підключення цієї бібліотеки. (Всі фрази після "//" вважаються коментарями і не впливають на відпрацювання програми).

Код (C ++):

#include < VarSpeedServo.h > //підключаєте бібліотеку для роботи з сервоприводами

Далі проводиться оголошення змінних типу VarSpeedServo що є багаторазовим привласненням значення, що подається на сервопривід (яке обробляється бібліотекою VarSpeedServo.h).

Код (C ++):

VarSpeedServo s1LF; //оголошую s1LF типу VarSpeedServo
VarSpeedServo s2LF;
VarSpeedServo s3LF;
VarSpeedServo s1RF;
VarSpeedServo s2RF;
VarSpeedServo s3RF;
VarSpeedServo s1LM;
VarSpeedServo s2LM;
VarSpeedServo s3LM;
VarSpeedServo s1RM;
VarSpeedServo s2RM;
VarSpeedServo s3RM;

Наступним кроком створюються змінні початкових значень для кожного сервоприводу (сигнали дублюються для деяких сервоприводів з урахуванням спарювання), і привласнюються їм значення 90. За допомогою зміни цих значень проводиться коригування початкового положення.

Код (C ++):

// Початкові значення кутів
//LEG 1
int s1LFinV=90;
int s2LFinV=90;
int s3LFinV=90;
//LEG 2
int s1RFinV=90;
int s2RFinV=90;
int s3RFinV=90;
//LEG 3
int s1LMinV=90;
int s2LMinV=90;
int s3LMinV=90;
//LEG 4
int s1RMinV=90;
int s2RMinV=90;
int s3RMinV=90;

Вызывается функция setup (void setup ()) – это обязательная команда, вызывается единожды при включении или после перезапуска контроллера, позволяющая начать выполнение команд. Чаще всего это всевозможные процедуры инициализации чего-либо. Setup является однопроходным циклом.

Код (C ++):

void setup () //процедура setup

ППроцедура присвоєння логічного сигналу з дискретних входів / виходів Arduino сервоприводам, виконуються прив'язуючи певний вихід до певного сервоприводу.

Символи { і } використовуються для позначення початку і кінця циклів.

Код (C ++):

{
s1LF.attach(2);
s2LF.attach(3);
s3LF.attach(4);
s1RF.attach(8);
s2RF.attach(9);
s3RF.attach(10);
s1LM.attach(5);
s2LM.attach(6);
s3LM.attach(7);
s1RM.attach(11);
s2RM.attach(12);
s3RM.attach(13);
}

Викликається функція loop (void loop ()), яка являє собою замкнутий нескінченний цикл.

За допомогою функції write проводиться присвоювання змінним величини кутів, що містять значення логічного сигналу. Так як ці команди задані в циклі loop робот буде нескінченно тримати задане положення.

Код (C ++):

void loop() //процедура loop
{
// Leg1/5 LF/LB //положение левой передней и левой задней ног
s1LF.write(s1LFinV);
s2LF.write(s2LFinV);
s3LF.write(s3LFinV);
// Leg2/6 RF/RB //положення лівої передньої і лівої задньої ніг
s1RF.write(s1RFinV);
s2RF.write(s2RFinV);
s3RF.write(s3RFinV);
// Leg3 LM //положення лівої середньої ноги
s1LM.write(s1LMinV);
s2LM.write(s2LMinV);
s3LM.write(s3LMinV);
// Leg4 RM //положення правої середньої ноги
s1RM.write(s1RMinV);
s2RM.write(s2RMinV);
s3RM.write(s3RMinV);
}

Так реалізується програма налагодження початкового положення, яка дозволить створити алгоритми для виконання різних рухів.

4. Створення алгоритмів руху

Після реалізації початкового положення можна приступати до написання алгоритмів руху. Через використання Arduino Nano v3.0, і спарювання ніг алгоритми для руху будуть представлені в чотирьох варіантах: рух вперед, назад, обертання навколо своєї осі за годинниковою і проти годинникової стрілки (що забезпечує зміну напряму руху).

Для розробки всіх алгоритмів використовувалася умовна схема напрямку обертання кутів сервоприводів, Рисунок 2.

Условна схеми напряму руху сервоприводів.

Рисунок 2 – Условна схеми напряму руху сервоприводів

4.1 Алгоритм руху вперед

Даний алгоритм здійснюється шляхом послідовним переміщення двух груп ніг: перша група (ліва передня, права середня, ліва задня), друга група (права передня, ліва середня, права задня).

ППересування здійснюється таким чином:

  1. Ноги першої групи піднімаються вгору і зміщуються на 13 ° вперед, в той час як ноги другої групи зміщуються на 13 ° назад, переміщаючи корпус робота вперед. Так з початкового положення приходимо в перше положення кроку. Поворот / змішання кожної ноги здійснюється за допомогою сервоприводів s1. Підйом кожної ноги здійснюється за допомогою сервоприводів s2 і s3, змішенням їх на 45 °, так щоб ноги підгинались, притискаючись до корпусу при підйомі.
  2. Ноги другої групи піднімаються вгору і зміщуються на 26 ° вперед, в той час як ноги першої групи зміщуються на 26 ° назад, переміщаючи корпус робота вперед.
  3. Ноги першої групи піднімаються вгору і зміщуються на 26 ° вперед, в той час як ноги другої групи зміщуються на 26 ° назад, переміщаючи корпус робота вперед.

Так послідовним чергуванням пункту 2 і 3 здійснюється повний крок вперед. Повторенням повного кроку здійснюється безперервний рух вперед.

Наведений алгоритм реалізує пряму задачу кінематики, отримання положення ніг по заданих кутах. Тому для використання в програмі, алгоритм був адаптований під особливості програмування.

У програмі рух 1 реалізовано MOVE 1, MOVE 2, MOVE 3 і MOVE 4. MOVE 1 і MOVE 2 виконується один раз при запуску руху.

У самій програмі я розділив рух 2 і 3 на три частини: підйом ніг, переміщення ніг, опускання ніг. Вони реалізовані MOVE 3 – MOVE 8.

Даний алгоритм дуже простий і надійний, тому що в будь-який момент часу робот має три точки опори, які забезпечують його стійкість.

Програма руху вперед

Тут представлений повний текст програми руху вперед, заснований на програмі початкового положення. Пояснення будуть приводитися до нових елементів програми.

Код (C ++):

#include < VarSpeedServo.h > //використовуємо бібліотеку для роботи з сервоприводом
VarSpeedServo s1LF; //объявляем s1LF типа VarSpeedServo
VarSpeedServo s2LF;
VarSpeedServo s3LF;
VarSpeedServo s1RF;
VarSpeedServo s2RF;
VarSpeedServo s3RF;
VarSpeedServo s1LM;
VarSpeedServo s2LM;
VarSpeedServo s3LM;
VarSpeedServo s1RM;
VarSpeedServo s2RM;
VarSpeedServo s3RM;

Початкове значення кутів було підкориговано в ході випробувань даного алгоритму руху.

Код (C ++):

//Початкові значення кутів
//LEG 1
int s1LFinV=90;
int s2LFinV=90;
int s3LFinV=90+10;
//LEG 2
int s1RFinV=90;
int s2RFinV=90;
int s3RFinV=90-10;
//LEG 3
int s1LMinV=90;
int s2LMinV=90-10;
int s3LMinV=90+5;
//LEG 4
int s1RMinV=90-6;
int s2RMinV=90+15;
int s3RMinV=90+5;

Нижче наведені величина значень кутів, на які відбувається зміщення сервоприводів з урахуванням напрямку початкового руху, заданого позитивною або негативною величиною кута. Такий спосіб завдання зміщення кутів дозволяє змінювати напрямок позитивного обертання сервоприводів, не змінюючи сам алгоритм руху

Код (C ++):

//LEG 1
int s1LFturnV=-13;
int s2LFturnV=45;
int s3LFturnV=-45;
//LEG 2
int s1RFturnV=13;
int s2RFturnV=-45;
int s3RFturnV=45;
//LEG 3
int s1LMturnV=-13;
int s2LMturnV=45;
int s3LMturnV=-45;
//LEG 4
int s1RMturnV=13;
int s2RMturnV=-45;
int s3RMturnV=-45;

int DLLV=300;
int SPEED=80;

DLLV – присвоювання значення величини затримки, виділеного часу за яке повинен здійснитися рух. Здається в мілісекундах.

SPEED – присвоювання величини швидкості рух сервоприводів. Чим вище величина, тим більше швидкість обертання. Стандартна швидкість 30.

Код (C ++):

void setup() //процедура setup
{
s1LF.attach(2);
s2LF.attach(3);
s3LF.attach(4);
s1RF.attach(8);
s2RF.attach(9);
s3RF.attach(10);
s1LM.attach(5);
s2LM.attach(6);
s3LM.attach(7);
s1RM.attach(11);
s2RM.attach(12);
s3RM.attach(13);

Можливо помітити нижче, що при використанні функції write задається не тільки величина кута, але і швидкість відпрацювання.

Код (C ++):

// MOVE 1 ////////////////////////////////
// Leg1/5 LF/LB //рух лівої передньої і лівої задньої ніг
s1LF.write(s1LFinV,SPEED);
s2LF.write(s2LFinV,SPEED);
s3LF.write(s3LFinV,SPEED);
// Leg2/6 RF/RB // рух правої передньої і правої задньої ніг
s1RF.write(s1RFinV,SPEED);
s2RF.write(s2RFinV,SPEED);
s3RF.write(s3RFinV,SPEED);
// Leg3 LM //рух лівої середньої ноги
s1LM.write(s1LMinV,SPEED);
s2LM.write(s2LMinV,SPEED);
s3LM.write(s3LMinV,SPEED);
// Leg4 RM //рух правої середньої ноги
s1RM.write(s1RMinV,SPEED);
s2RM.write(s2RMinV,SPEED);
s3RM.write(s3RMinV,SPEED);
delay(DLLV);

// MOVE 2 ////////////////////////////////
// Leg1 / 5 LF / LB // рух лівої передньої і лівої задньої ніг
s1LF.write(s1LFinV,SPEED);
s2LF.write(s2LFinV+s2LFturnV,SPEED);
s3LF.write(s3LFinV-s3LFturnV,SPEED);
// Leg2 / 6 RF / RB // рух правої передньої і правої задньої ніг
s1RF.write(s1RFinV,SPEED);
s2RF.write(s2RFinV,SPEED);
s3RF.write(s3RFinV,SPEED);
// Leg3 LM // рух лівої середньої ноги
s1LM.write(s1LMinV,SPEED);
s2LM.write(s2LMinV,SPEED);
s3LM.write(s3LMinV,SPEED);
// Leg4 RM // рух правої середньої ноги
s1RM.write(s1RMinV,SPEED);
s2RM.write(s2RMinV+s2RMturnV,SPEED);
s3RM.write(s3RMinV+s2RMturnV,SPEED);
delay(DLLV);
}

Рух вперед буде здійснюватись нескінченно, тому що основна частина руху заданна в нескінченному циклі функції loop.

Код (C ++):

void loop() //процедура loop
{
// MOVE 3 ////////////////////////////////
// Leg1 / 5 LF / LB // рух лівої передньої і лівої задньої ніг
s1LF.write(s1LFinV+s1LFturnV,SPEED);
s2LF.write(s2LFinV+s2LFturnV,SPEED);
s3LF.write(s3LFinV-s3LFturnV,SPEED);
// Leg2 / 6 RF / RB // рух правої передньої і правої задньої ніг
s1RF.write(s1RFinV-s1RFturnV,SPEED);
s2RF.write(s2RFinV,SPEED);
s3RF.write(s3RFinV,SPEED);
// Leg3 LM // рух лівої середньої ноги
s1LM.write(s1LMinV-s1LMturnV,SPEED);
s2LM.write(s2LMinV,SPEED);
s3LM.write(s3LMinV,SPEED);
// Leg4 RM // рух правої середньої ноги
s1RM.write(s1RMinV+s1RMturnV,SPEED);
s2RM.write(s2RMinV+s2RMturnV,SPEED);
s3RM.write(s3RMinV+s2RMturnV,SPEED);
delay(DLLV);

// MOVE 4 ////////////////////////////////
// Leg1 / 5 LF / LB // рух лівої передньої і лівої задньої ніг
s1LF.write(s1LFinV+s1LFturnV,SPEED);
s2LF.write(s2LFinV,SPEED);
s3LF.write(s3LFinV,SPEED);
// Leg2 / 6 RF / RB // рух правої передньої і правої задньої ніг
s1RF.write(s1RFinV-s1RFturnV,SPEED);
s2RF.write(s2RFinV,SPEED);
s3RF.write(s3RFinV,SPEED);
// Leg3 LM // рух лівої середньої ноги
s1LM.write(s1LMinV-s1LMturnV,SPEED);
s2LM.write(s2LMinV,SPEED);
s3LM.write(s3LMinV,SPEED);
// Leg4 RM // рух правої середньої ноги
s1RM.write(s1RMinV+s1RMturnV,SPEED);
s2RM.write(s2RMinV,SPEED);
s3RM.write(s3RMinV,SPEED);
delay(DLLV);

// MOVE 5 ////////////////////////////////
// Leg1 / 5 LF / LB // рух лівої передньої і лівої задньої ніг
s1LF.write(s1LFinV+s1LFturnV,SPEED);
s2LF.write(s2LFinV,SPEED);
s3LF.write(s3LFinV,SPEED);
// Leg2 / 6 RF / RB // рух правої передньої і правої задньої ніг
s1RF.write(s1RFinV-s1RFturnV,SPEED);
s2RF.write(s2RFinV+s2RFturnV,SPEED);
s3RF.write(s3RFinV-s3RFturnV,SPEED);
// Leg3 LM // рух лівої середньої ноги
s1LM.write(s1LMinV-s1LMturnV,SPEED);
s2LM.write(s2LMinV+s2LMturnV,SPEED);
s3LM.write(s3LMinV-s3LMturnV,SPEED);
// Leg4 RM // рух правої середньої ноги
s1RM.write(s1RMinV+s1RMturnV,SPEED);
s2RM.write(s2RMinV,SPEED);
s3RM.write(s3RMinV,SPEED);
delay(DLLV);
// MOVE 6 ////////////////////////////////
// Leg1 / 5 LF / LB // рух лівої передньої і лівої задньої ніг
s1LF.write(s1LFinV-s1LFturnV,SPEED);
s2LF.write(s2LFinV,SPEED);
s3LF.write(s3LFinV,SPEED);
// Leg2 / 6 RF / RB // рух правої передньої і правої задньої ніг
s1RF.write(s1RFinV+s1RFturnV,SPEED);
s2RF.write(s2RFinV+s2RFturnV,SPEED);
s3RF.write(s3RFinV-s3RFturnV,SPEED);
// Leg3 LM // рух лівої середньої ноги
s1LM.write(s1LMinV+s1LMturnV,SPEED);
s2LM.write(s2LMinV+s2LMturnV,SPEED);
s3LM.write(s3LMinV-s3LMturnV,SPEED);
// Leg4 RM // рух правої середньої ноги
s1RM.write(s1RMinV-s1RMturnV,SPEED);
s2RM.write(s2RMinV,SPEED);
s3RM.write(s3RMinV,SPEED);
delay(DLLV);

// MOVE 7 ////////////////////////////////
// Leg1 / 5 LF / LB // рух лівої передньої і лівої задньої ніг
s1LF.write(s1LFinV-s1LFturnV,SPEED);
s2LF.write(s2LFinV+s2LFturnV,SPEED);
s3LF.write(s3LFinV-s3LFturnV,SPEED);
// Leg2 / 6 RF / RB // рух правої передньої і правої задньої ніг
s1RF.write(s1RFinV+s1RFturnV,SPEED);
s2RF.write(s2RFinV,SPEED);
s3RF.write(s3RFinV,SPEED);
// Leg3 LM // рух лівої середньої ноги
s1LM.write(s1LMinV+s1LMturnV,SPEED);
s2LM.write(s2LMinV,SPEED);
s3LM.write(s3LMinV,SPEED);
// Leg4 RM // рух правої середньої ноги
s1RM.write(s1RMinV-s1RMturnV,SPEED);
s2RM.write(s2RMinV+s2RMturnV,SPEED);
s3RM.write(s3RMinV+s2RMturnV,SPEED);
delay(DLLV);

// MOVE 8 ////////////////////////////////
// Leg1 / 5 LF / LB // рух лівої передньої і лівої задньої ніг
s1LF.write(s1LFinV+s1LFturnV,SPEED);
s2LF.write(s2LFinV+s2LFturnV,SPEED);
s3LF.write(s3LFinV-s3LFturnV,SPEED);
// Leg2 / 6 RF / RB // рух правої передньої і правої задньої ніг
s1RF.write(s1RFinV-s1RFturnV,SPEED);
s2RF.write(s2RFinV,SPEED);
s3RF.write(s3RFinV,SPEED);
// Leg3 LM // рух лівої середньої ноги
s1LM.write(s1LMinV-s1LMturnV,SPEED);
s2LM.write(s2LMinV,SPEED);
s3LM.write(s3LMinV,SPEED);
// Leg4 RM // рух правої середньої ноги
s1RM.write(s1RMinV+s1RMturnV,SPEED);
s2RM.write(s2RMinV+s2RMturnV,SPEED);
s3RM.write(s3RMinV+s2RMturnV,SPEED);
}

4.2 Алгоритм руху назад

Алгоритм руху назад здійснюється подібно до алгоритму руху вперед переміщаючи ті ж дві групи ніг, але зі зворотнім напрямком зсуву: перша група (ліва передня, права середня, ліва задня), друга група (права передня, ліва середня, права задня).

Пересування здійснюється таким чином:

  1. Ноги першої групи піднімаються вгору і зміщуються на 13 ° назад в той час як ноги другої групи зміщуються на 13 ° вперед, переміщуючи корпус робота в зворотному напрямку.
  2. Ноги другої групи піднімаються вгору і зміщуються на 26 ° назад, ноги першої групи зміщуються на 26 ° вперед, переміщуючи корпус робота назад.
  3. Ноги першої групи піднімаються вгору і зміщуються на 26 ° назад, ноги другої групи зміщуються на 26 ° вперед, переміщуючи корпус робота назад.

За принципом руху вперед, послідовне чергування пунктів 2 і 3 здійснюється повний крок назад. Повторенням повного кроку здійснюється непереривний рух назад.

4.3 Алгоритми обертання по і проти напрямку годинникової стрілки

Для реалізації такого алгоритму умовно потрібно позначити 2 групи ніг: ліва (ліва передня, ліва задня), права (права передня, права задня). Права середня і ліва середня ноги залишаються незалежними.

Алгоритм руху прийме такий вигляд:

  1. Ноги лівої групи піднімаються вгору і зміщуються на 13 ° вперед, права середня нога піднімаються і зміщується на 13 ° назад, ноги правою групи зміщуються на 13 ° вперед, ліва середня нога піднімаються і зміщується на 13 ° назад.
  2. Ноги правої групи піднімаються вгору і зміщуються на 26 ° вперед, ліва середня нога піднімаються і зміщується на 26 ° назад, ноги лівої групи зміщуються на 26 ° вперед, права середня нога піднімаються і зміщується на 26 ° назад.
  3. Ноги лівої групи піднімаються вгору і зміщуються на 26 ° вперед, права середня нога піднімаються і зміщується на 26 ° назад, ноги правою групи зміщуються на 26 ° вперед, ліва середня нога піднімаються і зміщується на 26 ° назад.

Послідовне одноразове використання пункту 2 і 3 реалізує повний поворот робота за годинниковою стрілкою, що програмно реалізується проходженням одного циклу – 52 °. Повторенням повного повороту здійснюється безперервне обертання за годинниковою.

Алгоритм руху проти годинникової реалізується за таким же принципом.

Дані алгоритми хоч і можливо назвати простими і в якійсь мірі примітивними, але надійність і чіткість їх відпрацювання безумовна. До того ж дані алгоритми - це лише перший етап у реалізації управління нашим шагоходом. Вони послужить відмінним базисом для створення серйозних алгоритмів, які стануть доступні з придбанням більш функціональною плати Arduino MEGA2560 Pro Mini.

Висновки

Наш робот гексапод поки ще на початковому етапі розробки. Хоча обрана нами плата Arduino Nano v3.0 відповідає поставленим завданням, ми вважаємо що для виключення операції спарювання ніг буде встановлена плата Arduino MEGA2560 Pro Mini, через наявність 54 дискретних входів / виходів.

Робот може бути використаний, в даний час, як навчальний посібник для студентів, що займаються робототехнікою.

Плани на майбутнє

У наших планах реалізація віддаленого управління через Bluetooth зі смартфона, що має на увазі не тільки написання програми алгоритмів рухів і зв'язку зі смартфоном написану на Arduino, але і написання програми на Android. Так само в наші плани входить установка відео камери на роботі, яка буде транслювати зображення місцевості перед роботом, передаючи сигнал по WI-FI. Потокове відео транслюється на смартфон, відображаючись в окремій частині екрану програми управління.

На момент написання даного реферату магістерська робота ще не завершена. Орієнтовна дата завершення магістерської роботи: червень 2017 року. Повний текст роботи та матеріали по темі можуть бути отримані у автора або його керівника після зазначеної дати.

Список джерел

  1. Гаревская Н.В., Полянский В.В., Сабадырь А.М., Семцов А.С. Электронный журнал «Труды МАИ ». / Разработка конструкции и алгоритмов управления движением шагающего аппарата для технического обслуживания авиационных комплексов. Выпуск № 62, 2012. – 12с. http://trudymai.ru/....
  2. Илья Чех // Роботы-пауки: кинематика. http://weas-robotics.ru/robotyi-pauki...
  3. Джереми Блум // Изучаем Arduino: инструменты и методы технического волшебства. Пер. с англ. — СПб.: БХВ-Петербург, 2015. – 336 с. 5-33.
  4. Петин В.А. / Проекты с использованием контроллера Arduino. – 2-е изд., перераб. и доп. – СПб.: БХВ-Петербург, 2015. – 448 с.
  5. Омельченко Е.Я., Танич В.О., Маклаков А.С., Карякина Е.А. Электротехнические системы и комплексы // Краткий обзор и перспективы применения микропроцессорной платформы Arduino. Магнитогорский государственный технический университет им. Г.И. Носова (Магнитогорск), 2013 г. – 366 с. 28-33.
  6. C. Menon, Y. Li, D. Sameoto, C. Martens. Robotics and Autonomous Systems // "Biologically based distributed control and local reflexes improve rough terrain locomotion in a hexapod robot". Volume 18, Issues 1-2, July 1996, Pages 59-64.
  7. Пономаренко В.И., Караваев А.С. Современные проблемы науки и образования // Использование платформы Arduino в измерениях и физическом эксперименте. – 2014. – № 3, – с. 77-90.