Интеграция нейросетей в ПО робота на примере ROS 2
Обобщённый конвейер инференса включает в себя:
1. Сбор данных (Observations)
Первый этап заключается в получении данных от различных датчиков и устройств, которые будут использоваться для обучения или применения ML-модели. В него входят обычно Драйверы ROS 2 , которые обычно реализуют доступ к robot state publishers, камерам, датчикам силы/крутящего момента (F/T sensors) и другим устройствам сбора данных. Также важно проработвать вопрос Синхронизации времени, особенно при работе с несколькими источниками данных. Для этого используются такие механизмы, как фильтры сообщений и трансформации TF (Transforms) для получения гарантий согласованности временных меток.
2. Вывод модели (Inference)
На этом этапе происходит обработка полученных данных с помощью обученной ML-модели.
в случае с Python: Обёртка над PyTorch в виде узла ROS 2. При этом важно быть осторожным с проблемами синхронизации между CPU и GPU, особенно при работе с многопоточными executors.
в случае с C++ : Использование ONNX Runtime для выполнения инференса. Дополнительным преимуществом является возможность обернуть модель в контроллер ROS 2, что позволяет более гибко интегрировать её в существующую систему.
3. Управление аппаратным обеспечением (Commanding Hardware)
Для управления различными типами устройств используются специальные драйверы, такие как контроллеры ROS 2. Важно определиться с тем, какие системы координат использовать — пространство суставов (Joint space) или декартово пространство (Cartesian). Также стоит учитывать вопросы импеданса (Impedance/admittance). Также на этом этапе возможно добавление опциональных слоёв поверх контроллеров, таких как проверка столкновений (collision checking) или решение обратной задачи кинематики (IK) для обеспечения надёжности/предсказуемости исполнения. Например, можно использовать MoveIt Servo (ограниченный функционал) или создать пользовательский узел ROS 2 с полностью настраиваемыми параметрами.
Автор - Sebastian Castro
#ros #model #inference
Обобщённый конвейер инференса включает в себя:
1. Сбор данных (Observations)
Первый этап заключается в получении данных от различных датчиков и устройств, которые будут использоваться для обучения или применения ML-модели. В него входят обычно Драйверы ROS 2 , которые обычно реализуют доступ к robot state publishers, камерам, датчикам силы/крутящего момента (F/T sensors) и другим устройствам сбора данных. Также важно проработвать вопрос Синхронизации времени, особенно при работе с несколькими источниками данных. Для этого используются такие механизмы, как фильтры сообщений и трансформации TF (Transforms) для получения гарантий согласованности временных меток.
2. Вывод модели (Inference)
На этом этапе происходит обработка полученных данных с помощью обученной ML-модели.
в случае с Python: Обёртка над PyTorch в виде узла ROS 2. При этом важно быть осторожным с проблемами синхронизации между CPU и GPU, особенно при работе с многопоточными executors.
в случае с C++ : Использование ONNX Runtime для выполнения инференса. Дополнительным преимуществом является возможность обернуть модель в контроллер ROS 2, что позволяет более гибко интегрировать её в существующую систему.
3. Управление аппаратным обеспечением (Commanding Hardware)
Для управления различными типами устройств используются специальные драйверы, такие как контроллеры ROS 2. Важно определиться с тем, какие системы координат использовать — пространство суставов (Joint space) или декартово пространство (Cartesian). Также стоит учитывать вопросы импеданса (Impedance/admittance). Также на этом этапе возможно добавление опциональных слоёв поверх контроллеров, таких как проверка столкновений (collision checking) или решение обратной задачи кинематики (IK) для обеспечения надёжности/предсказуемости исполнения. Например, можно использовать MoveIt Servo (ограниченный функционал) или создать пользовательский узел ROS 2 с полностью настраиваемыми параметрами.
Автор - Sebastian Castro
#ros #model #inference
👍7