PunchSouth Korea plans criminal charges for smart-glasses exam cheatsCNN TürkFon yatırımcısına ara ödeme başlıyor: Öncelik hangi fonların, üst sınır ne?The Jerusalem PostFrance reimposes restrictions on Israeli defense firms at Euronaval 2026ESPNTransfer rumors, news: Man United eye move for Leeds' Calvert-Lewin in JanuaryInquirerBatac inaugurates first automated weather station in Ilocos NorteDaily MaverickLOCAL ELECTIONS 2026: MK support down as Zuma disappears from stump — new big poll20 MinutenEinbruch in Garage: Zwei 16-Jährige nach wilder Flucht verhaftetZDF heuteEntdecken Sie das ZDF-NachrichtenstudioVanguardObi’s 2027 economic plan targets N500/$1, says UtomiEuronewsUS: Trump hands out sweets as Air Force One soars overheadESPN CricinfoSehwag, Dravid in India squad for Under-19 Asia Cup; Raichandani to leadSoompiKwak Sun Young Gets Back Behind The Wheel To Hunt Down Ruthless Criminals In “Crash 2”
The Daily Newsstand · Free, Always
Friday, October 30, 2026

Мечтают ли роботы о свободных ядрах?

Translate

SpeedyBot стоит, но в коротком замере занято около 70% суммарного времени восьми CPU. Проверили потребителей и убрали работу, не влияющую на навигацию.

Я Лев Ларин, инженер Unibot. Мы подключаем робота-доставщика Alfa Robotics SpeedyBot к своей платформе UNIBOT Fleet, добавляя на борт собственный Edge. Это десятая часть серии: профиль CPU и проверка оптимизаций.

Начало серии · ← Часть 9: Джойстик отпустили. Робот не в курсе

Шкала и цена измерения

9 октября подробный сбор за примерно 45 с дал 39 интервалов и среднюю загрузку 69,45% на общей шкале восьми CPU. Здесь 100% означает занятость всех ядер. В шкале процессов одно ядро равно 100%: 111,83% процесса локализации соответствуют 13,98% всей машины.

Подробный сборщик сам занял 1,59 процентного пункта. Лёгкий повтор без обхода потоков за примерно 45 с дал 67,56%, включая 0,334 пункта сборщика. Это разные окна, а не выигрыш от оптимизации; дополнительную цену SSH не выделяли.

Потребители в лёгком замере:

Кто работает

Доля общего времени восьми CPU

Локализация: где робот находится на карте

14,63%

RGB-D: цветное изображение и глубина

9,77%

PointPillars: распознавание по лидарным данным

5,59%

YOLO: распознавание по изображению

4,88%

Навигация и карты препятствий

4,69%

Объединение наблюдений и слежение за объектами

2,95%

Два штатных Java SDK

2,93%

Наш Edge и адаптеры к штатной системе

2,90%

Остальное, включая наблюдателя и прерывания

19,23%

Строки — части общей загрузки с округлением.

Сохранённый профиль неподвижного робота: доли времени восьми CPU слева и горячие участки отдельных процессов справа

Сохранённый профиль неподвижного робота: доли времени восьми CPU слева и горячие участки отдельных процессов справа

Локализация сопоставляет измерения с картой, RGB-D фильтрует глубину, модели распознают объекты, навигация обновляет препятствия. В CPU-профиле локализации преобладал поиск ближайших точек, у RGB-D — фильтрация глубины. Процесс video_stream обслуживал навигационную RGB-D-камеру, не четыре обзорные камеры из статьи про видео.

Что остаётся CPU при работающем ускорителе

YOLO исполняется на Rockchip NPU, PointPillars — на Hailo-8. CPU готовит входы и разбирает результаты.

Распределение работы: CPU готовит вход, NPU исполняет модель, CPU разбирает результат.

Распределение работы: CPU готовит вход, NPU исполняет модель, CPU разбирает результат.

У YOLO примерно три четверти пользовательских CPU-сэмплов процесса пришлись на математическую постобработку. Это доля процесса, не всей машины и не времени NPU. У PointPillars заметную часть занимали OpenCV-подготовка и преобразование лидарных данных. Загрузку Hailo в этом исследовании не измеряли; проценты CPU и ускорителей не складываются.

