Новое Распределяем каналы MAX по категориям и территориям. Читать новость

День 54. Actions: политики, C++ и первый инсайт про executors.



Добивал goal policy в Actions на Python. Разобрал все четыре сценария: параллельные цели, отказ от новой при активной, вытеснение текущей новой, очередь целей. Теперь понятно, как проектировать поведение сервера под конкретную задачу.

Интересный факт, который зацепи
л: при отмене цели сервер не отменяет её «сам по себе» - нужно, чтобы работал MultiThreadedExecutor и ReentrantCallbackGroup. Иначе колбэк отмены просто не может выполниться, пока занят основной колбэк выполнения. Связано это с тем, как экзекьюторы раздают колбэки по потокам. Пока информации об этом мало - но будет позднее. Отложил на потом, вернусь, когда дойду до экзекьютеров в курсе.

Главное за день: написал серверную ноду Action на C+
+.
И вот тут случился момент, ради которого стоило пройти через указатели и семантику перемещения. Я вдруг понял, зачем мы используем SharedPtr в ROS 2 и как он устроен под капотом: счётчик ссылок, контрольный блок, автоматическое освобождение, когда последний владелец уходит. Раньше это было «так принято, копируй из примера». Теперь - понимаю, почему именно так, и что будет, если сделать иначе.
Это то самое чувство, когда фундамент, который я закладывал, начинает работать. Указатели меня тогда завалили. Сегодня я их использую осознанно.

Итог:
Actions server на C++ - готово. Теперь осталось перенести остальное.
#ROS2 #robotics #C++ #executors #UnitreeG1 #careerchange
Просмотры: 21
Открыть в MAX Сообщить о неточности

Сообщить о неточности

Опишите, что нужно исправить. Если есть источник, добавьте ссылку.

Вы покидаете datool.ru

Ссылка ведёт на внешний сайт. datool.ru не отвечает за его содержимое — проверьте адрес, прежде чем вводить пароли или платёжные данные.

Переход через 10 с

Перейти