Is there an official ROS2 package for running yolo on Raspberry Pi 5 with AI HAT+?

Hello,

I am using a Raspberry Pi 5 with Raspberry Pi OS 64-bit and an AI HAT+. And I have successfully installed ROS 2 Jazzy.

I am planning to use this Raspberry Pi on a robot for development with ROS 2 Jazzy.

Therefore, I would like to know if there is an official ROS 2 package from Hailo available for use.

Thank you for your time and assistance.

Hey @Jinhong_Park ,

Welcome to the Hailo Community!

No we currently do not have official ROS package but our community have developed some things to work with ROS ( we know its possibile there are a lot of projects using it specially in our last HAILO hackathon )

You can check them out :

I can also say from my experience in the hackathon that for detection data , we found that when i implemented a socket-based communication layer between Hailo and ROS2.

Thank you for your response.
I will follow your advice and proceed with development.
Thanks again for your help.

1 Like

Hey I just released this package where Hailo tappas and ROS2 are combined together in a debian docker container with a working example in Python.

The ROS2 Node is super performant in RPi5 allowing for 3 models to run in parallel with low CPU usage in the host.

GitHub - kyrikakis/hailo_tappas_ros2

1 Like

Hello Kyrikakis, thank you for sharing your ROS 2 package!
It looks very well-made.

I have already developed my ROS 2 package using the hailo-rpi5-examples.
However, I will definitely consider your package for adding more features in the future.

1 Like

No worries. Keep an eye, I am planning to add more features

@Kyrikakis thanks;-) I took your repo and I’m running it natively on Ubuntu 24.04 on a Pi5;-) It works pretty well now;-)

I found one problem, where the RasiOS packages and the normal tappas install script leave out some libraries in the rpi5 case:-( But that’s fixed in my build now;-)

All the [source] packages are here:
https://launchpad.net/~marco-sonic/+archive/ubuntu/rasppios , just make sure, you get at least ‘hailo-tappas-core 3.31.0+2-1ubuntu1~marco5’, that has the missing libs.

Thanks,
– Marco

1 Like

Hi @marco, thanks for your feedback! It’s good to know the repo works well on a native Ubuntu 24.04 installation.

While running directly on the OS can offer some performance gains,
Docker’s containerization provides a more robust and scalable solution. It allows for better dependency isolation, especially when you have multiple ROS2 packages with potentially conflicting requirements, and makes it much easier to reproduce consistent environments.

In the case of the Pi5, sticking with Raspbian ensures compatibility with optimized hardware drivers and features like fan speed control, which may not be fully supported in Ubuntu yet.

I am having problems running RPI5 Examples. Please help.

(venv_hailo_rpi5_examples) mobilestack@raspberrypi:~/hailo-rpi5-examples $ hailortcli fw-control identify
Executing on device: 0001:01:00.0
Identifying board
Control Protocol Version: 2
Firmware Version: 4.19.0 (release,app,extended context switch buffer)
Logger Version: 0
Board Name: Hailo-8
Device Architecture: HAILO8L
Serial Number: HLDDLBB244600687
Part Number: HM21LB1C2LAE
Product Name: HAILO-8L AI ACC M.2 B+M KEY MODULE EXT TMP

(venv_hailo_rpi5_examples) mobilestack@raspberrypi:~/hailo-rpi5-examples $ gst-inspect-1.0 hailotools
Plugin Details:
Name hailotools
Description hailo tools plugin
Filename /lib/aarch64-linux-gnu/gstreamer-1.0/libgsthailotools.so
Version 3.30.0
License unknown
Source module gst-hailo-tools
Binary package gst-hailo-tools
Origin URL https://hailo.ai/

hailoaggregator: hailoaggregator - Cascading
hailocounter: hailocounter - postprocessing element
hailocropper: hailocropper
hailoexportfile: hailoexportfile - export element
hailoexportzmq: hailoexportzmq - export element
hailofilter: hailofilter - postprocessing element
hailogallery: Hailo gallery element
hailograytonv12: hailograytonv12 - postprocessing element
hailoimportzmq: hailoimportzmq - import element
hailomuxer: Muxer pipeline merging
hailonv12togray: hailonv12togray - postprocessing element
hailonvalve: HailoNValve element
hailooverlay: hailooverlay - overlay element
hailoroundrobin: Input Round Robin element
hailostreamrouter: Hailo Stream Router
hailotileaggregator: hailotileaggregator
hailotilecropper: hailotilecropper - Tiling
hailotracker: Hailo object tracking element

