ROS 2 on Zybo z7

Hello, I’m here for some advice, I want to explore the potential of Zybo z7 in robotics using ROS2 (Put in the programmable logic (FPGA) some algorithms used in mobile robot navigation ), I’ve already used a raspberry pi in turtlebot3 with ROS, but I’m afraid that is not that easy with Zybo and ROS2. I’ve been reading about ROS2 and it sounds great, but sincerely I have not used it at all. so…
should I start with ROS in Zybo firstly or try directly with ROS2?
anyone have done this before? (ROS+FPGA+LINUX)
Thanks in advance!

1 Like

Hi,

I’d say it is very unlikely to replace RPi with Zybo z7 because the board doesn’t look like supporting any OS.
You can request more information from digilent whether they have used it for ROS application.
Thank you.

hi, thank you for your reply. According to Digilent: The Zynq family is based on the Xilinx All Programmable System-on-Chip (AP SoC) architecture, which tightly integrates a dual-core ARM Cortex-A9 processor with Xilinx 7-series Field Programmable Gate Array (FPGA) logic therefore I think it should be possible.

Assuming that you install Linux on the Cortex-A9, you should, in theory, be able to run ROS 2 on it. I’ll point out that Cortex-A9 is 32-bit ARM, which is Tier-3 support. So you’ll definitely have to build all of ROS 2 from source, and it is not officially supported (see https://index.ros.org/doc/ros2/Releases/Release-Foxy-Fitzroy/#id7 for the supported platforms). That being said, if you run into any issues, please feel free to open bugs and/or open pull requests to fix things for you.

1 Like

HI @Jadacuor. Have you heard about micro-ROS? It’s an easy way to bring your ROS 2 stack to embedded devices (we mainly work with Cortex-M4 and would have no problem in supporting A9s).
Check out the documentation (there’s plenty of tutorials and useful material) and let us know if this could fit your use-case!

2 Likes

That is interesting, so are you suggesting that micro-ROS nodes run on both the Cortex-A and the Cortex-M? Will those micro-ROS nodes be able to pass messages to each other directly, ideally over shared memory? Then would those nodes then be able to communicate with ROS 2 agents running on other 64-bit computers over Ethernet or serial? That could be a nice system architecture option if done properly.

Hello @peterpolidoro, as far as I know, the Zybo Z7 only has an A9 inside, what is the architecture where you are planning to use this shared memory?

Regarding the A9 portability, we have not a use case where this specific platform is involved but I think that the effort for building micro-ROS for such kind of microprocessor is not so big.

Regarding intranode communications for micro-ROS, by now we suggest using RTOS tools for communicating different tasks or processes.

Regarding internode (between micro-ROS nodes) we are almost finishing a brokerless P2P feature where micro-ROS nodes will be able to talk to each other without a micro-ROS Agent.

Yes I think you are correct that there is only an A9 hard processor.

I was under the impression that sometimes people like to run a cortex-M as a soft processor on the FPGA as well to handle real-time interactions with the FPGA and interrupts. I think I have read that there is a way for the cortex-A and the cortex-M to communicate over shared memory.

Perhaps the cortex-M would be unnecessary with a real-time operating system running on the A9 and it might eat up too many resources on the FPGA to implement the soft core.

micro-ROS with internode communication seems like a great option for all of these potential architecture choices, though, thanks for all of your great work on it.

2 Likes

Did you publish your work on this topic? Did you get the zybo to run ros? I have an application where I would like to use the zybo with ros.

Had a quick look at the board, this is not very different from the H-ROS SoM_v1.0.pdf we built in the past. It should be very manageable.

There’re various community effort to port the ROS 2 Hardware Acceleration WG architecture and bring various boards up to speed with ROS 2 and acceleration capabilities (e.g. see Ultra96v2, ZC702).

If you open a ticket in a similar fashion to what community members did for the Ultra96v2 I can try and help with two actions: 1) I can provide some guidelines so that you can get started with the port and 2) I can reach out to Digilent to ask them to get involved commiting some resources.