SlideShare a Scribd company logo
1 of 29
Download to read offline
Taming the Dragon — Ep. 3
ROS 2 Robot-to-Anything with Zenoh
Julien Enoch
Senior Solutions Architect
julien.enoch@zettascale.tech
Six Episodes
Nov 22nd — Zenoh Genesis (Recording )
Nov 29th — Zenoh: Getting Started (Recording )
Dec 6th — ROS 2 Robot-to-Anything with Zenoh
Dec 13th — Zenoh on Microcontrollers and Low Power Networks
Dec 20th — Integrating DataBases and Messaging Protocols with Zenoh
Jan 6th — Data Flow Programming with Zenoh-Flow
All episodes run live on the given day at 10.00 CET and 18.00 CET to facilitate
participation from around the globe!
Peer
declare_subscriber
(**/temp).mode(Pull)
Peer
declare_queryable
(elec_consumption)
Peer
get(elec_consumption)
Peer
get(room/**/hum)
Peer
put(room/2/hum, 42)
(room/**)
• Pub / Sub (push)
Peer
put(room/1/temp, 19)
Peer
declare_subscriber
(room/1/temp)
pull()
• Pub / Sub (pull)
• Get / Reply
• Pub / Store / Get
Pub / Sub... but not only!
Router
Router
Any topology
Peer-to-peer
Clique and mesh topologies
Brokered Routed
Router
Router
Router
Client
Client
Routed
Routers forward data to and
from peers and clients
Brokered
Clients communicate
through a router or a peer
Mesh
Peer
Peer
Peer
Peer
Peer
Router
Client Client Client Client
Router
Router
Client
Clique
Peer
Peer
Peer
Peer
ROS 2 ❤ DDS
ROS 2 is based on DDS
Picture:
S. Macenski, T. Foote, B. Gerkey, C. Lalancette, W. Woodall,
“Robot Operating System 2: Design, architecture, and uses in the wild,”
Science Robotics vol. 7, May 2022.
https://arxiv.org/pdf/2211.07752.pdf
ROS 2 node interfaces: topic, services and action
•DDS is pub/sub on topics
•ROS 2 mapping:
ROS 2 DDS topics
Topic: /abc rt/abc
Service: /svc
rq/svcRequest
rr/svcReply
Action: /act
rq/act/_action/send_goalRequest
rr/act/_action/send_goalReply
rq/act/_action/cancel_goalRequest
rr/act/_action/cancel_goalReply
rq/act/_action/get_resultRequest
rr/act/_action/get_resultReply
rt/act/_action/feedback
rt/act/_action/status
DDS: perfect for wired LAN, but...
Designed to work on a wired-
network with low message loss
Does not work o
ff
the shelf over
the Internet
Hard to scale on at Internet Scale
without breaking its semantics
Steep Learning Curve
Push Mode Only
DDS Global Data Space
...
Data
Writer
Data
Writer
Data
Writer
Data
Reader
Data
Reader
Data
Reader
Data
Reader
Data
Writer
TopicA
QoS
TopicB
QoS
TopicC
QoS
TopicD
QoS
DDS ❤ Zenoh
DDS Zenoh Kafka MQTT
Pub/Sub (Push) ✔ ✔
𐄂
✔
Pub/Sub (Pull)
𐄂
✔ ✔
𐄂
Distributed Query
𐄂
✔
𐄂𐄂
High Performance ✔ ✔
𐄂𐄂
Constrained HW
𐄂
✔
𐄂
✔
Constrained Networks
𐄂
✔
𐄂𐄂
Internet Scale
Deployment
𐄂
✔ ✔ ✔
Standard Based ✔
𐄂𐄂
✔
QoS ✔ ✔
𐄂
✔
Peer2Peer ✔ ✔
𐄂𐄂
Brokered
𐄂
✔ ✔ ✔
Routed
𐄂
✔
𐄂𐄂
Feature Matrix
Zenoh vs DDS
Discovery
Open Robotics performed a
comparative evaluation of
Zenoh and DDS (full report)
The results showed how
much more e
ffi
cient zenoh
discovery is compared to
DDS
1
8
www.openrobotics.org
www.openrobotics.org
Some interesting results
Discovery traffic versus application traffic
Some interesting results
Multicast traffic versus unicast and TCP traffic
(Multicast is a great way to bring down a poorly-configured network)
SSE
…
Extensible
…
Enhance zenoh with plugins
Interact with other technologies
SSE
…
https://github.com/eclipse-zenoh/zenoh-plugin-dds
…
Enhance zenoh with plugins
Interact with other technologies
Plugin or standalone ?
Plugin:
•Dynamic library (in Rust)
•Loaded by a Zenoh router (at startup or at runtime)
•Shares the Zenoh Runtime with the router
=> direct method calls to the router
Zenoh
Router
REST
Plugin
DDS
Plugin
Standalone:
•Same plugin but statically linked !
•Just a main() starting a Zenoh Runtime
and 1 or more plugins
•Can be a Zenoh peer or a Zenoh client
zenoh-bridge-dds
REST
Plugin
DDS
Plugin
ROS 2 ⬌ DDS ⬌ Zenoh mapping
ROS 2 ⬌ DDS ⬌ Zenoh mapping
zenoh-bridge-dds
DW
DR
Pub
Sub
/cmd_vel
/scan rt/scan
rt/cmd_vel
ROS 2 ⬌ DDS ⬌ Zenoh mapping
zenoh-bridge-dds
DW
DR
DR
DW
Pub
Sub
/cmd_vel
/scan rt/scan
rt/cmd_vel
put()
sub()
rt/scan
rt/cmd_vel
ROS 2 ⬌ DDS ⬌ Zenoh mapping
zenoh-bridge-dds
DW
DR
DR
DW
Pub
Sub
/cmd_vel
/scan rt/scan
rt/cmd_vel
put()
sub()
rt/scan
rt/cmd_vel
sub()
put()
ROS 2 ⬌ DDS ⬌ Zenoh mapping
zenoh-bridge-dds
DW
DR
DR
DW
Pub
Sub
/cmd_vel
/scan rt/scan
rt/cmd_vel
put()
sub()
rt/scan
rt/cmd_vel
sub()
put()
zenoh-bridge-dds
--scope bot1
zenoh-bridge-dds
--scope bot2
/scan rt/imu
rt/cmd_vel
/cmd_vel
bot1/rt/scan
bot2/rt/scan
/scan rt/scan
rt/cmd_vel
/cmd_vel
ROS 2 ⬌ DDS ⬌ Zenoh mapping
zenoh-bridge-dds
DW
DR
DR
DW
Pub
Sub
/cmd_vel
/scan rt/scan
rt/cmd_vel
put()
sub()
rt/scan
rt/cmd_vel
sub()
put()
zenoh-bridge-dds
--scope bot1
zenoh-bridge-dds
--scope bot2
sub()
/scan rt/imu
rt/cmd_vel
/cmd_vel
bot1/rt/scan
**/rt/scan
bot2/rt/scan
/scan rt/scan
rt/cmd_vel
/cmd_vel
ROS 2 ⬌ DDS ⬌ Zenoh mapping
zenoh-bridge-dds
DW
DR
DR
DW
Pub
Sub
/cmd_vel
/scan rt/scan
rt/cmd_vel
put()
sub()
rt/scan
rt/cmd_vel
sub()
put()
zenoh-bridge-dds
--scope bot1
zenoh-bridge-dds
--scope bot2
sub()
put()
/scan rt/imu
rt/cmd_vel
/cmd_vel
bot1/rt/scan
**/rt/scan
bot2/rt/scan
/scan rt/scan
rt/cmd_vel
/cmd_vel bot2/rt/cmd_vel
2 modes on discovery of DDS Readers/Writers
•Pros:
•Minimal discovery tra
ffi
c
•Cons:
•No remote topic list,
no global Nodes graph
•Services work only if server
started at
fi
rst
Forward discovery:
•Forwards discovery info to the remote
bridge
•The remote bridge creates proxy (identical)
DDS Entities
Mirror (default):
•Creates local routes only, with
mirror (matching) DDS Entities
•Pros:
•Topic list and Nodes graph work
everywhere
•Cons:
•More discovery tra
ffi
c between the
bridges (still less than DDS)
Use cases
zenoh-bridge-dds
--scope bot1
zenoh-bridge-dds
--scope bot2
Fleet
Manager
Fleet Management
zenoh-bridge-dds
--scope simu
zenoh-bridge-dds
--scope reel
Zenoh
router
Replay
Record / Replay
zenoh-bridge-dds
Zenoh
router
SSE
Integrations
zenoh-bridge-dds
pico
Pub/Sub with MCUs
zenoh-bridge-dds zenoh-bridge-dds
Zenoh
router
NAT
Cross-WAN bridging (routed or direct)
NAT
🙌 Hands-on !
HTTP teleop https://bit.ly/GistWebinarZROS2
HTTP
zenoh-bridge-dds
http://demo.zenoh.io
demo.zenoh.io
Zenoh
Router
REST
Plugin
Zenoh
TCP
simu/rt/cmd_vel
Adding a real robot with camera
HTTP
Zenoh
TCP
zenoh-bridge-dds
http://demo.zenoh.io
demo.zenoh.io
Zenoh
Router
REST
Plugin
simu/rt/cmd_vel
zenoh-bridge-dds
zcapture
bot1/rt/cmd_vel
bot1/cams/0
Web
Server
Plugin
HTTP
zenoh-bridge-dds
http://demo.zenoh.io
demo.zenoh.io
Zenoh
Router
REST
Plugin
Zenoh
TCP
simu/rt/cmd_vel
Adding Zigbee/MQTT bridge
zenoh-bridge-mqtt
zigbee2mqtt/device/button
SSE
…
What's next ?
…
Enhance zenoh with plugins
Interact with other technologies
Don’t forget to visit
Zenoh’s website…
https://zenoh.io/
… zenoh-plugin-dds
GitHub …
https://github.com/
eclipse-zenoh/zenoh-plugin-dds
… and to join Zenoh’s
Discord server!
https://discord.gg/
2GJ958VuHs
Patience, persistence and perspiration
make an unbeatable combination for
success.
Thank You

More Related Content

Similar to "Taming the Dragon": ROS2 Robot-to-Anything with Zenoh

Network Stack in Userspace (NUSE)
Network Stack in Userspace (NUSE)Network Stack in Userspace (NUSE)
Network Stack in Userspace (NUSE)Hajime Tazaki
 
101 3.2 process text streams using filters
101 3.2 process text streams using filters101 3.2 process text streams using filters
101 3.2 process text streams using filtersAcácio Oliveira
 
101 3.2 process text streams using filters
101 3.2 process text streams using filters101 3.2 process text streams using filters
101 3.2 process text streams using filtersAcácio Oliveira
 
101 3.2 process text streams using filters
101 3.2 process text streams using filters101 3.2 process text streams using filters
101 3.2 process text streams using filtersAcácio Oliveira
 
Lisp in a Startup: the Good, the Bad, and the Ugly
Lisp in a Startup: the Good, the Bad, and the UglyLisp in a Startup: the Good, the Bad, and the Ugly
Lisp in a Startup: the Good, the Bad, and the UglyVsevolod Dyomkin
 
ROS Hands-On Intro/Tutorial (Robotic Vision Summer School 2015) #RVSS #ACRV
ROS Hands-On Intro/Tutorial (Robotic Vision Summer School 2015) #RVSS #ACRVROS Hands-On Intro/Tutorial (Robotic Vision Summer School 2015) #RVSS #ACRV
ROS Hands-On Intro/Tutorial (Robotic Vision Summer School 2015) #RVSS #ACRVJuxi Leitner
 
Nodejs a-practical-introduction-oredev
Nodejs a-practical-introduction-oredevNodejs a-practical-introduction-oredev
Nodejs a-practical-introduction-oredevFelix Geisendörfer
 
Docker and Containers for Development and Deployment — SCALE12X
Docker and Containers for Development and Deployment — SCALE12XDocker and Containers for Development and Deployment — SCALE12X
Docker and Containers for Development and Deployment — SCALE12XJérôme Petazzoni
 
Parallel Graphics in Frostbite - Current & Future (Siggraph 2009)
Parallel Graphics in Frostbite - Current & Future (Siggraph 2009)Parallel Graphics in Frostbite - Current & Future (Siggraph 2009)
Parallel Graphics in Frostbite - Current & Future (Siggraph 2009)Johan Andersson
 
Kernel Recipes 2019 - Metrics are money
Kernel Recipes 2019 - Metrics are moneyKernel Recipes 2019 - Metrics are money
Kernel Recipes 2019 - Metrics are moneyAnne Nicolas
 
3.2 process text streams using filters
3.2 process text streams using filters3.2 process text streams using filters
3.2 process text streams using filtersAcácio Oliveira
 
Introduction to Docker (and a bit more) at LSPE meetup Sunnyvale
Introduction to Docker (and a bit more) at LSPE meetup SunnyvaleIntroduction to Docker (and a bit more) at LSPE meetup Sunnyvale
Introduction to Docker (and a bit more) at LSPE meetup SunnyvaleJérôme Petazzoni
 
Rclex: A Library for Robotics meet Elixir
Rclex: A Library for Robotics meet ElixirRclex: A Library for Robotics meet Elixir
Rclex: A Library for Robotics meet ElixirHideki Takase
 
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...Akihiro Suda
 
2008-11-13 CAVMEN RHEL for System z Deep Dive
2008-11-13 CAVMEN RHEL for System z Deep Dive2008-11-13 CAVMEN RHEL for System z Deep Dive
2008-11-13 CAVMEN RHEL for System z Deep DiveShawn Wells
 
FreeBSD: The Next 10 Years (MeetBSD 2014)
FreeBSD: The Next 10 Years (MeetBSD 2014)FreeBSD: The Next 10 Years (MeetBSD 2014)
FreeBSD: The Next 10 Years (MeetBSD 2014)iXsystems
 

Similar to "Taming the Dragon": ROS2 Robot-to-Anything with Zenoh (20)

Network Stack in Userspace (NUSE)
Network Stack in Userspace (NUSE)Network Stack in Userspace (NUSE)
Network Stack in Userspace (NUSE)
 
Ropython-windbg-python-extensions
Ropython-windbg-python-extensionsRopython-windbg-python-extensions
Ropython-windbg-python-extensions
 
101 3.2 process text streams using filters
101 3.2 process text streams using filters101 3.2 process text streams using filters
101 3.2 process text streams using filters
 
101 3.2 process text streams using filters
101 3.2 process text streams using filters101 3.2 process text streams using filters
101 3.2 process text streams using filters
 
101 3.2 process text streams using filters
101 3.2 process text streams using filters101 3.2 process text streams using filters
101 3.2 process text streams using filters
 
Lisp in a Startup: the Good, the Bad, and the Ugly
Lisp in a Startup: the Good, the Bad, and the UglyLisp in a Startup: the Good, the Bad, and the Ugly
Lisp in a Startup: the Good, the Bad, and the Ugly
 
ROS Hands-On Intro/Tutorial (Robotic Vision Summer School 2015) #RVSS #ACRV
ROS Hands-On Intro/Tutorial (Robotic Vision Summer School 2015) #RVSS #ACRVROS Hands-On Intro/Tutorial (Robotic Vision Summer School 2015) #RVSS #ACRV
ROS Hands-On Intro/Tutorial (Robotic Vision Summer School 2015) #RVSS #ACRV
 
Nodejs a-practical-introduction-oredev
Nodejs a-practical-introduction-oredevNodejs a-practical-introduction-oredev
Nodejs a-practical-introduction-oredev
 
Debugging ZFS: From Illumos to Linux
Debugging ZFS: From Illumos to LinuxDebugging ZFS: From Illumos to Linux
Debugging ZFS: From Illumos to Linux
 
BitTorrent on iOS
BitTorrent on iOSBitTorrent on iOS
BitTorrent on iOS
 
.ppt
.ppt.ppt
.ppt
 
Docker and Containers for Development and Deployment — SCALE12X
Docker and Containers for Development and Deployment — SCALE12XDocker and Containers for Development and Deployment — SCALE12X
Docker and Containers for Development and Deployment — SCALE12X
 
Parallel Graphics in Frostbite - Current & Future (Siggraph 2009)
Parallel Graphics in Frostbite - Current & Future (Siggraph 2009)Parallel Graphics in Frostbite - Current & Future (Siggraph 2009)
Parallel Graphics in Frostbite - Current & Future (Siggraph 2009)
 
Kernel Recipes 2019 - Metrics are money
Kernel Recipes 2019 - Metrics are moneyKernel Recipes 2019 - Metrics are money
Kernel Recipes 2019 - Metrics are money
 
3.2 process text streams using filters
3.2 process text streams using filters3.2 process text streams using filters
3.2 process text streams using filters
 
Introduction to Docker (and a bit more) at LSPE meetup Sunnyvale
Introduction to Docker (and a bit more) at LSPE meetup SunnyvaleIntroduction to Docker (and a bit more) at LSPE meetup Sunnyvale
Introduction to Docker (and a bit more) at LSPE meetup Sunnyvale
 
Rclex: A Library for Robotics meet Elixir
Rclex: A Library for Robotics meet ElixirRclex: A Library for Robotics meet Elixir
Rclex: A Library for Robotics meet Elixir
 
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
 
2008-11-13 CAVMEN RHEL for System z Deep Dive
2008-11-13 CAVMEN RHEL for System z Deep Dive2008-11-13 CAVMEN RHEL for System z Deep Dive
2008-11-13 CAVMEN RHEL for System z Deep Dive
 
FreeBSD: The Next 10 Years (MeetBSD 2014)
FreeBSD: The Next 10 Years (MeetBSD 2014)FreeBSD: The Next 10 Years (MeetBSD 2014)
FreeBSD: The Next 10 Years (MeetBSD 2014)
 

Recently uploaded

SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptxLBM Solutions
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 

Recently uploaded (20)

SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptx
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 

"Taming the Dragon": ROS2 Robot-to-Anything with Zenoh

  • 1. Taming the Dragon — Ep. 3 ROS 2 Robot-to-Anything with Zenoh Julien Enoch Senior Solutions Architect julien.enoch@zettascale.tech
  • 2. Six Episodes Nov 22nd — Zenoh Genesis (Recording ) Nov 29th — Zenoh: Getting Started (Recording ) Dec 6th — ROS 2 Robot-to-Anything with Zenoh Dec 13th — Zenoh on Microcontrollers and Low Power Networks Dec 20th — Integrating DataBases and Messaging Protocols with Zenoh Jan 6th — Data Flow Programming with Zenoh-Flow All episodes run live on the given day at 10.00 CET and 18.00 CET to facilitate participation from around the globe!
  • 3. Peer declare_subscriber (**/temp).mode(Pull) Peer declare_queryable (elec_consumption) Peer get(elec_consumption) Peer get(room/**/hum) Peer put(room/2/hum, 42) (room/**) • Pub / Sub (push) Peer put(room/1/temp, 19) Peer declare_subscriber (room/1/temp) pull() • Pub / Sub (pull) • Get / Reply • Pub / Store / Get Pub / Sub... but not only!
  • 4. Router Router Any topology Peer-to-peer Clique and mesh topologies Brokered Routed Router Router Router Client Client Routed Routers forward data to and from peers and clients Brokered Clients communicate through a router or a peer Mesh Peer Peer Peer Peer Peer Router Client Client Client Client Router Router Client Clique Peer Peer Peer Peer
  • 5. ROS 2 ❤ DDS
  • 6. ROS 2 is based on DDS Picture: S. Macenski, T. Foote, B. Gerkey, C. Lalancette, W. Woodall, “Robot Operating System 2: Design, architecture, and uses in the wild,” Science Robotics vol. 7, May 2022. https://arxiv.org/pdf/2211.07752.pdf ROS 2 node interfaces: topic, services and action •DDS is pub/sub on topics •ROS 2 mapping: ROS 2 DDS topics Topic: /abc rt/abc Service: /svc rq/svcRequest rr/svcReply Action: /act rq/act/_action/send_goalRequest rr/act/_action/send_goalReply rq/act/_action/cancel_goalRequest rr/act/_action/cancel_goalReply rq/act/_action/get_resultRequest rr/act/_action/get_resultReply rt/act/_action/feedback rt/act/_action/status
  • 7. DDS: perfect for wired LAN, but... Designed to work on a wired- network with low message loss Does not work o ff the shelf over the Internet Hard to scale on at Internet Scale without breaking its semantics Steep Learning Curve Push Mode Only DDS Global Data Space ... Data Writer Data Writer Data Writer Data Reader Data Reader Data Reader Data Reader Data Writer TopicA QoS TopicB QoS TopicC QoS TopicD QoS
  • 9. DDS Zenoh Kafka MQTT Pub/Sub (Push) ✔ ✔ 𐄂 ✔ Pub/Sub (Pull) 𐄂 ✔ ✔ 𐄂 Distributed Query 𐄂 ✔ 𐄂𐄂 High Performance ✔ ✔ 𐄂𐄂 Constrained HW 𐄂 ✔ 𐄂 ✔ Constrained Networks 𐄂 ✔ 𐄂𐄂 Internet Scale Deployment 𐄂 ✔ ✔ ✔ Standard Based ✔ 𐄂𐄂 ✔ QoS ✔ ✔ 𐄂 ✔ Peer2Peer ✔ ✔ 𐄂𐄂 Brokered 𐄂 ✔ ✔ ✔ Routed 𐄂 ✔ 𐄂𐄂 Feature Matrix
  • 10. Zenoh vs DDS Discovery Open Robotics performed a comparative evaluation of Zenoh and DDS (full report) The results showed how much more e ffi cient zenoh discovery is compared to DDS 1 8 www.openrobotics.org www.openrobotics.org Some interesting results Discovery traffic versus application traffic Some interesting results Multicast traffic versus unicast and TCP traffic (Multicast is a great way to bring down a poorly-configured network)
  • 11. SSE … Extensible … Enhance zenoh with plugins Interact with other technologies
  • 13. Plugin or standalone ? Plugin: •Dynamic library (in Rust) •Loaded by a Zenoh router (at startup or at runtime) •Shares the Zenoh Runtime with the router => direct method calls to the router Zenoh Router REST Plugin DDS Plugin Standalone: •Same plugin but statically linked ! •Just a main() starting a Zenoh Runtime and 1 or more plugins •Can be a Zenoh peer or a Zenoh client zenoh-bridge-dds REST Plugin DDS Plugin
  • 14. ROS 2 ⬌ DDS ⬌ Zenoh mapping
  • 15. ROS 2 ⬌ DDS ⬌ Zenoh mapping zenoh-bridge-dds DW DR Pub Sub /cmd_vel /scan rt/scan rt/cmd_vel
  • 16. ROS 2 ⬌ DDS ⬌ Zenoh mapping zenoh-bridge-dds DW DR DR DW Pub Sub /cmd_vel /scan rt/scan rt/cmd_vel put() sub() rt/scan rt/cmd_vel
  • 17. ROS 2 ⬌ DDS ⬌ Zenoh mapping zenoh-bridge-dds DW DR DR DW Pub Sub /cmd_vel /scan rt/scan rt/cmd_vel put() sub() rt/scan rt/cmd_vel sub() put()
  • 18. ROS 2 ⬌ DDS ⬌ Zenoh mapping zenoh-bridge-dds DW DR DR DW Pub Sub /cmd_vel /scan rt/scan rt/cmd_vel put() sub() rt/scan rt/cmd_vel sub() put() zenoh-bridge-dds --scope bot1 zenoh-bridge-dds --scope bot2 /scan rt/imu rt/cmd_vel /cmd_vel bot1/rt/scan bot2/rt/scan /scan rt/scan rt/cmd_vel /cmd_vel
  • 19. ROS 2 ⬌ DDS ⬌ Zenoh mapping zenoh-bridge-dds DW DR DR DW Pub Sub /cmd_vel /scan rt/scan rt/cmd_vel put() sub() rt/scan rt/cmd_vel sub() put() zenoh-bridge-dds --scope bot1 zenoh-bridge-dds --scope bot2 sub() /scan rt/imu rt/cmd_vel /cmd_vel bot1/rt/scan **/rt/scan bot2/rt/scan /scan rt/scan rt/cmd_vel /cmd_vel
  • 20. ROS 2 ⬌ DDS ⬌ Zenoh mapping zenoh-bridge-dds DW DR DR DW Pub Sub /cmd_vel /scan rt/scan rt/cmd_vel put() sub() rt/scan rt/cmd_vel sub() put() zenoh-bridge-dds --scope bot1 zenoh-bridge-dds --scope bot2 sub() put() /scan rt/imu rt/cmd_vel /cmd_vel bot1/rt/scan **/rt/scan bot2/rt/scan /scan rt/scan rt/cmd_vel /cmd_vel bot2/rt/cmd_vel
  • 21. 2 modes on discovery of DDS Readers/Writers •Pros: •Minimal discovery tra ffi c •Cons: •No remote topic list, no global Nodes graph •Services work only if server started at fi rst Forward discovery: •Forwards discovery info to the remote bridge •The remote bridge creates proxy (identical) DDS Entities Mirror (default): •Creates local routes only, with mirror (matching) DDS Entities •Pros: •Topic list and Nodes graph work everywhere •Cons: •More discovery tra ffi c between the bridges (still less than DDS)
  • 22. Use cases zenoh-bridge-dds --scope bot1 zenoh-bridge-dds --scope bot2 Fleet Manager Fleet Management zenoh-bridge-dds --scope simu zenoh-bridge-dds --scope reel Zenoh router Replay Record / Replay zenoh-bridge-dds Zenoh router SSE Integrations zenoh-bridge-dds pico Pub/Sub with MCUs zenoh-bridge-dds zenoh-bridge-dds Zenoh router NAT Cross-WAN bridging (routed or direct) NAT
  • 25. Adding a real robot with camera HTTP Zenoh TCP zenoh-bridge-dds http://demo.zenoh.io demo.zenoh.io Zenoh Router REST Plugin simu/rt/cmd_vel zenoh-bridge-dds zcapture bot1/rt/cmd_vel bot1/cams/0 Web Server Plugin
  • 27. SSE … What's next ? … Enhance zenoh with plugins Interact with other technologies
  • 28. Don’t forget to visit Zenoh’s website… https://zenoh.io/ … zenoh-plugin-dds GitHub … https://github.com/ eclipse-zenoh/zenoh-plugin-dds … and to join Zenoh’s Discord server! https://discord.gg/ 2GJ958VuHs
  • 29. Patience, persistence and perspiration make an unbeatable combination for success. Thank You