Як пофіксити MySQL bottlenecks від засновника Percona на Highload fwdays | 13-24.10
×Закрыть

Створення роботів за допомогою ROS (Robot Operating System)

Щодня ми бачимо різноманітні відео з роботами, які стрибають, бігають чи виконують різні трюки. Можна навіть купити робота-пилотяга для прибирання своєї домівки. Роботи поступово, але неухильно стають невіддільною частиною нашого життя.

Мене звати Андрій, я екс-голова відділу розробки програмного забезпечення Shadow Robot Company (однієї з найдавніших робокомпаній Великої Британії), архітектор вбудованих приладів компанії GlobalLogic, а також співзасновник спільноти ROS Ukraine. У статті ви дізнаєтеся, які технології використовують під час розробки сучасних роботів. Я також поділюсь цікавинками зі світу робототехніки.

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

Цифрові (?) технології

Уже майже два десятиліття своєї професійної кар’єри я присвятив автоматизації. Весь цей час, окрім останніх п’яти років, мою роботу спрощено можна було б описати так:

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

У всіх цих випадках ініціатором взаємодії безпосередньо чи опосередковано була людина; споживачем результатів також була людина. Тобто в цій системі людина була альфою і омегою. Наочно це можна описати простою діаграмою.

Рисунок 1

Хоча система брала на себе «важку роботу» планування, кінцевим виконавцем усе ж таки залишалася людина.

Це саме стосується нашого побуту. Проникність технологій, таких як інтернет, електронні листи, соціальні мережі, розумні телефони, з кожним днем зростає. Такі проєкти, як StarLink від SpaceX, покликані поглибити поширення інтернету й супутніх технологій у світі.

60 супутників Starlink, готових до виведення на орбіту. Джерело: Вікіпедія

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

«І що тут поганого?» — запитаєте. Загалом нічого. Та завжди є кілька запитань, що їх кожен ставить собі перед тим, як впустити незнайому людину до себе додому чи сісти в її машину. І недаремно останніми роками суспільство шоковане повідомленнями про злочини, вчинені водіями Uber, що скористалися довірою клієнтів. Це саме стосується і водіїв Uber, які стали жертвами клієнтів.

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

Shadow Robot Company

Близько п’яти років тому я вирішив спробувати розширити свої навички й навчитися автоматизувати наш «аналоговий» світ.

Завдяки моїм навичкам автоматизатора «цифрового» світу мені вдалося влаштуватися на роботу в компанію Shadow Robot Company. Ось кілька цікавинок про цю компанію:

  • штаб-квартира розміщена в Лондоні (Велика Британія);
  • одна з найстаріших британських робокомпаній;
  • перша назва мала бути «Люцифер» (було б оригінально говорити людям, що я працюю на «Люцифері» або на Люцифера);
  • роборука, створена на Shadow, стала першою у світі людиноподібною рукою, здатною взяти й підняти пінту (близько пів літри) пива;

Більше цікавинок можна прочитати в цій статті засновника компанії Річарда Ґрінгіла.

Ще одним цікавим фактом є те, що в той час, коли я прийшов у Shadow, компанія якраз завершувала роботу над проєктом автоматизації роботи шеф-кухаря. Ідея доволі проста. Ви завантажуєте рецепти, один раз записані професійним шеф-кухарем, і робот з високою точністю відтворює ці рецепти на вашій кухні скільки завгодно разів. Як це відбувається, можете побачити на відео.

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

Robot Operating System

Багато компаній (включно з моїм попереднім роботодавцем) використовують ROS (Robot Operating System) для розробки своїх роботів. Цей набір бібліотек створили понад 10 років тому студенти-робототехніки для того, щоб не переписувати ті самі речі.

Тепер це доволі відома у світі система, і над версією ROS 2 співпрацює низка провідних організацій, а в Technical Steering Committee (TSC) входять такі відомі компанії, як Amazon, Intel, Microsoft, Toyota.

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

Отже, ROS забезпечує апаратну абстракцію, драйвери пристроїв, бібліотеки, візуалізатори, передачу повідомлень, керування пакетами й багато іншого. Оскільки роботи, яких будували десятиліття тому, були вкрай ненадійними, систему проєктували так, щоб відмова одного з вузлів не зупинила роботу всього робота. Тому ядро системи побудоване навколо обміну повідомлень між вузлами, які нічого не знають один про одного. Все, що відомо — це назва каналу обміну повідомленнями, його формат і тип виклику.

