Skip to main content

Hi Axelera Community,

Has anyone here successfully run the Axelera Voyager SDK with ROS 2? I’m currently working on integrating the video_infer node with ROS 2 and would really appreciate hearing from anyone who has tried this setup.

My Setup:

  • Hardware: Aetina board

  • SDK Version: voyager-sdk v1.2.5

  • ROS 2: Humble (on Ubuntu 22.04)

  • Python: 3.10 (using a virtual environment)

  • Model Used: yolov5s-v7-coco

Inference Server:

python3 inference_server.py yolov5s-v7-coco none --port 50051 --no-display

ROS 2 Node:

ros2 run axelera_infer video_infer

What’s Working:

  • The inference server starts successfully and shows:

    Server started, listening on 50051 INFO : Using device metis-0:1:0

  • The ROS2 node launches and shows:

    oINFO] Fvideo_infer_node]: Starting video inference node... .INFO] Fvideo_infer_node]: Sending inference request... .INFO] Fvideo_infer_node]: StreamInfer started successfully

  • No errors are thrown on either side.

Problem:

  • The stream only seems to run a few frames:

    Stream Playing: 71%|████████████████████████████████████▍ | 5/7

  • I get a warning:

    WARNING : pyglet could not access the display, OpenGL is not available: No standard config is available.

  • No output is displayed or saved. There’s no way to confirm if detections are actually being performed.

My Questions:

  1. Has anyone successfully used ROS2 with the Voyager SDK?

  2. How can I view or log the inference output from video_infer (e.g., bounding boxes, confidence, labels)?

  3. Is there a clean way to enable display or save visual results in a headless environment?

  4. Any tips on modifying the code to dump detection data to file or annotate frames using OpenCV?

Would love to hear from anyone who's tried this or has suggestions.
Thanks in advance!

– Saiteja Jampula

Hi ​@saitejajampula, welcome to the team!

You’re already using --no-display in your inference server command, which is right—this flag should prevent the inference server from opening any visual output, and works well in headless setups.

However, I wonder if the ROS2 node (video_infer) might still be triggering some OpenGL or pyglet-related functionality? I’m not sure I’ve seen anyone working with Metis and Voyager on ROS or ROS2, although it’s a really exciting idea!

So in this case, the inference server is probably behaving correctly, but perhaps the client may not be fully headless-compatible by default? Maybe that’s something we can look into between us?


Hi ​@Spanner ,

Thank you for the warm welcome and your helpful insights!

You're absolutely right — the inference server is functioning correctly with the --no-display flag, and I can confirm that no visual output is being attempted from the server side.

However, as you suspected, the video_infer_node in ROS 2 does appear to be triggering some GUI-related functionality, likely via pyglet, which is resulting in the warning:

       pyglet could not access the display, OpenGL is not available: No standard config is available.

Despite this warning, the node is able to read video frames, process them, and publish inference results without issue. So it's not blocking functionality, but it’s something I’ll look into cleaning up for a fully headless deployment.

Thanks again for the support — this hybrid setup of ROS 2 and Metis is indeed experimental, but quite promising. I'm happy to share my results as things evolve!

Best regards,
Saiteja Jampula


Excellent work, thanks for the update ​@saitejajampula! Please do keep me posted on how it’s progressing - robotics is about the most exciting area of AI involvement right now, if you ask me!

Sounds like you’re working on something very cool. What’s the project?


Hi ​@saitejajampula,

Just as a heads up, it is a known issue that the warning

pyglet could not access the display, OpenGL is not available: No standard config is available.

will appear whenever you run on a system which doesn’t have working OpenGL, regardless of whether you care about that or not. As such that warning doesn’t imply that pyglet/GL GUI calls are being made. That’s why you find that there is no issue despite the warning, as you’re not expecting to use GL anyway.

We are working on suppressing this warning so it only appears if you are expecting OpenGL to work to avoid confusion like this. Unfortunately due to the way this bit of the code is written it is somewhat harder than it sounds :)


Hi ​@saitejajampula,

Just as a heads up, it is a known issue that the warning

pyglet could not access the display, OpenGL is not available: No standard config is available.

will appear whenever you run on a system which doesn’t have working OpenGL, regardless of whether you care about that or not. As such that warning doesn’t imply that pyglet/GL GUI calls are being made. That’s why you find that there is no issue despite the warning, as you’re not expecting to use GL anyway.

We are working on suppressing this warning so it only appears if you are expecting OpenGL to work to avoid confusion like this. Unfortunately due to the way this bit of the code is written it is somewhat harder than it sounds :)

Ah, that’s interesting to know, thanks George! It’s reassuring to know that it’s not actually impacting operation in the meantime. Thanks bro!


Reply