Создаем клиентскую библиотеку ROS2. «Hello ROS»
stanislav_mikhel 16 минут назад Создаем клиентскую библиотеку ROS2. «Hello ROS» Время на прочтение 10 мин Охват и читатели 1.1K C * Робототехника Lua * Туториал Из песочницы Пару лет назад у меня возникла мысль, почему...
Anthropic — What company has the best second artificial intelligence model at the end of June?
В сфере искусственного интеллекта произошло заметное событие. stanislav_mikhel 16 минут назад Создаем клиентскую библиотеку ROS2. «Hello ROS» Время на прочтение 10 мин Охват и читатели 1. 1K C * Робототехника Lua * Туториал Из песочницы Пару лет назад у меня возникла мысль, почему бы не написать полноценную клиентскую библиотеку ROS2 для языка Lua?..
Увы, результат оказался невостребованным, зато сама разработка позволила лучше понять, как устроен этот фреймворк, а также с интересом провести время, разгадывая логические головоломки. Клиентские библиотеки Создатели ROS2 вынесли базовый функционал в C библиотеку rcl (ROS Client Libraries). В теории, достаточно создать обертку на каком-либо языке программирования и можно пользоваться.
Технические детали
Между тем, сторонних клиентских библиотек не так уж много. На мой взгляд, можно выделить следующие причины: мой дед программировал роботов на C++/Python, и я буду отсутствие востребованности документация не покрывает весь функционал, нет единой инструкции разработчику библиотеки необходимо помимо целевого языка знать C, Python, CMake и иметь очень много свободного времени Если вы, несмотря ни на что, решили создать свою версию клиентской библиотеки, или хотите лучше понять, как устроены rclcpp/rclpy , добро пожаловать. В этой серии заметок я постараюсь описать те шаги, которые нужно выполнить, чтобы портировать ROS2 на свой любимый язык программирования.
В первой части мы рассмотрим создание простого исполняемого файла и его запуск в окружении ROS2. Во второй речь пойдет о генерации сообщений. В третьей части рассмотрим особенности реализации функционала ROS ноды.
В качестве примеров я буду использовать свой код из ros2_lua , но постараюсь абстрагироваться от особенностей Lua насколько это возможно. ROS2 содержит богатый набор CLI команд. Если в вашем языке программирования есть форматирование строк и передача команд операционной системе (функция типа execute ()), этого может быть достаточно.
Отраслевые последствия
Плюсы: быстро просто переносимо между версиями ROS2 Минусы: неэффективно, т. используется промежуточная интерпретация в Python ограниченная функциональность Этот способ подойдет для публикации данных, но организовать обработку входящих сообщений, особенно для нескольких топиков, может быть сложно или невозможно. Документация Начать знакомство со структурой кода можно на сайте ROS2.
Однако наилучшая документация, которую мне удалось найти, это описание функций в самой библиотеке rcl . Также полезно рассмотреть реализацию официальных клиентских библиотек rclcpp , rclpy , rclc , однако они перегружены дополнительным функционалом, разобраться в котором может быть непросто. Мне очень помогли сторонние библиотеки типа ros2_dotnet , ros2_rust , так как в них проще найти "скелет" системы.
Этот прогресс даёт важные сигналы о будущем отрасли, и технологический мир внимательно наблюдает.