Приклад підсистем робота

Є три типи виклику:

  1. Звичайний відправник і отримувач (publisher — subscriber). Відправник надсилає своє повідомлення отримувачеві й не чекає на відповідь, а просто й далі виконує своє завдання. Наприклад, камера може публікувати фото з частотою 30 Гц.
  2. Виклик сервісу (service). У цьому випадку відправник зацікавлений в отриманні відповіді на свій запит і очікує відповіді. Наприклад, сервіс із пошуку найкоротшого шляху на мапі з точки А в точку В.
  3. Сервіси зі зворотним зв’язком (action server), що працюють як другий тип з можливістю отримання зворотного зв’язку про стан виконання завдання. Наприклад, сервіс завантаження файлу в хмарне сховище може повертати відсоток пересланих даних щосекунди.

З чого почати

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

Один з найпростіших способів почати працювати з роботами — узяти за основу робота з готовою електронікою і механікою та додавати до нього функційність. Для навчальних цілей можна вибрати офіційного робота для вивчення ROS TurtleBot 3. Великий перелік роботів, що підтримують ROS, можна знайти тут.

Другий варіант — купити готове рішення для частини робота, наприклад роборуки для робокухні від Shadow чи роборуку для українсько-американського робота для прибирання офісних вбиралень, а іншу частину робота доробити самостійно або зінтегрувати зі ще одним готовим роботом.

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

Безплатні книжки й ресурси для глибшого вивчення ROS:

Як будують роботів з ROS

Загалом розробка робота починається з програми CAD (computer-aided design). Найпопулярнішою серед розробників роботів є SolidWorks. Останнім часом у спільноті розробників роботів з відкритим кодом також набуває популярності OnShape (онлайн-CAD, безплатний для відкритих моделей). Розробка електроніки для робота також проводиться в Altium.

Процес розробки мобільного робота

Наступна фаза розробки полягає у створенні URDF (Unified Robot Description Format) робота. URDF містить інформацію про вигляд, межі робота (для розрахунку колізій) і фізичні властивості (маса, інерція, вузли). Завдяки SolidWorks to URDF Exporter можна згенерувати URDF із CAD-моделі.

Звичайно, для людей, що ніколи не стикалися зі створенням моделей у CAD-програмах чи проєктуванням електроніки, перший пункт видається цілим новим непізнаваним світом, який їм треба освоїти. Проте завдяки ROS, його на перших порах можна оминути й зайнятися розробкою симульованої моделі робота. Це дозволить перевірити алгоритми завчасно, до появи фізичного робота. Стосовно вигляду робота, то URDF відмінно працює з примітивами, такими як прямокутний паралелепіпед, циліндр і куля. Відповідно можна створити першу «грубу» модель робота й спробувати налаштувати регулятори (controllers) у симуляції.

Робот Leobot складається з примітивних фігур (крім коліс Ілона)

Далі вибираємо, які регулятори потрібні для робота. Наприклад, для робота з двома моторами й колесами плюс третім пасивним колесом, що обертається в усі сторони (як в офісному кріслі), можна використати диференціал. Для цього можна скористатися готовим регулятором з підсистеми ROS Control.

Ці дії вже були виконані під час виготовлення таких роботів, як TurtleBot3 та інших (з підтримкою ROS). Тому працюючи з ними, ви зможете зосередитися на розробці високорівневих алгоритмів поведінки, зокрема автономної навігації. А для людей, що не хочуть витрачати кілька сотень доларів на навчального робота, є інший шлях. Завдяки ROS можна запустити симуляцію комерційно доступних роботів і на них випробовувати свої алгоритми. Зокрема, є доступна симуляція для TurtleBot3, а також Atlas від Boston Dynamics, як і для більшості роботів, що підтримують ROS.

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

Симуляція Leobot і Львівської національної галереї мистецтв імені Бориса Возницького в середовищі Gazebo

