Знаходження шляху 7-суглобною роборукою у заданому середовищі

Loading...
Thumbnail Image

Date

2022

Journal Title

Journal ISSN

Volume Title

Publisher

Національний університет ”Львівська політехніка”

Abstract

Магістерська кваліфікаційна робота виконана студентом групи КНСШ-22 Шаварським Максимом Андрійовичем. Тема “Знаходження шляху 7-суглобною роборукою у заданому середовищі”. Робота направлена на здобуття ступеня магістр за спеціальністю 122 «Комп’ютерні науки». Кожного року кількість роботів у світі збільшується. Потреба у роботах зростає неймовірно стрімко, адже вони є чудовими помічниками. Роботи здатні виконувати роботу, яку виконувати людині складно, небезпечно для її здоров’я та навіть життя або, навпаки, циклічну або роботу яка не вимагає застосування для неї людини. Проект складається з 2 частин: Hardware & Software. Hardware частина проєкту: робот складається металевого каркасу, який служить місцем зберігання усієї електроніки та місцем кріплення руки-маніпулятора під кутом 90 градусів, з 7 ступенями вільності та точністю позиціонування у 0.1мм. Software частина проєкту: візуалізація відбувається за допомогою Qt3D Framework. Qt3D це підпакет фреймворку Qt, який призначений для створення UI. Зовсім недавно, вони випустили пакет Qt3D. Він виявився дуже зручним і зрозумілим у користуванні, тому я його використав для візуалізації. . Для симуляції 3D світу було використано 3D physics engine Bullet. Bullet — це швидкий і простий у використанні модуль Python для моделювання робототехніки та машинного навчання. За допомогою Bullet ви можете завантажувати шарнірні тіла з URDF, SDF, MJCF та інших форматів файлів. PyBullet забезпечує симуляцію прямої динаміки, обчислення зворотної динаміки, пряму та зворотну кінематику, виявлення зіткнень і запити на перетин променів. Bullet містить новий Bullet C-API, який розроблений таким чином, щоб бути незалежним від базового механізму фізики та механізму візуалізації, тож ми можемо легко перейти на новіші версії Bullet або використовувати інший механізм фізики чи механізму візуалізації. За замовчуванням Bullet використовує API Bullet 2.x на ЦП. Ми також розповімо про Bullet 3.x, що працює на GPU з використанням OpenCL. Існує також C++ API, схожий на PyBullet. Навчання буде відбуватись за допомогою Tensorflow, Keras (Python). Для комунікації між нашою симуляцією та програмою навчання моделі буде відбуватись за допомогою ZeroMQ [15]. Низькорівневий пакет для передавання інформації між програмами. Завдяки хорошій документації, легкості написання та розуміння коду був використаний в даній роботі. ZeroMQ [15] дозволяє використовувати три основні концепції для передавання даних: publisher/subscriber, service/client, action server/action client. Publisher/Subscriber концепція. застосовується, коли потрібно часто оновлювати інформацію про стан одного з об'єктів системи. Наприклад, стан роборуки у кожен момент часу. Service/Client концепція. Застосовується, коли існує сервіс, який вміє обробляти та повернути дані при запиті від клієнта.Наприклад отримати фідбек симуляції для опрацювання. Action server/Action client концепція. Схожа на концепцію Service/Client, але має одне покращення. Застосовується, коли час обробки запиту клієнта не є миттєвим. Дає можливість відслідковувати прогрес виконання запиту та реагувати на нього. Результатом виконання магістерської роботи буде автономний пакет, який буде містити графічний інтерфейс користувача для відлагодження та тестування програмного забезпечення, інтерфейс для запуску тренування моделі із вибраними параметрами та засоби візуалізації для тренування та тестування моделі. Даний пакет призначений для будь-яких роботів з різними ступенями вільності роборук, які повинні оперувати у динамічному середовищі і виконувати специфічні задачі. Master’s degree work of the student of the group CSAI-22 Shavarskyi Maksym Andriiyovych. The topic is "Pathfinding by a 7-joint robot in a given environment". The work is aimed at obtaining a master's degree in 122 "Computer Science". Nowadays, robotics can be found everywhere. Robots are replacing people little by little. In industry, robots already occupy their functional niche. Usually, they perform difficult, dangerous work for humans. Also, the accuracy and quality of work is ten times greater than that of humans. Thanks to this, the efficiency of the production of robots increases, and costs decrease. Robots can be used in many areas. For example, the job of a cleaner does not require high skills for employment and further work. The work performed by the cleaner is usually cyclical. A person working as a cleaner is constantly in contact with dirt, which exposes him to a direct danger to his health. As a result, a person is not motivated, may often miss work due to illness. All these factors indicate that this profession can be robotized. For this, the robot needs an algorithm that will help it interact with the environment. It is the path finding that helps him quickly, avoiding obstacles on the way, reach his goal and, for example, pick up garbage from the floor and throw it in the trash can, open the door of the toilet cubicle, flush the water in the urinal, etc. This algorithm is the basis of any robot that uses multi-jointed robotic arms. The project consists of 2 parts: Hardware & Software. Hardware part of the project: the robot consists of a metal frame, which serves as a place for storing all electronics and a place for attaching the manipulator arm at an angle of 90 degrees, with 7 degrees of freedom and a positioning accuracy of 0.1 mm. Software part of the project: visualization takes place using the Qt3D Framework. Qt3D is a subpackage of the Qt framework, which is designed for creating UI. Most recently, they released the Qt3D package. It turned out to be very convenient and easy to use, so I used it for visualization. . 3D physics engine Bullet was used to simulate the 3D world. Bullet is a fast and easy-to-use Python module for robotics simulation and machine learning focused on sim-to-real transfer. With Bullet you can load articulated bodies from URDF, SDF, MJCF and other file formats. PyBullet provides forward dynamics simulation, inverse dynamics calculations, forward and inverse kinematics, collision detection, and ray intersection queries. Bullet includes a new Bullet C-API that is designed to be independent of the underlying physics engine and rendering engine, so we can easily upgrade to newer versions of Bullet or use a different physics engine or rendering engine. By default, Bullet uses the Bullet 2.x API on the CPU. We'll also talk about Bullet 3.x running on GPUs using OpenCL. There is also a C++ API similar to PyBullet. Training will take place using Tensorflow, Keras (Python). For communication between our simulation and the model training program, ZeroMQ [15] will be used. A low-level package for transferring information between programs. Due to good documentation, ease of writing and understanding the code was used in this work. ZeroMQ [15] allows the use of three main concepts for data transfer: publisher/subscriber, service/client, action server/action client. Publisher/Subscriber concept. It is used when you need to frequently update information about the state of one of the system objects. For example, the state of the robot at each moment of time. Service/Client concept. It is used when there is a service that can process and return data upon request from the client. For example, to receive simulation feedback for processing.

Description

Keywords

алгоритм пошуку шляху, навчання з підкріпленням, інверсна кінематика, глибоке Q навчання, path finding, reinforcement learning, inverse kinematics, deep q learning

Citation

Шаварський М. А. Знаходження шляху 7-суглобною роборукою у заданому середовищі : пояснювальна записка до магістерської кваліфікаційної роботи : 122 «Комп’ютерні науки» / Максим Андрійович Шаварський ; Національний університет «Львівська політехніка». – Львів, 2022. – 68 с.

Endorsement

Review

Supplemented By

Referenced By