18 features:
±- 18 elements

(venv_hailo_rpi5_examples) mobilestack@raspberrypi:~/hailo-rpi5-examples $ gst-inspect-1.0 hailo
Plugin Details:
Name hailo
Description hailo gstreamer plugin
Filename /lib/aarch64-linux-gnu/gstreamer-1.0/libgsthailo.so
Version 1.0
License unknown
Source module hailo
Binary package GStreamer
Origin URL http://gstreamer.net/

hailodevicestats: hailodevicestats element
hailonet: hailonet element
synchailonet: sync hailonet element

3 features:
±- 3 elements

(venv_hailo_rpi5_examples) mobilestack@raspberrypi:~/hailo-rpi5-examples $ python basic_pipelines/detection_simple.py
Auto-detected Hailo architecture: hailo8l
filesrc location=“/home/mobilestack/hailo-rpi5-examples/venv_hailo_rpi5_examples/lib/python3.11/site-packages/hailo_apps_infra/../resources/example_640.mp4” name=source ! queue name=source_queue_decode leaky=no max-size-buffers=3 max-size-bytes=0 max-size-time=0 ! decodebin name=source_decodebin ! queue name=source_scale_q leaky=no max-size-buffers=3 max-size-bytes=0 max-size-time=0 ! videoscale name=source_videoscale n-threads=2 ! queue name=source_convert_q leaky=no max-size-buffers=3 max-size-bytes=0 max-size-time=0 ! videoconvert n-threads=3 name=source_convert qos=false ! video/x-raw, pixel-aspect-ratio=1/1, format=RGB, width=640, height=640 ! queue name=inference_scale_q leaky=no max-size-buffers=3 max-size-bytes=0 max-size-time=0 ! videoscale name=inference_videoscale n-threads=2 qos=false ! queue name=inference_convert_q leaky=no max-size-buffers=3 max-size-bytes=0 max-size-time=0 ! video/x-raw, pixel-aspect-ratio=1/1 ! videoconvert name=inference_videoconvert n-threads=2 ! queue name=inference_hailonet_q leaky=no max-size-buffers=3 max-size-bytes=0 max-size-time=0 ! hailonet name=inference_hailonet hef-path=/home/mobilestack/hailo-rpi5-examples/venv_hailo_rpi5_examples/lib/python3.11/site-packages/hailo_apps_infra/../resources/yolov6n_h8l.hef batch-size=2 vdevice-group-id=1 nms-score-threshold=0.3 nms-iou-threshold=0.45 output-format-type=HAILO_FORMAT_TYPE_FLOAT32 force-writable=true ! queue name=inference_hailofilter_q leaky=no max-size-buffers=3 max-size-bytes=0 max-size-time=0 ! hailofilter name=inference_hailofilter so-path=/home/mobilestack/hailo-rpi5-examples/venv_hailo_rpi5_examples/lib/python3.11/site-packages/hailo_apps_infra/../resources/libyolo_hailortpp_postprocess.so function-name=filter qos=false ! queue name=inference_output_q leaky=no max-size-buffers=3 max-size-bytes=0 max-size-time=0 ! queue name=identity_callback_q leaky=no max-size-buffers=3 max-size-bytes=0 max-size-time=0 ! identity name=identity_callback ! queue name=hailo_display_overlay_q leaky=no max-size-buffers=3 max-size-bytes=0 max-size-time=0 ! hailooverlay name=hailo_display_overlay ! queue name=hailo_display_videoconvert_q leaky=no max-size-buffers=3 max-size-bytes=0 max-size-time=0 ! videoconvert name=hailo_display_videoconvert n-threads=2 qos=false ! queue name=hailo_display_q leaky=no max-size-buffers=3 max-size-bytes=0 max-size-time=0 ! fpsdisplaysink name=hailo_display video-sink=autovideosink sync=true text-overlay=False signal-fps-measurements=true
Segmentation fault