Одну з найглибших інтеграцій з ROS має симулятор Gazebo. До того ж Gazebo безплатний і має відкритий код. Та це не єдиний симулятор, інтегрований з ROS, і відповідно до своїх потреб і фінансових можливостей можна підібрати продукт, що задовольнятиме вимоги для певного класу завдань. Ще одним цікавим розширенням Gazebo є gzWeb, який дозволяє показувати симуляцію у веббраузері.

Симуляція Leobot і Львівської національної галереї мистецтв імені Бориса Возницького в середовищі GzWeb

Далі, зверху вже створеного функціонала, можна додавати навігацію. Навігаційна підсистема ROS завдяки підбору параметрів дозволяє налаштувати алгоритми побудови мап, пошуку (локалізації) робота на мапі, переміщення з точки А в точку Б на мапі.

Усі ці речі можна налагодити й налаштувати, а також створити набір інтеграційних тестів, що виконуватимуться на сервері автоматично. Зокрема, можна випробувати робота в симульованих приміщеннях перед тим, як його тестувати в «аналоговому» світі.

Для контролю моторів фізичного робота переважно додатково використовують мікроконтролер(и). Мікроконтролер можна під’єднати через UART і кабель USB до TTL. Для цього можна використати підсистему ROS, що має назву rosserial.

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

ROS Ukraine

Найліпший спосіб щось вивчити чи зробити — зібрати гурт однодумців і вибрати собі цікаве завдання. Майже три роки тому ми заснували спільноту ROS Ukraine, головна мета якої — популяризувати робототехніку й автоматизацію з використанням ROS в Україні.

Проєкт, над яким тепер працює ROS Ukraine, називається LeoBot і має відкритий код з ліцензією MIT. Це — робот-аватар, майже як в однойменному фільмі. Користувач, завдяки розумному телефону, Google Cardboard, Bluetooth-джойстику й інтернету, може «переноситися» в тіло робота й бачити його «очима», чути «вухами», говорити. Робота можна використовувати для відвідувань картинних галерей, музеїв, палаців, конференцій тощо в різних частинах світу, не виходячи зі своєї домівки.

Стереозображення з Leobot у симуляції Львівської національної галереї мистецтв імені Бориса Возницького

Завдяки середовищу Docker, симуляцію Leobot і Львівської національної галереї мистецтв імені Бориса Возницького можна запустити на широкому спектрі операційних систем, як-от: Ubuntu, RHEL, Debian, Windows і MacOS. Для тих, хто хоче спробувати запустити це середовище, документація доступна тут (для MacOS мала б спрацювати версія для Windows, але це неперевірене припущення). Docker дозволяє за мінімальних зусиль почати експериментувати з роботом.

Оскільки роботи — це доволі складна й комплексна галузь, то на проєкті знайдеться робота спеціалістам різного профілю. Частина завдань стосується Web і NodeJs, JavaScript. Інший рівень завдань пишеться на Python із застосуванням машин станів, низький рівень використовує C/С++. Також не бракує завдань з машинного зору й навчання, доповненої реальності тощо. Якщо вас цікавить участь у такому проєкті — приєднуйтеся до Facebook-групи ROS Ukraine.

Глобальна картина

Світ налаштовується на четверту індустріальну революцію. Цікаво, що стаття у вікіпедії не містить ніяких прямих згадок про роботів. Проте виробники роботів ретельно готуються до нової революції. З’являються цілі нові класи роботів.

Зокрема, на відео зображено робота, якого ми на Shadow Robot Company зібрали на замовлення компанії «Беко» для реклами нової кавоварки. Це кобот компанії Universal Robots UR5.

Коботи, на відміну від традиційних роботів, можуть працювати пліч-о-пліч з людиною на заводі; і їм не треба клітки для того, щоб вберегти людину від травм. На заводах четвертої індустріальної революції люди працюватимуть разом з коботами або керуватимуть ними. Нові класи роботів вимагають нового програмного забезпечення, що робитиме їх «розумнішими»; ідеться не лише про алгоритми машинного навчання, а й інші методи, яких у робототехніці не бракує. Зокрема, це планування траєкторій, маршрутів, уникнення перешкод, побудова мап, орієнтування по мапі тощо.

Як я вже згадував раніше, ключові гравці на ринку хмарних рішень активно беруть участь у розробці рішень для роботів наступних поколінь. ROS відіграє роль платформи, навколо якої будуються такі рішення. Ось кілька сервісів, що пропонують хмарні компанії:

