Роботи — це складні системи, які поєднують у собі апаратне забезпечення, програмне управління та електричні характеристики протоколів зв’язку. Часто, коли робот поводиться несподівано, важко визначити, чи причина криється у керуючій політиці (алгоритмі управління), у програмному забезпеченні або в апаратних особливостях. Рішаб Гарг, інженер з робототехніки Tesla Optimus, поділився досвідом діагностики таких проблем і розповів про типові помилки, що виникають при розробці високопродуктивних робототехнічних систем.

Проблема затримок та розподілу обробки даних
Основна задача — передати дані від сенсорів до актуаторів через центральний процесор і забезпечити своєчасне виконання політики управління. Для цього часто використовується протокол CAN, який є відкритим, доступним і достатньо швидким для багатьох компонентів. Однак навіть при передачі близько 10 повідомлень на цикл із швидкістю 1 мегабіт на секунду виникають затримки близько 1 мілісекунди, що може викликати розриви у циклі обробки даних.
«Навіть невелика кількість повідомлень може наситити шину CAN настільки, що час циклу системи співпаде з часом передачі даних», — пояснює Рішаб Гарг.
Щоб обійти цю проблему, застосовують багатонитковість і конвеєрну обробку: окремі потоки відповідають за прийом, обробку політики та передачу даних. Такий підхід дозволяє паралельно опрацьовувати різні етапи циклу і зменшити загальну затримку.
Діагностика «рваної» роботи актуаторів
Після впровадження багатониткової архітектури виникають нові проблеми: актуатори можуть «рватися» або видавати дивні звуки через те, що команди приходять нерівномірно. Для виявлення причин використовується зовнішній трансивер, який підключається до шини CAN і передає дані на комп’ютер для аналізу за допомогою утиліти candump.
«Ми бачимо, що замість рівномірних інтервалів у 2 мілісекунди з’являються великі пропуски, наприклад 4 мілісекунди, після яких йде майже миттєве повідомлення», — зазначає інженер.
Такі нерівномірності виникають через розсинхронізацію потоків передачі (TX) або прийому (RX). Якщо політика управління виконується довше, ніж очікується, повідомлення накопичуються і потім відправляються разом, що викликає «стрибки» у поведінці робота.
Вирішення проблем синхронізації та пріоритетів
Для усунення розсинхронізації використовують примітиви синхронізації, як-от умовні змінні або семафори. Якщо ж система працює на мікроконтролерах або реального часу ОС без таких засобів, додають «подушки» часу, щоб уникнути пропусків повідомлень.
«Важливо мати синхронізацію між потоками, інакше політика працюватиме з застарілими даними, що викликає ефект «підстрибування» моторів», — пояснює Рішаб Гарг.
Ще одна проблема — логування. Надмірне записування даних на диск може призвести до блокування основного циклу управління, що спостерігалося на Raspberry Pi з SD-картою, де затримки сягали 30 мілісекунд. Рішення — виділити окремий процесор для логування, щоб не впливати на роботу основної системи.
Особливості роботи з мікроконтролерами та пріоритетами процесів
У мікроконтролерах логування відбувається через периферійні пристрої, що також займає час. Якщо пакет даних пропускається і про це логують, це може викликати каскадне падіння продуктивності — наступні пакети теж пропускаються через затримки логування.
Також існує проблема інверсії пріоритетів: якщо процеси управління мають надвисокий пріоритет і блокують ядро операційної системи, то система не отримує нові дані вчасно, що призводить до тривалих збоїв у роботі.
«Ми повинні правильно налаштовувати пріоритети і розуміти, як працюють всі частини системи, щоб уникнути голодування ресурсів», — підсумовує інженер.
Висновки
Розробка високопродуктивних робототехнічних систем вимагає глибокого розуміння взаємодії між апаратним забезпеченням, програмним забезпеченням і протоколами зв’язку. Важливо враховувати затримки передачі даних, синхронізацію потоків, вплив логування на продуктивність та правильне налаштування пріоритетів процесів. Тільки комплексний підхід дозволяє створити надійні і ефективні системи управління роботами.
Джерело: Youtube: Ai-Engineer