# ROS 2 Hardware Acceleration Working Group 2023 summary and new directions for 2024

**URL:** <https://discourse.openrobotics.org/t/ros-2-hardware-acceleration-working-group-2023-summary-and-new-directions-for-2024/35454>\
**Category:** ROS General\
**Created:** [January 4, 2024, 10:10am UTC](https://discourse.openrobotics.org/t/ros-2-hardware-acceleration-working-group-2023-summary-and-new-directions-for-2024/35454 "2024-01-04T10:10:35Z")\
**Posts on this page:** 1\
**Showing post:** 1

<div class="post-metadata">

**Author:** ![vmayoral](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.openrobotics.org/vmayoral/32/3665_2.png) [@vmayoral](https://discourse.openrobotics.org/u/vmayoral)\
**Post date:** [January 4, 2024, 10:10am UTC](https://discourse.openrobotics.org/t/ros-2-hardware-acceleration-working-group-2023-summary-and-new-directions-for-2024/35454/1 "2024-01-04T10:10:35Z")

</div>

Happy new year all,

Hardware acceleration usage continue to grow across the ROS community and the robotics industry. The Hardware Acceleration Working Group (HAWG) continued growing significantly during 2023. Altogether, that is 3 years of continued work and growth ([2021](https://github.com/ros-acceleration/community/issues/19), [2022](https://github.com/ros-acceleration/community/issues/34)).

> **Key milestones of HAWG**
>
> | Year | Objective |
> | --- | --- |
> | `21` | ✅ 1) Design tools and conventions to seamlessly integrate acceleration kernels and related embedded binaries into the ROS 2 computational graphs leveraging its existing build system ([ament\_acceleration](https://github.com/ros-acceleration/ament_acceleration) extensions) \[1\], meta build tools ([colcon-acceleration](https://github.com/ros-acceleration/colcon-acceleration) extension) and a new firmware layer ([acceleration\_firmware](https://github.com/ros-acceleration/acceleration_firmware)) \[2\]. |
> | `21` | ✅ 2) Provide [reference examples](https://github.com/ros-acceleration/acceleration_examples) and blueprints for acceleration architectures used in ROS 2 and Gazebo. |
> | `21` | ✅ 3) REP-2008 (_ROS 2 Hardware Acceleration Architecture and Conventions_) first draft proposed [PR](https://github.com/ros-infrastructure/rep/pull/324) |
> | | |
> | `22` | ✅ 4) Facilitate testing environments that allow to benchmark accelerators with special focus on power consumption and time spent on computations (see [HAWG benchmarking approach](https://github.com/ros-infrastructure/rep/pull/324/files#diff-f230b6aa06d86bf594d8e431300e453ad7343e8f4b1932252b6d36c62a8b5e0aR203-R267), [community#9](https://github.com/ros-acceleration/community/issues/9), [tracetools\_acceleration](https://github.com/ros-acceleration/tracetools_acceleration), [ros2\_kria](https://github.com/ros-acceleration/ros2_kria)) |
> | `22` | ✅ 5) Survey the community interests on acceleration for ROS 2 and Gazebo (see [discourse announcement](http://discourse.ros.org/t/hardware-acceleration-in-ros-2-and-gazebo-survey/23228), [survey](https://forms.gle/JibETmf92XyUde4r5), [result](http://discourse.ros.org/t/2022-hardware-acceleration-report-in-robotics/27779)). |
> | `22` | ✅ 6) Produce demonstrators with robot components, real robots and fleets that include acceleration to meet their targets (see [acceleration\_examples](https://github.com/ros-acceleration/acceleration_examples)). |
> | `22` | ✅ 7) Acceleration of complete ROS 2 computational graphs [Methodology for ROS 2 Hardware Acceleration · Issue #20 · ros-acceleration/community · GitHub](https://github.com/ros-acceleration/community/issues/20) |
> | `22` | ❌\[3\] 8) Merge first hardware accelerators (kernels) into upstream packages (_candidate_: [image\_pipeline](https://github.com/ros-acceleration/image_pipeline), see `image_pipeline` instrumented at [#717](https://github.com/ros-perception/image_pipeline/pull/717) ) |
> | `22` | ✅ 9) Documentation and a _“methodology to hardware accelerate a ROS 2 package”_ (see [#20](https://github.com/ros-acceleration/community/issues/20)) |
> | `22` | ❌\[4\] 10) Organize _workshops on robotics and ROS 2 Hardware Acceleration_ |
> | `22` | 🚧 11) Robotic Processing Unit, first demonstrators [#25](https://github.com/ros-acceleration/community/issues/25) |
> | `22` | ✅ 12) REP-2008 (_ROS 2 Hardware Acceleration Architecture and Conventions_) accepted as an [official standard](https://ros.org/reps/rep-2008.html) |
> | `22` | ✅ 13) REP-2014 (_Benchmarking performance in ROS 2_) first draft proposed [PR](https://github.com/ros-infrastructure/rep/pull/364) |
> | | |
> | `23` | ✅ 11) REP-2014 (_Benchmarking performance in ROS 2_), [PR](https://github.com/ros-infrastructure/rep/pull/364) finalized and submitted. Unfortunately it got rejected without technical argumentation ([🔥 heated discussion](http://discourse.ros.org/t/ros-2-tsc-meeting-minutes-2023-08-17/33061/4)) |
> | `23` | ✅ 14) More vendor support. Intel [Quartus](https://www.intel.com/content/www/us/en/products/details/fpga/development-tools/quartus-prime.html) and [oneAPI](https://www.intel.com/content/www/us/en/developer/tools/oneapi/overview.html) ecosystems enabled with the [ROS 2 Hardware Acceleration Stack](https://github.com/ros-acceleration/community#the-ros-2-hardware-acceleration-stack) \[5\] |
> | `23` | ❌ 15) ~~Robotics MCU [#31](https://github.com/ros-acceleration/community/issues/31) milestone 1~~ \[6\] Instead, worked on an RTL-native FPGA-based ROS 2 implementation for High-Speed Networking: [ROBOTCORE ROS 2](https://accelerationrobotics.com/robotcore-ros2.php) |
> | `23` | ✅ 16) [RobotPerf benchmarks](https://robotperf.net) |
> | `23` | 🚧 17) Robotic Processing Unit, first demonstrators [#25](https://github.com/ros-acceleration/community/issues/25) |
> | | |
> | `24` | 🚧 17) Robotic Processing Unit, first demonstrators [#25](https://github.com/ros-acceleration/community/issues/25) |
> | `24` | 🚧 18) New ROS-related network accelerators that build upon the [FPGA-native ROS 2 message-passing infrastructure](https://accelerationrobotics.com/robotcore-ros2.php) |
> | `24` | 🚧 19) Evolve [RobotPerf](https://robotperf.net/) and expand it. Include new benchmark categories and other communities |

Having accomplished most of the initial objectives of the working group when created back in 2021, and having supported multiple silicon vendors (Intel added last year) as part of the [The ROS 2 Hardware Acceleration Stack](https://github.com/ros-acceleration/community#the-ros-2-hardware-acceleration-stack), the working group will focus next on three objectives: the first objective is to continue working on demonstrators and case studies. We generated very exciting results within 2023 that we’ll expand during the next year and hopefully disclose publicly. The second objective will be to build upon the success\[7\] of the reference [FPGA-based ROS 2 implementation for High-Speed Networking](https://accelerationrobotics.com/robotcore-ros2.php) and explore other network accelerators. Some ideas include bridging between other communication middlewares or even pushing the speed of networking interactions faster. The third objective is to evolve the [RobotPerf](https://robotperf.net/) project, which attracted quite a few contributors already (see [RobotPerf paper](https://arxiv.org/pdf/2309.09212.pdf)). Subgoals here would be to create more benchmark releases, add new benchmarking categories (with their corresponding benchmark implementations) and ultimately, expand the project to other communities which could benefit from it, all while remaining ROS-centric.

Happy to get feedback and/or coordinate contributions from others. Altogether, the objectives for the coming year so far look as follows:

| Year | Objective |
| --- | --- |
| `24` | 🚧 17) Robotic Processing Unit, first demonstrators [#25](https://github.com/ros-acceleration/community/issues/25) |
| `24` | 🚧 18) New ROS-related network accelerators that build upon the [FPGA-native ROS 2 message-passing infrastructure](https://accelerationrobotics.com/robotcore-ros2.php) |
| `24` | 🚧 19) Evolve [RobotPerf](https://robotperf.net/) and expand it. Include new benchmark categories and other communities |

_Complete 2023 report available [here](https://github.com/ros-acceleration/community/issues/39)_.

* * *

1. See [ament\_vitis](https://github.com/ros-acceleration/ament_vitis) 

2. See [acceleration\_firmware\_kv260](https://github.com/ros-acceleration/acceleration_firmware_kv260) for an exemplary _vendor extension_ of the `acceleration_firmware` package 

3. Did not get _buy-in_ from maintainers. Stopped the effort. 

4. Discarded for ROSCon and IROS. Lots of work. 

5. Reach out for more information about Intel’s enablement extensions of the ROS build system and build tools. 

6. After months of work, given preliminary results and expectations derived from those, we decided to pivot elsewhere and wrap the Robotics MCU project. Shortly, the performance obtained in RISC-V soft-core based ROS 2 implementations explored was not bringing much value on top of existing CPU implementations of ROS 2. Instead, we invested resources in exploring an [FPGA-based ROS 2 implementation for High-Speed Networking](https://accelerationrobotics.com/robotcore-ros2.php). 

7. Our RTL implementation of the ROS 2 message-passing infrastructure can send or receive small ROS 2 messages in less than 2.5 us (one-way) and establish a round-trip communication within 5 us, accelerating average networking by more than 62x when compared to traditional software implementations on CPUs. When considering maximum latencies, our RTL implementation does Thousands-Fold (4540x) faster in these worst case scenarios than software ROS 2 implementations in modern CPUs.

---

_[View the full topic](https://discourse.openrobotics.org/t/ros-2-hardware-acceleration-working-group-2023-summary-and-new-directions-for-2024/35454)._