Україна, на жаль, поки що не в перших лавах розробників роботів. Є низка причин, чому так відбувається, але як наслідок ми не отримуємо замовлень на розробку роботів. А як немає замовлень, то немає потреби в спеціалістах. А коли немає достатньої кількості спеціалістів, то не буде й замовлень.

Один з варіантів виходу з цього замкненого кола — створювати клуби робототехніків. Саме такою ініціативою і є ROS Ukraine.

Як прилучитися

Якщо ви запалилися ідеєю створити корисного для себе чи інших робота й хочете поспілкуватися з однодумцями, то найлегший спосіб здійснити це — прилучитися до Facebook-групи ROS Ukraine. Там ми ділимось останніми новинами зі світу робототехніки та ROS, станом справ з Leobot і обговорюємо цікаві теми.

Також 20–21 березня 2020 року разом з нашим спонсором Tataryn Engineering ми проводимо хакатон у Львові. Так збіглося, що він відбуватиметься в третю річницю створення ROS Ukraine. Темою хакатону буде інтеграція низькорівневого контролю колесами Leobot з високорівневими регуляторами. Дивіться деталі про правила, обладнання та підготовчі матеріали в описі хакатону.

Підсумки

Роботи дедалі більше входять у наше повсякденне життя. Є низка причин, чому людство й далі застосовує ці рішення і чому, зокрема, чергова індустріальна революція залежатиме саме від них. Це світова тенденція, за якою ми можемо спостерігати осторонь або ж прилучитися до неї (на рівні хобі чи професійно).

LinkedIn

18 комментариев

Подписаться на комментарииОтписаться от комментариев Комментарии могут оставлять только пользователи с подтвержденными аккаунтами.

У зв’язку із каратнином хакатон відміняється. Спільнота ROS Ukraine планує провести онлайн збори із цікавими доповідями. Слідкуйте за анонсами у Facebook групі www.facebook.com/groups/279366215828155 :)

Запрошую на святкування 3річчя спільноти ROS Ukraine.
Будемо святкувати 3 дні із трьома доповідями (одна доповідь на день) 7,8 і 9 квітня 2020.
Деталі і безкоштовна реєстрація тут www.facebook.com/events/528738304500386 :)

Також 20–21 березня 2020 року

карантин!
Ваша фраза:

Для навчальних цілей можна вибрати офіційного робота для вивчення ROS TurtleBot 3.

пояснює наступне

Україна, на жаль, поки що не в перших лавах розробників роботів. Є низка причин, чому так відбувається, але як наслідок ми не отримуємо замовлень на розробку роботів. А як немає замовлень, то немає потреби в спеціалістах. А коли немає достатньої кількості спеціалістів, то не буде й замовлень.

500 баксів — це на секундочку таврію б.у можна придбати і Оптімуса Прайма з неї зробити =)

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

цей шлях називаеється Arduino. І давайте визнаєм той факт шо піратство для України то норма, тому «клони» Arduino з того ж ібею або аліекспресу цілком собі вихід із ситуації. Робимо банальний метчінг пляшки пива/пачки цигарок VS atmega 328 pro mini(щоб не порушувати права ТМ). Тут вже можна про щось дискутувати, мінімально заціквати пересічного старшокласника або студента. Далі поступово нарощувати скіли з "рокет саянс«(RTOS, ROS, ML, CVision). А то «роботи» звучить круто, але ви відразу кидаєте в прірву термінів і понять які от сходу фіг зрозумієш. Банальний вступ з Arduino + servo + stepper+ бесколекторний двигун з мінімальним повтором курсу фізики за 7й клас і ви вже маєте «спєца», а далі вже як з web-ом, хтось так і залишиться формо/ардуіношльопом, а з когось може й будуть люди.
І ще одна порада. Перестаньте піарити пропрієтарну хрінь як панацею для швидкого старту. Наприклад альтіуму є прекрасна відкрита(БЕЗКОШТОВНА) альтернатива у вигляді KiCAD, замість того ж солідворку для початку і Blender-а вистачить, клауд майкрософта(будь він проклятий) заміняємо Firebase. Для вступу і навчання цього більше ніж достатньо.

Взагалі-то

Arduino

