Skip to content

Commit

Permalink
Improve some grammar and wordings
Browse files Browse the repository at this point in the history
  • Loading branch information
henningkayser committed Sep 2, 2024
1 parent c9051f8 commit 45fa22d
Showing 1 changed file with 14 additions and 13 deletions.
27 changes: 14 additions & 13 deletions _posts/2024-08-19-GSoC-2024-Zenoh-Support-and-Benchmarking.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,24 +12,24 @@ categories:
- GSoC
---

We've completed our project titled "Zenoh Support & Benchmarking". With this project, we could try to understand how to be used rmw_zenoh in MoveIt2 project and how rmw_zenoh affects MoveIt2's workflow.
We've completed our project titled "Zenoh Support & Benchmarking". With this project, investigated how rmw_zenoh would be used in MoveIt 2 and how rmw_zenoh would affect MoveIt's runtime performance.

## Movitation

The aims of this Google Summer of Code Project was to make [rmw_zenoh_cpp](https://github.com/ros2/rmw_zenoh) enable for MoveIt2, benchmark the midlewares such as rmw_cyclonedds and rmw_fastrtps against some scenarios from complex robotic problems like trajectory planning and task planning to basic ROS works like basic topic subscription-publishing, service-client operations, report the found bugs to rmw_zenoh team and configure CI in a way that rmw_zenoh can be supported.
The goal of this Google Summer of Code Project was to make [rmw_zenoh_cpp](https://github.com/ros2/rmw_zenoh) available for MoveIt 2, benchmark the different midlewares such as rmw_cyclonedds and rmw_fastrtps against scenarios from complex robotic problems, ranging from trajectory planning and task planning to basic ROS works like basic topic subscription-publishing, and service-client operations. In addition we reported the found bugs to the rmw_zenoh project and implemented a CI configuration that supports testing rmw_zenoh.

rmw_zenoh comes to the fore with some exciting features like configurability with elastic topologies, supporting a lot of protocol such as TCP, UDP and usable at WIFI networks compared to DDS based middlewares even though it's still in development phase.
rmw_zenoh comes to the fore with some exciting features like configurability with elastic topologies, supporting a lot of protocols such as TCP, UDP, making it promising in WIFI networks compared to other DDS based middlewares, even though it's still in development phase.

## Progress
**Integration to Moveit2**
**Integration to Moveit 2**

Even if we couldn't run moveit2 with rmw_zenoh due to data races inside `rmw_wait` function in the starting of GSoC project, which bring about some problems in Multithreaded Executor, we could run MoveIt2 with rmw_zenoh after some bug-fixes for `rmw_wait` function in the middle of GSoC project period. Even if rmw_zenoh has some problems and is in development progress, you can run MoveIt2 using rmw_zenoh middleware. Additionally, rmw_zenoh has some pretty good potential so that you can get approximately as same performance as rmw_fastrtps even if rmw_zenoh is used TCP protocol by default, you can help for rmw_zenoh team to completed and find the bugs!
Initially, we couldn't run MoveIt with rmw_zenoh due to data races inside the `rmw_wait` function, which brought about some problems in the Multithreaded Executor. We were able to resolve these issues in the middle of the GSoC project period, enabling MoveIt support for the rmw_zenoh middleware. With that, rmw_zenoh showed some pretty good potential with approximately the same performance as rmw_fastrtps, even if rmw_zenoh is running the TCP protocol by default. Unfortunately, there are still several issues that we found and reported, and it's up to the community and rmw_zenoh development team to finding solutions and improvements for them.

**Benchmarking**

During this summer, the middleware benchmarking tool is created to compare the middlewares such as rmw_zenoh, rmw_cyclonedds and rmw_fastrtps. Some scenarios are implemented for measuring how the middlewares affect in some scenarios in robotics. Here is our middleware benhmarking tool : [moveit_middleware_bechmark](https://github.com/CihatAltiparmak/moveit_middleware_benchmark).
During this summer, the middleware benchmarking tool has been implemented to compare the different middlewares including rmw_zenoh, rmw_cyclonedds and rmw_fastrtps. Several scenarios have been implemented for measuring how the middlewares affects performance in typical robotics use cases. You can find the middleware benhmarking tool here: [moveit_middleware_bechmark](https://github.com/CihatAltiparmak/moveit_middleware_benchmark).

Some of scenarios are:
The implemented test scenarios include:

- Basic Service-Client Works
- Basic Topic Subscription-Publishing
Expand All @@ -38,24 +38,24 @@ Some of scenarios are:

**Bugs in rmw_zenoh**

It's also reported some bugs in a case of catching it. These are
Below is a list of partially unresolved issues that came up during the GSoC project work,

- https://github.com/ros2/rmw_zenoh/issues/257
- https://github.com/ros2/rmw_zenoh/issues/240
- https://github.com/ros2/rmw_zenoh/issues/251
- https://github.com/ros2/rmw_zenoh/issues/186

It's also contributed to rmw_zenoh.
and our related contributions are below.

- https://github.com/ros2/rmw_zenoh/pull/252
- https://github.com/ros2/rmw_zenoh/pull/255
- https://github.com/ros2/rmw_zenoh/pull/256

**Conducting Benchmarks in CI**

Additionally, the website for visualization of benchmark results created so that it's also configurable with CI.

Finally, the benchmarks have been conducted in a way to give the reliable comparisons in github-actions and the results are visualized in website.
The benchmarks have been conducted in a way to give the reliable comparisons in github-actions and exporting the metrics.
Finally, the benchmarking CI system supports visualizing benchmark results as plots on a simple GitHub pages website.

**Contributions to MoveIt During GSoC Project**
- https://github.com/moveit/moveit2/pull/2963
Expand All @@ -65,7 +65,8 @@ Finally, the benchmarks have been conducted in a way to give the reliable compar

## Achievements

We have benchmarked the middlewares against various scenarios using [this script](https://github.com/CihatAltiparmak/moveit_middleware_benchmark/blob/24-Aug-2024-demonstration/scripts/run_all_benchmarks.sh) and we have found below benchmark results. We have used default configurations of rmw_zenoh except the fact that we configured some tcp settings like below:
We have benchmarked the middlewares against various scenarios using [this script](https://github.com/CihatAltiparmak/moveit_middleware_benchmark/blob/24-Aug-2024-demonstration/scripts/run_all_benchmarks.sh) and we have found below benchmark results.
We have used default configurations of rmw_zenoh except the fact that we configured some tcp settings like below:

```sh
# for rmw_zenoh
Expand All @@ -92,7 +93,7 @@ sudo sysctl -w net.core.wmem_default="20971520"

## Conclusion

It was an exciting progress for me. I've contributed a lot of open source project in this period and i've learnt a lot from my works and my mentors's showing the way during Google Summer of Code. I strongly suggest you to join Google Summer of Code Program, especially in MoveIt organization side for those who interested in robotics. After this Google Summer of Code works, i'm willing to continue this project.
It was an exciting progress for me. I've contributed a lot of open source project in this period and i've learnt a lot from my work and my mentors showing the way during Google Summer of Code. I strongly suggest you to join Google Summer of Code Program, especially in MoveIt organization side for those who interested in robotics. After this Google Summer of Code works, i'm willing to continue this project.

## Additional

Expand Down

0 comments on commit 45fa22d

Please sign in to comment.