Professional Documents
Culture Documents
ППКР Лекції2023
ППКР Лекції2023
ХАРКІВСЬКИЙ НАЦІОНАЛЬНИЙ
УНІВЕРСИТЕТ РАДІОЕЛЕКТРОНІКИ
КОНСПЕКТ ЛЕКЦІЙ
З дисципліни «Програмування пристроїв керування роботами»
для студентів усіх форм навчання
спеціальності 174 Автоматизація, комп’ютерно-інтегровані технології та
робототехніка
спеціалізації «Комп’ютеризовані та робототехнічні системи»
Електронне видання
ЗАТВЕРДЖЕНО
кафедрою КІТАМ
Протокол № 1
від 28 серпня 2023
Харків 2023
1
2
2
3
ЗМІСТ
Вступ 4
1 Введення в робототехніку та програмування роботів 5
4 Алгоритми робототехніки 22
3
4
ВСТУП
4
1. ВВЕДЕННЯ В РОБОТОТЕХНІКУ ТА ПРОГРАМУВАННЯ
6
7
7
8
6) Військові роботи:
a) Використовуються для розвідки, рятувальних операцій, патрулювання та
навіть бойових завдань.
7) Роботи в сільському господарстві:
a) Автономні роботи для поливу, врожаювання, розпушування ґрунту тощо.
8) Роботи для обслуговування клієнтів:
a) Роботи-офіціанти в ресторанах, роботи-консультанти в магазинах, роботи
для обслуговування клієнтів у готелях.
Це лише декілька прикладів. Робототехніка постійно розвивається, і роботи
знаходять нові застосування у різних сферах життя, сприяючи автоматизації та
покращенню нашого способу існування.
8
9
9
10
10
11
11
12
12
13
себе рухові команди або інші дії, необхідні для виконання завдань робота.
b) Актуатори відповідають на ці команди, виконуючи відповідні рухи або
дії. Ця фаза взаємодії включає в себе керування моторами, затворами, схватами,
камерами, світлодіодами і багато іншого обладнання.
4) Зворотний зв'язок:
a) Робот може також використовувати сенсори для отримання інформації
про результати своїх дій.
b) Програмне забезпечення аналізує цю інформацію, щоб визначити, чи були
досягнуті поставлені завдання, і в разі необхідності коригує план або дії робота.
5) Керування інтерфейсом:
a) Роботи можуть мати інтерфейси для взаємодії з людьми або іншими
системами. Програмне забезпечення реалізує ці інтерфейси, дозволяючи
користувачам або іншим системам взаємодіяти з роботом.
Цей процес взаємодії між апаратним і програмним забезпеченням робота
дозволяє йому виконувати різноманітні завдання, включаючи роботи в
автоматизованих виробництвах, медицинських роботів, автономних автомобілів,
роботів для досліджень у важкодоступних місцях та багато інших сферах.
13
14
14
15
3.1 Вибір мови програмування для роботів (наприклад, C++, Python, ROS).
3.2 Основи програмування руху та навігації роботів.
3.3 Робота із сенсорами та обробка даних.
3.1 Вибір мови програмування для роботів (наприклад, C++, Python, ROS).
Програмування роботів є важливою складовою робототехніки та автоматизації.
Існує багато різних мов програмування та середовищ для роботів, в залежності від
конкретних завдань та платформи робота. Ось кілька з найпопулярніших мов та
середовищ програмування для роботів:
1. Python є однією з найпопулярніших мов програмування для роботів
завдяки своєму простому синтаксису та великій кількості бібліотек для робототехніки.
Ви можете використовувати бібліотеки, такі як ROS (Robot Operating System), для
створення програм для керування роботами.
2. C/C++ ці мови мають високу швидкодію та зазвичай використовуються
для програмування вбудованих систем і роботів, які вимагають точного керування
апаратними ресурсами.
3. Java може бути використана для програмування роботів, особливо в тих
випадках, коли вам потрібна багатоплатформна сумісність. Деякі роботи, такі як ті, які
використовують платформу Android, також використовують Java.
4. Blockly та Scratch ці мови програмування спрощують процес навчання
програмуванню, особливо для дітей. Вони дозволяють створювати програми для
роботів шляхом перетягування та викидання блоків.
5. LabVIEW часто використовується в інженерних та наукових дослідженнях
для програмування роботів та автоматизації.
6. MATLAB використовується для моделювання та керування роботами,
особливо у випадках, коли потрібен аналіз даних та обробка сигналів.
7. Robot Framework це середовище та мова для автоматизації тестування
роботів та інших систем.
15
16
16
17
17
18
18
19
19
20
4. АЛГОРИТМИ РОБОТОТЕХНІКИ
20
21
самонавчання.
6. Відмовостійкість і безпека: Важливо також враховувати можливі відмови
і забезпечувати безпеку робота і його оточення за допомогою алгоритмів
резервування та інших методів.
7. Комунікація: Роботи можуть взаємодіяти з іншими роботами або з
операторами через різні засоби комунікації, і це вимагає розробки алгоритмів передачі
і обробки інформації.
8. Завдання і планування: Робототехнічні алгоритми також включають
алгоритми планування і виконання завдань, які допомагають роботам розуміти, як
виконувати послідовність дій для досягнення певної мети.
Залежно від конкретного завдання і типу робота, використовуються різні
алгоритми і підходи. Розробка робототехнічних алгоритмів є складним завданням, яке
вимагає розуміння фізичних і програмних аспектів робота, а також математичних та
комп'ютерних методів.
Розробка алгоритмів для роботів - це важливий крок у створенні роботів, які
можуть виконувати різні завдання. Ось основні кроки та принципи розробки
алгоритмів для роботів:
1) Аналіз завдання:
a) Аналіз завдання, яке робот повинен виконувати. Визначення, які операції
та функціональність потрібні для реалізації.
2) Збір інформації:
a) Необхідно дослідити об'єкт робота та його оточення. Визначення, які
датчики і сенсори можуть бути використані для збору інформації про навколишнє
середовище.
3) Планування алгоритму:
a) Розробка плану алгоритму, який буде визначати послідовність дій робота
для вирішення завдання. Включення усіх можливих варіантів та умов.
4) Проектування алгоритму:
a) Розробіть алгоритм на основі плану, визначивши кожен крок роботи.
Використовуйте структури даних і алгоритми, які найкраще підходять для задачі.
21
22
5) Імплементація алгоритму:
a) Запис програмного коду, який реалізує алгоритм на обраній платформі
робота. Необхідно використовувати мову програмування та інструменти, які
підходять для конкретного завдання.
6) Тестування та налагодження:
a) Тестування алгоритму на роботі. Виявлення помилок і недоліків та
виправте їх. Внесення змін в алгоритм за потреби.
7) Оптимізація:
a) Покращення алгоритм для підвищення продуктивності та точності робота.
Необхідно враховувати обмеження обчислювальних ресурсів та енергоспоживання.
8) Забезпечення безпеки:
a) Розгляд питання безпеки в процесі розробки алгоритму. Робот має не
завдати шкоди навколишньому середовищу або людям.
9) Документація:
a) Документування алгоритму, включаючи коментарі в коді, опис
інтерфейсів та робочих процесів. Це допоможе іншим розробникам розуміти та
редагувати код.
10) Постійне вдосконалення:
a) Роботи зазвичай потребують постійного удосконалення та апгрейдів
алгоритмів для адаптації до нових завдань та оточення.
Розробка алгоритмів для роботів - це ітеративний процес, який вимагає великої
уваги до деталей і вміння вирішувати технічні та інженерні завдання. Успіх залежить
від ретельного аналізу завдання та вміння розробника раціонально використовувати
ресурси та оптимізувати алгоритми для досягнення бажаних результатів.
22
23
завдання, які раніше були важкі або навіть неможливі для виконання. Ось деякі
способи використання ШІ та нейронних мереж в робототехніці:
1) Навігація і автономна навігація:
a) Використання нейронних мереж для обробки даних з камер, лідарів та
інших сенсорів для створення мап та планування оптимального маршруту.
b) Застосування алгоритмів машинного навчання для розпізнавання об'єктів
та визначення відстаней, що допомагає у уникненні перешкод.
2) Взаємодія з людьми:
a) Реалізація голосових асистентів для комунікації з користувачами.
b) Використання комп'ютерного зору та обробки мови для взаємодії з
людьми через жести, мову тіла та голосові команди.
3) Маніпуляція і робот-маніпулятори:
a) Навчання нейронних мереж керувати рухом маніпулятора, щоб
виконувати завдання, такі як збирання чи складання складних конструкцій.
b) Використання сенсорів силі для регулювання сил, які робот накладає на
об'єкти під час маніпуляції.
4) Самонавчання:
a) Застосування підсилених навчальних алгоритмів для того, щоб роботи
могли навчитися покращувати свої навички та приймати рішення на основі досвіду.
5) Планування шляху:
a) Використання алгоритмів машинного навчання для покращення
алгоритмів планування шляху, щоб роботи могли оптимально рухатися в складних
середовищах.
6) Вирішення складних завдань:
a) Використання глибокого навчання для вирішення складних завдань, таких
як розпізнавання об'єктів на зображеннях, аналіз тексту або прогнозування подій.
7) Оптимізація систем керування:
a) Використання ШІ для оптимізації систем керування роботами, щоб
підвищити ефективність та точність їх роботи.
8) Адаптація до змінних умов:
23
24
24
25
25
26
26
27
програмного забезпечення.
8. Підтримка різних мов програмування: ROS підтримує кілька мов
програмування, зокрема Python та C++, що дозволяє розробникам використовувати
мову, з якою вони зручніше працювати.
ROS дозволяє розробникам створювати різноманітні робототехнічні застосунки,
від простих маніпуляторів до складних автономних автомобілів і дронів. Це
платформа з великою спільнотою користувачів і безліччю ресурсів для навчання та
розробки.
Ось основні кроки та підходи до програмування роботів з використанням ROS:
1. Встановлення ROS: ROS підтримує різні версії Linux, включаючи Ubuntu.
Потрібно встановити ROS-пакунки та налаштувати робоче середовище.
2. Створення робота: Необхідно визначите фізичний робот або симуляційну
модель робота, з яким планується робота. Для цього можна використовувати такі
платформи, як ROS Gazebo або підтримувані робототехнічні платформи, наприклад,
TurtleBot або PR2.
3. Створення пакетів ROS: ROS організований на основі пакетів. Необхідно
створити новий пакет для проекту, використовуючи команду catkin_create_pkg. Далі
треба визначити залежності та налаштування пакету у файлі CMakeLists.txt.
4. Розробка вузлів ROS: Вузли ROS - це програми, які виконують певні
завдання. Можна розробляти власні вузли на мовах програмування, таких як Python
або C++. Кожен вузол може публікувати, передавати або слухати повідомлення через
ROS топіки.
5. Використання ROS бібліотек: ROS надає багато готових бібліотек та
інструментів для роботи з різними аспектами роботи, включаючи кінематику,
навігацію, візуалізацію тощо. Доцільно використовувати ці бібліотеки, щоб спростити
програмування вашого робота.
6. Керування роботом: Для керування роботом або симуляційною моделлю
використовуються команди ROS. Можна відправляти команди для переміщення,
збору даних, взаємодії з датчиками та багато іншого.
7. Візуалізація та налагодження: ROS має інструменти для візуалізації та
27
28
28
29
import rospy
from std_msgs.msg import String
#Ініціалізація вузла
rospy.init_node('my_node')
#Створення топіка
pub = rospy.Publisher('my_topic', String, queue_size=10)
Інший вузол може підписатися на той самий топік, щоб отримувати дані.
3. Виклик сервісів (Calling Services): Крім обміну даними через топіки, вузли
можуть викликати сервіси (services) для виконання певних операцій або отримання
інформації з інших вузлів. Це використовується для синхронного обміну даними.
4. Параметри (Parameters): ROS дозволяє зберігати параметри вузла, які
можна змінювати без перекомпіляції програмного забезпечення. Це зручно для
налаштування параметрів вузлів.
5. Взаємодія через ROS Master: ROS Master - це централізований сервер,
який допомагає вузлам ROS знаходити одне одного та спілкуватися. Кожен вузол
реєструється в ROS Master, щоб інші вузли могли знайти його.
6. Віддалений виклик сервісів (Remote Service Calls): Вузли можуть
викликати сервіси на інших роботах або комп'ютерах, що дозволяє взаємодіяти з
роботами, які знаходяться в інших місцях.
7. Візуалізація та налагодження: Можна використовувати інструменти, такі
як RViz, для візуалізації вузлів і їх взаємодії, що допомагає налагоджувати та
«розуміти» робота.
29
30
30
31
31
32
32
33
33
34
34
35
35
36
36
37
37
38
38
39
39
40
40
41
41
42
42
43
43
44
7. Збір і аналіз даних: Системи можуть збирати велику кількість даних про
роботів і їхню роботу.
Системи відслідковування та контролю, такі як SLAM (Simultaneous Localization
and Mapping) і GPS (Global Positioning System), відіграють критичну роль в
робототехніці для навігації і керування рухом роботів. Ось деякі способи їх
використання:
1. Навігація мобільних роботів: Мобільні роботи використовують системи
SLAM для створення карт місцевості та визначення свого місцезнаходження у
реальному часі. Вони можуть використовувати датчики, такі як лазерні датчики та
камери, для зібрання інформації про навколишнє середовище і використовувати її для
навігації в невідомому просторі.
2. Автономні автомобілі: Системи SLAM і GPS є ключовими для
автономних автомобілів. GPS використовується для грубого визначення
місцезнаходження автомобіля на карті, а системи SLAM допомагають автомобілю
визначити своє точне положення та створити докладну 3D-карту доріг і оточення. Це
дозволяє автомобілю самостійно навігувати по дорозі.
3. Дрони: Дрони використовують системи SLAM та GPS для створення карт
навколишнього середовища, визначення свого місцезнаходження і виконання завдань
в режимі реального часу. Вони можуть використовувати GPS для глобальної навігації
і SLAM для локальної навігації.
4. Роботи в медицині: Медичні роботи, такі як хірургічні роботи та роботи
для доставки ліків, можуть використовувати системи SLAM для навігації внутрішніми
просторами лікарень і визначення свого положення в операційній кімнаті або інших
областях.
5. Агророботи: Сільськогосподарські роботи використовують GPS для
навігації на полях та грунтових дорогах і можуть використовувати SLAM для точного
мапування поля і визначення місця для посадки або збирання врожаю.
6. Робототехніка в виробництві: Виробничі роботи можуть використовувати
SLAM для навігації по заводах і складах, уникання перешкод і виконання завдань у
виробничих об'єктах.
44
45
45
46
46
47
калібрувати свої сенсори та навчатися від свого досвіду для поліпшення процесу
автономного переміщення.
7. Безпека: При автономному переміщенні роботи мають враховувати
аспекти безпеки, які включають уникнення аварій, забезпечення безпеки оточуючих і
дотримання відповідних нормативів та правил.
8. Віддалене керування і моніторинг: У деяких випадках роботи можуть
бути віддалено керовані або моніторинг роботів може здійснюватися операторами
через віддалену платформу.
Автономне переміщення роботів має застосування в багатьох галузях,
включаючи автономні автомобілі, мобільних роботів, доставку товарів, агророботи,
робототехніку у виробництві та інші сфери, де потрібно надійне і безпечне
переміщення в різних умовах.
47
48
48
49
49
50
50
51
51
52
52
53
обмежень і можливостей.
53
54
54
55
55
56
56
57
57
58
58
59
60
61
Групою LIS при MIT було розроблено ряд алгоритмів планування маніпуляцій
для робота, що пересуває об’єкти. На вході описаних алгоритмів пла нування є набір
об’єктів, множина можливих дій для пересування, початкова конфігурація
розташування об’єктів та кінцева.
Алгоритм планування має сформувати оптимальну послідовність дій для
переходу з початкової конфігурації у кінцеву [17]. Ці алгоритми були перевірені на
роботі Willow Garage PR2 з наступним набором дій:
- переміщення робота;
- перенесення об’єкта;
- pick – робот хапає об’єкт та піднімає його;
- push – робот штовхає об’єкт
В університеті Берклі розробили ряд методів визначення форми об’єктів у сцені
на основі одного зображення, а також за допомогою RGB-D зображень.
Також у США розробляються автономні мобільні системи (CAST, AMAS), які
забезпечують повну автономність руху колони автомобілів [3]. Технології CAST
передбачають поступове зменшення ролі водія при пересуванні автомобіля з метою
зменшення кількості аварій на дорозі. Система забезпечує просте і швидке
переключання між режимами ручного та автоматичного керування автомобілем. У
режимі автоматичного керування система підтримує задану відстань між
автомобілями та автоматично обирає швидкість.
Системи AMAS розробляються для різноманітних сценаріїв руху автомобілів
автомагістралями. Також передбачається, що з доданням певної кількості датчиків
автомобілі зможуть автоматично виконувати очищення дороги від снігу. До складу
системи AMAS входять:
- система зору;
- навігаційна система;
- система роботи с радаром та лідаром;
- засоби радіокомунікації;
62
63
63
64
- натиснути на гальма;
- повернути кермо.
Оскільки ідентифікація місцевості проводиться шляхом порівняння заздалегідь
зроблених фотографій місцевості з результатами візуалізації оточення безпілотні
автомобілі не можуть пересуватися під сильних дощем та в умовах засніженої
місцевості.
Незважаючи на значні досягнення в області розробки безпілотних автомобілів,
їх масове виробництво у найближчому майбутньому не планується. Крім технічних
проблем роботи таких системах в реальних умовах є певні законодавчі перепони для
їх використання.
Автономні мобільні системи можуть бути корисними у найрізноманітніших
ситуаціях: геологічних дослідженнях, управління рухом автомобілів з метою
зменшення кількості аварій, системи автоматичного паркування транспортних
засобів, прибирання доріг, перевезення вантажів, доставка пошти [17].
64
65
65
66
66
67
67
68
ПЕРЕЛІК ПОСИЛАНЬ
1. Кошель С., Ковальов Ю., Манойленко О. Проектування промислових роботів
та маніпуляторів – Центр навчальної літератури, 2019. – 256с.
2. Маттес Е. Пришвидшений курс Python. – Видавництво Старого Лева, 2019. –
600с.
3. Lentin J. Learning Robotics using Python. – Packt Publishing, 2018 – 280 p.
4. Дмитрів В., Ланець О. Динаміка і точність роботів. – Львівська політехніка,
2021. – 327с.
5. Saeed B. Niku Introduction to Robotics. – Wiley, 2019.
6. Staple Danny The device and programming of autonomous robots. Projects in
Python and Raspberry Pi. – DMK Press, 2022. – 520 p/
7. Джеремі Блум. Вивчаємо Arduino. Інструменти та методи технічної магії. –
СПб: bhv.–2020.–529 с.
8. Адріан Келер, Гері Бредскі. Learning OpenCV 3. – ДМК. – 2018. – 826 с.
9. Васильєв О. Програмування мовою Python. – Навчальна книга – Богдан, 2019.
– 504с.
10. Васильєв О. Програмування в Python. Теорія і практика – Ліра-К, 2023. –
462с.
11. Anil Mahtani, Luis Sanchez, Enrique Fernandez, Aaron Martinez, Lentin Joseph
ROS Programming: Building Powerful Robots. – Packt Publishing, 2018. – 1233p.
68
69
12. Ramkumar Gandhinathan, Lentin Joseph. ROS Robotics Projects: Build and
control robots powered by the Robot Operating System, machine learning, and virtual
reality, 2nd Edition. – Packt Publishing, 2019. – 456 p.
69
70
10. https://keddr.com/2017/09/shho-take-arduino-i-chomu-tse-idealniy-start-dlya-
maybutnogo-rozrobnika-avtomatizovanih-sistem.
11. Lego MindStorms. Керівництво користувача.
12. Д.А. Корнєєв. Розробка програмного забезпечення для управління /
Колісним роботом з використанням нечіткої логіки [Текст] / Д.А. Корнєєв, О.В.
Шматко. Системи обробки інформації, 2016, випуск 4 (141), с. 45-49.
13. О.В. Ліпанов. Перспективи розвитку роботизованих систем військового
призначення [Текст] / О.В. Ліпанов, М.В. Фесенко. Системи обробки інформації, 2014,
випуск 5 (121), с. 70-73.
14. Д.П. Кучеров. Перспективи розвитку роботизованих систем військового
призначення [Текст] / Д.П. Кучеров, З.М. Копилова, Ю.В. М`якухін. Системи
озброєння і військова техніка, 2007, випуск 1(9), с. 44-46.
15. . Zhang and Z. Zhang, "A survey of recent advances in face detection," in
Technical report MSR-TR-2010-66, 2010.
16. P. Viola and M. Jones, "Rapid object detection using a boosted cascade of
simple features," in CVPR, 2001.
17. J. Cho, B. Benson, S. Mirzaei, and R. Kastner, "Parallelized architecture of
multiple classifiers for face detection," in ASAP, 2009.
18. M. Hiromoto, H. Sugano, and R. Miyamoto, "Partially parallel architecture for
Adaboost-based detection with haar- like features," IEEE Trans. Circuits Syst. Video
Technol., Vol. 19, pp. 41-52, 2009.
19. B. Brousseau and J. Rose, "An energy-efficient, fast FPGA hardware
architecture for OpenCV-compatible object detection," in FPT, 2012.
20. D. Hefenbrock, J. Oberg, N. Thanh, R. Kastner, and S. Baden, "Accelerating
Viola-Jones face detection to FPGA- level using GPUs," in FCCM, 2010.
21. D. Oro, C. Fern'andez, JR Saeta, X. Martorell, and J. Hernando, "Real-time
GPU-based face detection in HD video sequences," in ICCV Workshops, 2011.
22. SC Tek and M. Gokmen, "GPU accelerated real-time object detection on high
resolution videos using modified census transform," in VISAPP, 2012.
70
71
23. L. Acasandrei and A. Barriga, "Accelerating Viola-Jones face detection for embedded
and SoC environments," in ICDSC, 2011.
24. C. Lampert, M. Blaschko, and T. Hofmann, "Beyond sliding windows: object
localization by efficient subwindow search," in CVPR, 2008.
25. NJ Butko and JR Movellan, "Optimal scanning for faster objectdetection," in
CVPR, 2009.
26. VB Subburaman and S. Marcel, "Alternative search techniques for face
detection using location estimation and binary features," Comput. Vision Image
Understanding, vol. 117, no. 5, pp. 551-570, 2013.
27. V. Jain and E. Learned-Miller, "FDDB: A benchmark for face detection in
unconstrained settings," University of Massachusetts, Amherst, Tech. Rep. UM-CS-2010-
009, 2010.
28. G. Bradski, "The OpenCV Library," Dr. Dobb's J. Softw. Tools, 2000.
29. H. Rowley, S. Baluja, and T. Kanade, "Neural network-based face detection,"
IEEE Trans. Pattern Anal. Mach. Intell, vol. 20, pp. 23-38, 1998.
30. M. Everingham, LJV Gool, CKI Williams, JM Winn, and A. Zisserman, "The
pascal visual object classes (VOC) challenge," Int. J. Comput. Vision, vol. 88, no. 2, pp.
303-338, 2010.
31. M. Geilen, T. Basten, BD Theelen, and R. Otten, "An algebra of pareto points,"
Fundam. Inform., Vol. 78, no. 1, pp. 35-74, 2007.
32. C. Goutte and 'E. Gaussier, "A probabilistic interpretation of precision, recall
and f-score, with implication for evaluation," in ECIR, 2005
71
1
КОНСПЕКТ ЛЕКЦІЙ
з дисципліни
Авторська редакція