це опен соурс хардвар, то ж його клонування не є порушенням авторських прав

Взагалі-то

йдемо сюди www.arduino.cc/en/main/FAQ
Читаємо наступне

These files are licensed under a Creative Commons Attribution Share-Alike license, which allows for both personal and commercial derivative works, as long as they credit Arduino and release their designs under the same license.

Підкреслюю: as long as they credit Arduino and release their designs under the same license.
Багато ви бачили напів підвальних китайських виробництв що дотримуються ліцензійної згоди? Ліцензуються в Arduino?

його клонування не є порушенням авторських прав

Вам ще може пояснити чим модифікація від клонування відрізняється?

Не певен що розумію що ви маєте на увазі під «Ліцензуються в Arduino?» — ні credit Arduino ні release their designs under the same license не потребують ніякого правочину. Що до напів підвальних китайських виробництв то я взагалі не бачив виробництв, бачив тільки їх продукцію і те що я бачив цілком підходить під визначення credit Arduino та release their designs under the same license оскільки є абсолютним клоном з точністю до шрифтів на silk layers. І так, якщо раптом мені будуть потрібні якісь пояснення від вас, то я напишу вам в приват.

І так, якщо раптом мені будуть потрібні якісь пояснення від вас, то я напишу вам в приват.

То вам варто було б написати в приват відразу, а не залишати коментар, бо ви явно не зрозуміли мою точку зору :)

не потребують ніякого правочину.

це ваші домисли. Я вам чітко дав референс на умови. Незнання законодавства не звільняє вас відповідальності!

є абсолютним клоном з точністю до шрифтів

ще раз! Клон і модифікація різні речі! Ви не можете позиватись в компанію Xerox на будь який копіювальний апарат бо він має точно такий функціонал! В «Ардуіно» переважна кількість так званих «клонів» не є копією, а являється модифікацією, із застосуванням дешеших компонентів та видозмінених вузлів(часто їх відсутності).

бачив тільки їх продукцію
і те що я бачив
є абсолютним клоном з точністю до шрифтів

звучить як експертна заява. Бідні ж ваші клієнти з таким Iot консультантом.

Більше знаків оклику! Це створює ілюзію компетентності :)
Техніка фірми Xerox не є open source hardware та захищена багатьма патентами. То ж ваша аналогія в цьому випадку притягнута за вуха.
Перечитайте уважніше умови ліцензії що ви так чітко цитуєте. Там усього дві умови які можна виконати без правочинів — (1) credit Arduino (2) release design under the same license.
І створювати як клони так і commercial derivative works із застосуванням дешеших компонентів та видозмінених вузлів чи навіть їх відсутності. В цьому і є сутність open source.
Вимога що до ліцензування — це ваші домисли

Це створює ілюзію компетентності :)

ну фактами вас не переконати, тому хоча б ілюзією намагаюсь :)

То ж ваша аналогія в цьому випадку притягнута за вуха.

згоден що вона двояка, ідея в тому що «народна» назва(використання її для іншої хоч і схожої групи товарів) не додає відповідальності власнику торгової марки, але й не відміняє відповідальності інших осіб за створення контрафакту від якого компанія власник ТМ хоче відхреститись...

(1) credit Arduino (2) release design under the same license

ага і називаєте свій проект на кшталт, цитую себе:

atmega 328 pro mini(щоб не порушувати права ТМ)

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

І створювати як клони так і commercial derivative works із застосуванням дешеших компонентів та видозмінених вузлів чи навіть їх відсутності. В цьому і є сутність open source.

так я ж про то і стверджую, ви можете клонувати(тоді ліцензуйтесь і називайтесь ардуїною) або можете модифікувати(тоді вірогідність відповідності стандартам компанії ймовірно зменшується) і компанія сама вас признає контрафактом. Знову приводжу референс, для «ілюзії» компетентності(сарказм): www.arduino.cc/en/products/counterfeit
Вони навіть кривого нанесення маски цураються, не кажучи про якість самих компонентів.

