Андрій Носов

АндрійНосов

Аспірант КПІ ім. Ігоря Сікорського. Досліджую, як мобільні роботи безпечно працюють поруч із людьми: прогноз руху людей, планування і незалежний рівень безпеки на ПЛК.

Це робот моделі PLAI 3D, зібраний з коду до останнього гвинта. Оберіть вузол унизу — він розбереться вздовж осей збирання. Модель можна обертати.

PLAI 3D

Сцена PLAI 3D: мобільний робот, люди в жилетах і прогноз їхнього руху в робочій зоні цеху
Сценарій «Перетин зони інтенсивного руху»: робот, вісім людей і прогноз їхнього руху.

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

23 400
поїздок у повному експерименті; кожну можна відтворити з того самого зерна
55 692
комбінації входів коду контролера перевірено формально, порушень 0
5
сценаріїв: коридор, обгін, перетин зони, перехрестя з іншим роботом, сліпе перехрестя

Працює в браузері, без встановлення. Доступ за паролем.

Публікації

  • 2026Моделювання динаміки мобільних роботів в умовах невизначеності
    Носов А. О., Коржик М. В. Вісник НТУ «ХПІ». Серія: Нові рішення в сучасних технологіях. № 2(28), с. 87–93. DOI 10.20998/2413-4295.2026.02.12

Рівень безпеки на ПЛК

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

  • МоваStructured Text за IEC 61131-3
  • Що перевіряєсигнал життєздатності, вік і діапазон команди, зону сканера, динамічну зону з оцінкою швидкості людини
  • Формальна перевірка55 692 комбінації класів входів і CBMC: шість властивостей безпеки, 0 порушень
  • Контролертест в OpenPLC пройдено, 0 порушень; пакет для CODESYS V3.5 готовий

Повний код блока — у PLAI 3D, вкладка «Як це працює».

(* 2. Вік команди і 3. діапазон команди *)
StaleCmd    := CmdAgeMs > CMD_AGE_LIMIT;
(* x = x хибне лише для NaN *)
CmdValid    := (CmdV = CmdV) AND (CmdW = CmdW);
RangeReject := NOT CmdValid OR (CmdV > V_MAX)
               OR (CmdV < 0.0) OR (ABS(CmdW) > W_MAX);
IF RangeReject THEN
    OutV := 0.0; OutW := 0.0;
ELSE
    OutV := LIMIT(0.0, CmdV, V_MAX);
    OutW := LIMIT(-W_MAX, CmdW, W_MAX);
END_IF;
IF StaleCmd THEN OutV := MIN(OutV, V_DEADLINE); END_IF;
Фрагмент FB_PlaiSafety: нечислова або завелика команда — зупинка, застаріла — обмеження швидкості.

Студентам

Тут будуть матеріали до занять, завдання й корисні інструменти. Якщо щось потрібно вже зараз, напишіть мені на пошту.

Блог

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

Перейти до блогу

Напишіть мені

andriinosov@gmail.com