Репозиторий содержит ROS2 (Humble) интерфейс для работы с YOLOv8 на Jetson (версия JetPack 5). Dockerfile.aarch64, предназначенный для сборки на Jetson, наследуется от образа jetson-ros2-ultralytics:latest-humble, исходные файлы для сборки которого доступны в папке docker/docker_humble. Dockerfile для сборки ROS2 Foxy также представлен в папке docker.
Представленные инструкции позволяют собрать 2 узла:
- yolov8_seg_node, который слушает топик с изображениями и отправляет результаты сегментации в топик segmentation_topic (формат определяется пакетом yolov8_seg_interfaces);
- visualizer_node, который слушает топики image и segmentation и визуализирует результаты сегментации, отправляя изображения в segmentation_color_topic.
На следующем изображении приведена диаграмма совместной работы узлов:
Тип Objects - пользовательский, он определён в yolov8_seg_interfaces. Ниже приведена структура этого типа.
Пример визуализации visualizer_node приведён ниже с расшифровкой цветовых кодов классов объектов.
cd docker
sudo ./build.sh
./start.sh
./into.sh
Сборка пакета:
cd /colcon_ws
colcon build --packages-select yolov8_seg_ros2 yolov8_seg_interfaces --symlink-install
source install/setup.bash
В папку weights пакета yolov8_seg_ros2 необходимо положить веса, например из папки с весами, полученными на датасете с препятствиями.
Запуск launch (необходимо специализировать namespace камеры, имя топика с изображениями и путь к весам модели):
ros2 launch src/yolov8_seg_ros2/launch/yolov8_seg_launch.py camera_ns:="/sensum/left/" image_topic:=image_raw weights:="src/yolov8_seg_ros2/weights/roboseg_S_5_cats.pt"