Дуже дякую Денисе, що прочитали статтю і написали відгук.
Головною метою було показати, які технології використовують при розробці реальних роботів. Про методологію викладу можна сперечатися, проте намагався згадати речі, терміни, технології, які при бажанні можна самому/самій знайти і розібратися або робити це гуртом в ROS Ukraine або свій робо-гурток.
Відносно права власності коду, дякую за пораду. Визнаю, цілу статтю займався рекламою програмного забезпечення. Проте — це був ROS, ядро якого розповсюджується із BSD ліцензією. Решту продуктів згадував із власного досвіду і вірно кажете, у є альтернативи із відкритим кодом.

Коли робив post mortem review для продукту з минулої роботи, то зрозумів, що винайшов та побудував свій ROS.

Для production воно не підійде, але зробити кілька (десятків) прототипів допоможе.

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

Немного сталкивался. Впечатления резко негативные:
1. Убогая и часто неправильная документация. Десятки параметров, которые непонятно как и на что влияют.
2. Более-менее приличное качества — у core. Другие пакеты — треш и угар.
3. Далеко не все пакеты совместимы с последней версией. Нужные нам SLAM и lidar пакеты отставали на два мажорных релиза.
4. Описание конфигурации в xml. Офигенно удобно отлаживать!
5. Очень мало документированных демок. Мы искали пейперы со студенческими проектами, чтобы понять, какие ключи в конфигах за что отвечают.
6. Сопряжение с реальным железом... Вобщем, полыхало. Понять, как скрестить route planner с контроллерами двигателей, энкодерами и в каком виде (и куда) скармливать одометрию, нифига не просто. Потому что дока, опять же, никакая.
7. По субъективным ощущениям, управление железом в асинхронном режиме через очередь сообщений, не айс. Но могу ошибаться.
8. Граф зависимостей между очередями очень быстро перестает влазить в 24 дюймовый моник.
9. Возможностей для отладки и диагностики почти нет. Если что-то не работает, то поможет только метод тыка и бубен.

6. Сопряжение с реальным железом... Вобщем, полыхало. Понять, как скрестить route planner с контроллерами двигателей, энкодерами и в каком виде (и куда) скармливать одометрию, нифига не просто. Потому что дока, опять же, никакая.
7. По субъективным ощущениям, управление железом в асинхронном режиме через очередь сообщений, не айс. Но могу ошибаться.

Ось тут відмінність студентських іграшок від продуктів для реального використання. І ROS ні до чого, це складні проблеми.

7. По субъективным ощущениям, управление железом в асинхронном режиме через очередь сообщений, не айс. Но могу ошибаться.

Вот это — очень интересная тема, общая для любого и всяческого IoT.

Можно (очень сильно упрощая) посылать устройству отдельные простые команды «включить мотор» и «выключить мотор». А можно придумать одну сложную команду вида «включить мотор на столько-то миллисекунд», и доставка этой команды будет вполне атомарной.

и доставка этой команды будет вполне атомарной.

что конкретно вы имеете в виду?

А можно придумать одну сложную команду вида «включить мотор на столько-то миллисекунд»

Окрім необхідності мати інтерпретатор складної команди з таймером на боці отримувача, є ще проблема, що дія за командою «ввімкнути двигун» виконується з деякою похибкою (на прикладі двоколісного роботу: двигун набирає обертів деякий час, приєднані до двигуна колеса пробуксовують, колеса трохи різного діаметру тощо). Від циклу вимірювання-корекція нікуди не подітися.

Вадиме, дякую за відгук.
Багато людей у спільноті ROS (у тому числі і я) погодяться із тим, що документація це, наразі, слабе місце платформи.
Ми пробуємо закрити цю прогалину навчальним проєктом Leobot.
Який дозволить вивчити речі із поганою документацією.
Із версіями пакетів, все залежить від того хто його підтримує.
Відносно інтеграції із залізом, це тема на окрему статтю. Можливо це посилання стане у нагоді. Це шаблон коду, який зв’язує підсистему ROS Control із залізом github.com/...​s/ros_control_boilerplate . Протокол взаємодії із залізом треба вставити у функції read і write github.com/...​eneric_hw_interface.h#L81 (тобто написати власноруч).
Із добрих новин є те, що зараз ведеться активна розробка ROS 2 у якій (як я писав у статті) беруть участь великі комерційні компанії. Вони переосмислюють ROS 1, який виріс із переважно наукових установ (звідси і приклади у наукових статтях і 100500 параметрів).

Подписаться на комментарии