Отладочная картинка без подписчиков

Fusion получал RGB, преобразовывал и копировал его, рисовал рамки, затем проверял наличие зрителя. Без подписчиков работа всё равно выполнялась. Только RGB-вход давал около 7,65 МБ/с локальных данных.

Удалили ветку отладочного изображения и её подписку. На 300 одинаковых тестовых кадрах итоговые объекты совпали точно; проекция и синхронизация сохранились. Основная работа fusion продолжилась, поэтому всю загрузку процесса экономией не считаем.

Кеш клеток пользовательских зон

Слой зон повторно переводил неизменные многоугольники в клетки. На локальной карте 480×480 при обновлении 4 Гц двойной цикл мог проходить прямоугольник даже без зон.

Клетки кешируем до изменения зон или геометрии сетки. Первую версию с изменёнными областями обновления отвергли: она конфликтовала с заводским фильтром карты. Сохранили прежние границы и только кеш расчёта. Прошли 320 прямых сравнений клеток и 160 проверок полного конвейера слоёв, включая удаление зон и движение окна.

В парных неподвижных замерах move_base снизился с 4,884 до 4,133% общей шкалы: около 0,75 процентного пункта машины, или 15,4% прежней нагрузки процесса.

Запись позы и разбор логов

У временного снимка последней позы убрали принудительный fsync, сохранив закрытие файла, атомарную замену, права и проверку свежести. По 160 записям среднее время снизилось с 3,119 до 0,961 мс, p95 — с 5,426 до 1,444 мс. Правка относится к этому временному файлу, не к базе данных и важным событиям.

Читатель логов несколько раз скрывал секреты в одной записи. Обработку перенесли в одно место до обрезки и группировки. Публичный результат на сохранённых реальных пакетах совпал, медианное время изменилось так:

Пакет

До

После

619 записей WARN

245,494 мс

124,101 мс

206 записей ERROR

238,531 мс

118,746 мс

Четыре локальных сравнения: доля move_base, среднее время записи позы и медианы разбора WARN и ERROR

Четыре локальных сравнения: доля move_base, среднее время записи позы и медианы разбора WARN и ERROR

Штатные сообщения SDK остались: ускорен наш разбор, а не устранены причины этих сообщений.

Частичный отбор ближайших 256 точек вместо полной сортировки устойчивого выигрыша на ARM не дал, на малом наборе стал медленнее. Замену убрали.

Общая загрузка после изменений

Последняя пара неподвижных замеров относится к записи позы и логам. Удаление картинки fusion и кеш зон были установлены раньше:

Общая загрузка восьми CPU

До, окно 60,90 с

После, окно 120,76 с

Средняя занятость

67,01465%

67,18712%

Общая CPU до и после последних правок: 67,01465 и 67,18712 процента на шкале от 0 до 100

Общая CPU до и после последних правок: 67,01465 и 67,18712 процента на шкале от 0 до 100

Общий CPU почти не изменился. В отдельной паре для слоя зон он тоже не снизился: 69,308 → 69,577%, хотя доля move_base уменьшилась. Окна разных этапов нельзя объединять в общий результат «70 → 67»: фоновая нагрузка менялась.

После установки результаты распознавания и препятствий продолжали поступать около 10 Гц. Проверка была неподвижной. Ватты, автономность и успешную поездку после этих правок здесь не измеряли.

Удалены лишнее изображение и повторные расчёты, ускорены отдельные операции. Основная CPU-нагрузка осталась у локализации, глубины и подготовки распознавания.

Все 10 историй SpeedyBot

  1. Робот доставщик дороже автомобиля, мокрая трава и открытый JDWP

  2. Робот в тумане: лошадь оставить, туман удалить

  3. 25 FPS с видеокамеры по 3G. Модем, извини

  4. CRISPR для ARM: чиним ДНК робота

  5. Гражданин куст, уступите дорогу

  6. За пивом за угол — через Магадан

  7. К бабушке с пирожками — за край карты

  8. Парк, я тебя отрендерил

  9. Джойстик отпустили. Робот не в курсе

  10. Мечтают ли роботы о свободных ядрах? — вы здесь.

View the original on Хабр →

KioskNews shows a cleaned-up reading view extracted from the publisher’s page — the original always lives on their site, not ours.