Skip to content

Commit

Permalink
deploy: 994b95c
Browse files Browse the repository at this point in the history
  • Loading branch information
DariusIMP committed Oct 16, 2023
1 parent f5ce17b commit 3b313a2
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion blog/2023-10-03-zenoh-dragonite/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@
# run z_ping example
./z_ping 64 --no-multicast-scouting -c lowlatency.json5 -e unixpipe/example_endpoint.pipe
</code></pre><p>On our testing machine (AMD Ryzen 7 5800X with 32 GB of RAM), the newly introduced experimental features for ultra low latency support reduce latency of ~30% as shown in the table below.</p><table class="table table-striped table-bordered w-auto"><thead><tr><th style=text-align:left>Protocol</th><th style=text-align:right>5th Percentile</th><th style=text-align:right>Median</th><th style=text-align:right>95th Percentile</th></tr></thead><tbody><tr><td style=text-align:left>P2P, Y LowLat, Pipe</td><td style=text-align:right>6.0</td><td style=text-align:right>7.0</td><td style=text-align:right>9.0</td></tr><tr><td style=text-align:left>P2P, N LowLat, TCP</td><td style=text-align:right>10.0</td><td style=text-align:right>10.0</td><td style=text-align:right>11.0</td></tr></tbody></table><p>Clearly, this is a first step for Zenoh and more is to be expected in the future!</p><h1 id=heading></h1><h1 id=ros1-bridge>ROS1 bridge</h1><p>We are happy to announce that the ROS1 bridge, introduced in <a href=../../blog/2023-06-05-charmander2/#ros1-bridge>Zenoh Charmander</a>, has been released! To better understand how the ROS1 bridge works, let’s recall that any ROS1 system is centralized and contains one ROS1 Master service and a set of services called ROS1 Nodes. Each Node is capable of publishing, subscribing or querying some topics. ROS Master aggregates information about Nodes and their topics and provides a nameservice for Nodes to help them discover each other and establish direct connections when necessary. Those direct connections are used by Nodes to transport the actual topic data.</p><figure class=figure-inline><img src=../../img/20231003-blog-zenoh-dragonite/zenoh-ros1.png alt="Zenoh & Ros1" width=60% height=auto></figure><p>Compared to the alpha version, we significantly improved algorithms that utilize ROS1 standard ROSXMLRPC APIs of ROS1 Master and Nodes to collect information on the local ROS1 system. This gives the bridge the capability to also preserve topic data types and md5 signatures. Now ROS1 Bridge carefully probes all entities of the local ROS1 system to keep the information up-to-date, trying to apply caching when possible to reduce the costs of its operation.</p><p>Another significant change is the new fine-grained bridging mode config. Now users can specify bridging policy (Auto\Lazy\Disabled) both globally and for specific ROS1 topics.</p><p>As a result, the bridge is capable to expose ROS1 topics for publishers, subscribers, services and clients into Zenoh network as a set of Zenoh publishers, subscribers, queryables and queries, providing ROS1 system all set of Zenoh features, like highly-efficient and flexible network operation, storage-based data caching, etc. Moreover, multiple ROS1 systems bridged into one Zenoh network are capable of seeing each other and interact seamlessly.</p><p>ROS1 to Zenog Bridge aims to be completely transparent, making interaction with remote ROS1 topics as if they were local. The integration to any existing ROS1 system does not require its tuning, recompilation etc (of course, if its application logic won&rsquo;t get mad of seeing remote ROS1 topics in its environment :) ).</p><p>To test a new bridge, please try the following:</p><div class=highlight><pre tabindex=0 style=background-color:#f0f3f3;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-bash data-lang=bash><span style=display:flex><span><span style=color:#09f;font-style:italic># To run this example, you should have ROS1 locally installed….</span>
</code></pre><p>On our testing machine (AMD Ryzen 7 5800X with 32 GB of RAM), the newly introduced experimental features for ultra low latency support reduce latency of ~30% as shown in the table below.</p><table class="table table-striped table-bordered w-auto"><thead><tr><th style=text-align:left>Protocol</th><th style=text-align:right>5th Percentile</th><th style=text-align:right>Median</th><th style=text-align:right>95th Percentile</th></tr></thead><tbody><tr><td style=text-align:left>P2P, Y LowLat, Pipe</td><td style=text-align:right>6.0</td><td style=text-align:right>7.0</td><td style=text-align:right>9.0</td></tr><tr><td style=text-align:left>P2P, N LowLat, TCP</td><td style=text-align:right>10.0</td><td style=text-align:right>10.0</td><td style=text-align:right>11.0</td></tr></tbody></table><p>Clearly, this is a first step for Zenoh and more is to be expected in the future!</p><h1 id=heading></h1><h1 id=ros1-bridge>ROS1 bridge</h1><p>We are happy to announce that the ROS1 bridge, introduced in <a href=../../blog/2023-06-05-charmander2/#ros1-bridge>Zenoh Charmander</a>, has been released! To better understand how the ROS1 bridge works, let’s recall that any ROS1 system is centralized and contains one ROS1 Master service and a set of services called ROS1 Nodes. Each Node is capable of publishing, subscribing or querying some topics. ROS Master aggregates information about Nodes and their topics and provides a nameservice for Nodes to help them discover each other and establish direct connections when necessary. Those direct connections are used by Nodes to transport the actual topic data.</p><figure class=figure-inline><img src=../../img/20231003-blog-zenoh-dragonite/zenoh-ros1.png alt="Zenoh & Ros1" width=60% height=auto></figure><p>Compared to the alpha version, we significantly improved algorithms that utilize ROS1 standard ROSXMLRPC APIs of ROS1 Master and Nodes to collect information on the local ROS1 system. This gives the bridge the capability to also preserve topic data types and md5 signatures. Now ROS1 Bridge carefully probes all entities of the local ROS1 system to keep the information up-to-date, trying to apply caching when possible to reduce the costs of its operation.</p><p>Another significant change is the new fine-grained bridging mode config. Now users can specify bridging policy (Auto\Lazy\Disabled) both globally and for specific ROS1 topics.</p><p>As a result, the bridge is capable to expose ROS1 topics for publishers, subscribers, services and clients into Zenoh network as a set of Zenoh publishers, subscribers, queryables and queries, providing ROS1 system all set of Zenoh features, like highly-efficient and flexible network operation, storage-based data caching, etc. Moreover, multiple ROS1 systems bridged into one Zenoh network are capable of seeing each other and interact seamlessly.</p><p>ROS1 to Zenoh Bridge aims to be completely transparent, making interaction with remote ROS1 topics as if they were local. The integration to any existing ROS1 system does not require its tuning, recompilation etc (of course, if its application logic won&rsquo;t get mad of seeing remote ROS1 topics in its environment :) ).</p><p>To test a new bridge, please try the following:</p><div class=highlight><pre tabindex=0 style=background-color:#f0f3f3;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-bash data-lang=bash><span style=display:flex><span><span style=color:#09f;font-style:italic># To run this example, you should have ROS1 locally installed….</span>
</span></span><span style=display:flex><span><span style=color:#09f;font-style:italic># build the bridge from source</span>
</span></span><span style=display:flex><span>cargo build
</span></span><span style=display:flex><span><span style=color:#366>cd</span> target/debug/
Expand Down

0 comments on commit 3b313a2

Please sign in to comment.