and dds lua workshop peer to peer publish/subscribe using ... · peer to peer publish/subscribe...
TRANSCRIPT
![Page 1: and DDS Lua Workshop Peer to Peer publish/subscribe using ... · Peer to Peer publish/subscribe using Lua and DDS ... ENTITY FACTORY DESTINATION ORDER ... Reliable Alarm/Events](https://reader030.vdocuments.us/reader030/viewer/2022032711/5afe79c47f8b9a994d8f0713/html5/thumbnails/1.jpg)
Peer to Peer publish/subscribe using Lua and DDS
Gianpiero NapoliSenior Software Engineer - RTI [email protected] / @magopieri
Lua Workshop 2016
![Page 2: and DDS Lua Workshop Peer to Peer publish/subscribe using ... · Peer to Peer publish/subscribe using Lua and DDS ... ENTITY FACTORY DESTINATION ORDER ... Reliable Alarm/Events](https://reader030.vdocuments.us/reader030/viewer/2022032711/5afe79c47f8b9a994d8f0713/html5/thumbnails/2.jpg)
Lua Workshop 2016 Gianpiero Napoli - RTI
Agenda
● Who am I● What is (RTI) DDS
○ QoS● How we used Lua
○ to simplify APIs and ○ to add scripting capabilities
● Demo
Real-Time Pub Sub (for the IIoT) using Lua
![Page 3: and DDS Lua Workshop Peer to Peer publish/subscribe using ... · Peer to Peer publish/subscribe using Lua and DDS ... ENTITY FACTORY DESTINATION ORDER ... Reliable Alarm/Events](https://reader030.vdocuments.us/reader030/viewer/2022032711/5afe79c47f8b9a994d8f0713/html5/thumbnails/3.jpg)
Who am I?and what do I do
![Page 4: and DDS Lua Workshop Peer to Peer publish/subscribe using ... · Peer to Peer publish/subscribe using Lua and DDS ... ENTITY FACTORY DESTINATION ORDER ... Reliable Alarm/Events](https://reader030.vdocuments.us/reader030/viewer/2022032711/5afe79c47f8b9a994d8f0713/html5/thumbnails/4.jpg)
Lua Workshop 2016 Gianpiero Napoli - RTI
Who?
![Page 5: and DDS Lua Workshop Peer to Peer publish/subscribe using ... · Peer to Peer publish/subscribe using Lua and DDS ... ENTITY FACTORY DESTINATION ORDER ... Reliable Alarm/Events](https://reader030.vdocuments.us/reader030/viewer/2022032711/5afe79c47f8b9a994d8f0713/html5/thumbnails/5.jpg)
Lua Workshop 2016 Gianpiero Napoli - RTI
What we do
Application
Middleware
Network Stack
Application
Middleware
Network Stack
● We build real-time middleware○ Real Time Connext
● What is middleware?○ Handles discovery, connection,
failures, ...○ Easy programing: simpler APIs
Application
Middleware
Network Stack
pub/subAPI
SocketAPI
![Page 6: and DDS Lua Workshop Peer to Peer publish/subscribe using ... · Peer to Peer publish/subscribe using Lua and DDS ... ENTITY FACTORY DESTINATION ORDER ... Reliable Alarm/Events](https://reader030.vdocuments.us/reader030/viewer/2022032711/5afe79c47f8b9a994d8f0713/html5/thumbnails/6.jpg)
What is (RTI) DDS
![Page 7: and DDS Lua Workshop Peer to Peer publish/subscribe using ... · Peer to Peer publish/subscribe using Lua and DDS ... ENTITY FACTORY DESTINATION ORDER ... Reliable Alarm/Events](https://reader030.vdocuments.us/reader030/viewer/2022032711/5afe79c47f8b9a994d8f0713/html5/thumbnails/7.jpg)
https://en.wikipedia.org/wiki/Dentist#/media/File:US_Navy_030124-N-1328C-510_Navy_dentist_treats_patients_aboard_ship.jpg
![Page 8: and DDS Lua Workshop Peer to Peer publish/subscribe using ... · Peer to Peer publish/subscribe using Lua and DDS ... ENTITY FACTORY DESTINATION ORDER ... Reliable Alarm/Events](https://reader030.vdocuments.us/reader030/viewer/2022032711/5afe79c47f8b9a994d8f0713/html5/thumbnails/8.jpg)
Data Distribution Servicea real time communication technology
standard for the Industrial Internet of Things
![Page 9: and DDS Lua Workshop Peer to Peer publish/subscribe using ... · Peer to Peer publish/subscribe using Lua and DDS ... ENTITY FACTORY DESTINATION ORDER ... Reliable Alarm/Events](https://reader030.vdocuments.us/reader030/viewer/2022032711/5afe79c47f8b9a994d8f0713/html5/thumbnails/9.jpg)
Lua Workshop 2016 Gianpiero Napoli - RTI
The DDS Family
● Object Management Group Standards● Data Distribution Service (DDS)
○ API○ QoS
● Real-Time Publish Subscribe (RTPS)○ Data encoding○ Interaction Protocol○ On the Wire Format
● Extensions:○ XTypes○ Security
![Page 10: and DDS Lua Workshop Peer to Peer publish/subscribe using ... · Peer to Peer publish/subscribe using Lua and DDS ... ENTITY FACTORY DESTINATION ORDER ... Reliable Alarm/Events](https://reader030.vdocuments.us/reader030/viewer/2022032711/5afe79c47f8b9a994d8f0713/html5/thumbnails/10.jpg)
Lua Workshop 2016 Gianpiero Napoli - RTI
Publish/Subscribe
● Paradigm shift:○ From “give me your information” to “send me your data have when
you have more”● Applications specify what can provide and what are they interested in
○ Middleware handles sending, reception and conversion○ e.g. “I offer temperature data”, “I’m interested in pressure data”
● Applications are matched by interests:
Temp Publisher
Temp Subscriber
TempSubscriber
Pressure Subscriber
![Page 11: and DDS Lua Workshop Peer to Peer publish/subscribe using ... · Peer to Peer publish/subscribe using Lua and DDS ... ENTITY FACTORY DESTINATION ORDER ... Reliable Alarm/Events](https://reader030.vdocuments.us/reader030/viewer/2022032711/5afe79c47f8b9a994d8f0713/html5/thumbnails/11.jpg)
Lua Workshop 2016 Gianpiero Napoli - RTI
Data Centric Model
● Data drive the communication○ Data type and content define the interactions○ e.g. Temperature data
● Topic is the exchange unit○ Name + Type○ Samples are univocally identified by keys (like in DB)○ QoS per publication: matched vs. offered
● Global Data Space○ Applications publish topics to a global data space○ Global shared cache
Temp Writer
Temp Writer
Pressure Writer
Temp Reader
Pressure Reader
Pressure Reader
Topic: Temp
Topic: Pressure
![Page 12: and DDS Lua Workshop Peer to Peer publish/subscribe using ... · Peer to Peer publish/subscribe using Lua and DDS ... ENTITY FACTORY DESTINATION ORDER ... Reliable Alarm/Events](https://reader030.vdocuments.us/reader030/viewer/2022032711/5afe79c47f8b9a994d8f0713/html5/thumbnails/12.jpg)
Lua Workshop 2016 Gianpiero Napoli - RTI
Data Centric Model
● Decentralized● Acts as a distributed database/cache● No servers involved
Source Longitude Latitude Altitude
UAV1 37.4 -120 500
UAV2 40.1 -23 433
UAV3 50 -1 100
Virtual Data Space
Source Event Code
UAV1 WARNING FUEL_LOW
UAV2 INFO LANDINGUAV1
UAV2
UAV3
All about UAV1
All UAV positions
![Page 13: and DDS Lua Workshop Peer to Peer publish/subscribe using ... · Peer to Peer publish/subscribe using Lua and DDS ... ENTITY FACTORY DESTINATION ORDER ... Reliable Alarm/Events](https://reader030.vdocuments.us/reader030/viewer/2022032711/5afe79c47f8b9a994d8f0713/html5/thumbnails/13.jpg)
Lua Workshop 2016 Gianpiero Napoli - RTI
DDS Architecture
![Page 14: and DDS Lua Workshop Peer to Peer publish/subscribe using ... · Peer to Peer publish/subscribe using Lua and DDS ... ENTITY FACTORY DESTINATION ORDER ... Reliable Alarm/Events](https://reader030.vdocuments.us/reader030/viewer/2022032711/5afe79c47f8b9a994d8f0713/html5/thumbnails/14.jpg)
Lua Workshop 2016 Gianpiero Napoli - RTI
Quality of Servicechoose your ingredients and you are ready to go...
https://commons.wikimedia.org/wiki/File:Salad_bar-02.jpg
![Page 15: and DDS Lua Workshop Peer to Peer publish/subscribe using ... · Peer to Peer publish/subscribe using Lua and DDS ... ENTITY FACTORY DESTINATION ORDER ... Reliable Alarm/Events](https://reader030.vdocuments.us/reader030/viewer/2022032711/5afe79c47f8b9a994d8f0713/html5/thumbnails/15.jpg)
Lua Workshop 2016 Gianpiero Napoli - RTI
Quality of Service (QoS)
Quality of Service Quality of service
DURABILITY USER_DATA
HISTORY TOPIC_DATA
READER DATA LIFECYCLE GROUP_DATA
WRITER DATA LIFECYCLE PARTITION
LIFESPAN PRESENTATION
ENTITY FACTORY DESTINATION ORDER
RESOURCE LIMITS OWNERSHIP
RELIABILITY OWNERSHIP STRENGTH
TIME BASED FILTER LIVELINESS
DEADLINE LATENCY BUDGET
CONTENT FILTERS TRANSPORT PRIORITY
Vol
atili
tyIn
frast
ruct
ure
Del
iver
yU
serP
resentationR
edundancyTransport
![Page 16: and DDS Lua Workshop Peer to Peer publish/subscribe using ... · Peer to Peer publish/subscribe using Lua and DDS ... ENTITY FACTORY DESTINATION ORDER ... Reliable Alarm/Events](https://reader030.vdocuments.us/reader030/viewer/2022032711/5afe79c47f8b9a994d8f0713/html5/thumbnails/16.jpg)
Lua Workshop 2016 Gianpiero Napoli - RTI
Example: Reliable Alarm/Events
Quality of Service Quality of service
DURABILITY USER_DATA
HISTORY TOPIC_DATA
READER DATA LIFECYCLE GROUP_DATA
WRITER DATA LIFECYCLE PARTITION
LIFESPAN PRESENTATION
ENTITY FACTORY DESTINATION ORDER
RESOURCE LIMITS OWNERSHIP
RELIABILITY OWNERSHIP STRENGTH
TIME BASED FILTER LIVELINESS
DEADLINE LATENCY BUDGET
CONTENT FILTERS TRANSPORT PRIORITY
Vol
atili
tyIn
frast
ruct
ure
Del
iver
yU
serP
resentationR
edundancyTransport
![Page 17: and DDS Lua Workshop Peer to Peer publish/subscribe using ... · Peer to Peer publish/subscribe using Lua and DDS ... ENTITY FACTORY DESTINATION ORDER ... Reliable Alarm/Events](https://reader030.vdocuments.us/reader030/viewer/2022032711/5afe79c47f8b9a994d8f0713/html5/thumbnails/17.jpg)
Lua Workshop 2016 Gianpiero Napoli - RTI
Example: Data Redundancy
Quality of Service Quality of service
DURABILITY USER_DATA
HISTORY TOPIC_DATA
READER DATA LIFECYCLE GROUP_DATA
WRITER DATA LIFECYCLE PARTITION
LIFESPAN PRESENTATION
ENTITY FACTORY DESTINATION ORDER
RESOURCE LIMITS OWNERSHIP
RELIABILITY OWNERSHIP STRENGTH
TIME BASED FILTER LIVELINESS
DEADLINE LATENCY BUDGET
CONTENT FILTERS TRANSPORT PRIORITY
Vol
atili
tyIn
frast
ruct
ure
Del
iver
yU
serP
resentationR
edundancyTransport
![Page 18: and DDS Lua Workshop Peer to Peer publish/subscribe using ... · Peer to Peer publish/subscribe using Lua and DDS ... ENTITY FACTORY DESTINATION ORDER ... Reliable Alarm/Events](https://reader030.vdocuments.us/reader030/viewer/2022032711/5afe79c47f8b9a994d8f0713/html5/thumbnails/18.jpg)
Ok.. but what about Lua?
![Page 19: and DDS Lua Workshop Peer to Peer publish/subscribe using ... · Peer to Peer publish/subscribe using Lua and DDS ... ENTITY FACTORY DESTINATION ORDER ... Reliable Alarm/Events](https://reader030.vdocuments.us/reader030/viewer/2022032711/5afe79c47f8b9a994d8f0713/html5/thumbnails/19.jpg)
Lua Workshop 2016 Gianpiero Napoli - RTI
Classical DDS Workflow
IDL/XML
struct Position2D {long id; //@keydouble x;double y;
};Code
Generation
struct Temp {long id;
//@keydouble
value;};
struct Temp {long id;
//@keydouble
value;};
#include <...>
define Position2D;
Pos2DWriter::writePos2DReader::read
C/C++/Java/C#
<xml QoS>
QoS Settings
Type Definition
Code ready to be built in +50 architectures: Linux, Windows, VxWorks, Integrity….This process can be simplified even more: RTI Prototyper/Lua
![Page 20: and DDS Lua Workshop Peer to Peer publish/subscribe using ... · Peer to Peer publish/subscribe using Lua and DDS ... ENTITY FACTORY DESTINATION ORDER ... Reliable Alarm/Events](https://reader030.vdocuments.us/reader030/viewer/2022032711/5afe79c47f8b9a994d8f0713/html5/thumbnails/20.jpg)
Lua Workshop 2016 Gianpiero Napoli - RTI
Lua Connector Workflow
Lua Interpreter
<xml QoS><types>
<scenario description>
Lua script
![Page 21: and DDS Lua Workshop Peer to Peer publish/subscribe using ... · Peer to Peer publish/subscribe using Lua and DDS ... ENTITY FACTORY DESTINATION ORDER ... Reliable Alarm/Events](https://reader030.vdocuments.us/reader030/viewer/2022032711/5afe79c47f8b9a994d8f0713/html5/thumbnails/21.jpg)
Lua Workshop 2016 Gianpiero Napoli - RTI
Input Data Port(DataReader+)Output
Data Port (DataWriter+)
Lua Connector Input & Output ports
Connector (DomainParticipant+)
output()
write() / dispose() / unregister()clear_members()
instance
input()
wait() / on()
read() / take()
samples[]
config.xml
User Defined
Structure
XML Config
![Page 22: and DDS Lua Workshop Peer to Peer publish/subscribe using ... · Peer to Peer publish/subscribe using Lua and DDS ... ENTITY FACTORY DESTINATION ORDER ... Reliable Alarm/Events](https://reader030.vdocuments.us/reader030/viewer/2022032711/5afe79c47f8b9a994d8f0713/html5/thumbnails/22.jpg)
Lua Workshop 2016 Gianpiero Napoli - RTI
Lua Connector - Why?
● Scripting!● Runs on all the (75+) architectures we
support● Simplifies API for Data-Centric
Publish/Subscribe○ Reduce boilerplate code○ Easy to implement tests and demo
![Page 23: and DDS Lua Workshop Peer to Peer publish/subscribe using ... · Peer to Peer publish/subscribe using Lua and DDS ... ENTITY FACTORY DESTINATION ORDER ... Reliable Alarm/Events](https://reader030.vdocuments.us/reader030/viewer/2022032711/5afe79c47f8b9a994d8f0713/html5/thumbnails/23.jpg)
Lua Workshop 2016 Gianpiero Napoli - RTI
Lua & DDS: two ‘flavors’
● “Embedded’ in RTI DDS Prototyper○ Provides the main loop○ Execute the script
■ On timer■ On data available■ On start■ On stop
● ‘Extending’ as a stand alone○ In a Lua interpreter
![Page 24: and DDS Lua Workshop Peer to Peer publish/subscribe using ... · Peer to Peer publish/subscribe using Lua and DDS ... ENTITY FACTORY DESTINATION ORDER ... Reliable Alarm/Events](https://reader030.vdocuments.us/reader030/viewer/2022032711/5afe79c47f8b9a994d8f0713/html5/thumbnails/24.jpg)
Lua Workshop 2016 Gianpiero Napoli - RTI
Anatomy of a Publisher in Lua Connector
local rti = require('rti_dds_connector')
1. local c0 = rti:new_connector("MyParticipantLibrary::Zero","./Simple.xml");2. local writer = connector.WRITER['MyPublisher::MyWriter']3. writer.instance["message"] = "Hello I am Paul!"4. writer:write()
1. Create a connector 2. Get the datawriter3. Set the instance values4. Write the sample
![Page 25: and DDS Lua Workshop Peer to Peer publish/subscribe using ... · Peer to Peer publish/subscribe using Lua and DDS ... ENTITY FACTORY DESTINATION ORDER ... Reliable Alarm/Events](https://reader030.vdocuments.us/reader030/viewer/2022032711/5afe79c47f8b9a994d8f0713/html5/thumbnails/25.jpg)
Lua Workshop 2016 Gianpiero Napoli - RTI
Anatomy of a Subscriber in LuaConnector
local rti = require('rti_dds_connector')
1. local c1 = rti:new_connector("MyParticipantLibrary::One","./Simple.xml")2. local reader = connector.READER['MySubscriber::MyReader']3. reader:take()4. print(reader.samples[1].message)
1. Create a connector 2. Get the datareader3. Take the sample(s)4. Print a field
![Page 26: and DDS Lua Workshop Peer to Peer publish/subscribe using ... · Peer to Peer publish/subscribe using Lua and DDS ... ENTITY FACTORY DESTINATION ORDER ... Reliable Alarm/Events](https://reader030.vdocuments.us/reader030/viewer/2022032711/5afe79c47f8b9a994d8f0713/html5/thumbnails/26.jpg)
Hands On
![Page 27: and DDS Lua Workshop Peer to Peer publish/subscribe using ... · Peer to Peer publish/subscribe using Lua and DDS ... ENTITY FACTORY DESTINATION ORDER ... Reliable Alarm/Events](https://reader030.vdocuments.us/reader030/viewer/2022032711/5afe79c47f8b9a994d8f0713/html5/thumbnails/27.jpg)
Lua Workshop 2016 Gianpiero Napoli - RTI
Example: Basic pub/sub
● Objetive○ In this example we show how to publish/subscribe to
data●
![Page 28: and DDS Lua Workshop Peer to Peer publish/subscribe using ... · Peer to Peer publish/subscribe using Lua and DDS ... ENTITY FACTORY DESTINATION ORDER ... Reliable Alarm/Events](https://reader030.vdocuments.us/reader030/viewer/2022032711/5afe79c47f8b9a994d8f0713/html5/thumbnails/28.jpg)
Lua Workshop 2016 Gianpiero Napoli - RTI
Example: History and Live changes
● Objetive○ In this example we show how the history qos works
![Page 29: and DDS Lua Workshop Peer to Peer publish/subscribe using ... · Peer to Peer publish/subscribe using Lua and DDS ... ENTITY FACTORY DESTINATION ORDER ... Reliable Alarm/Events](https://reader030.vdocuments.us/reader030/viewer/2022032711/5afe79c47f8b9a994d8f0713/html5/thumbnails/29.jpg)
Lua Workshop 2016 Gianpiero Napoli - RTI
Example: Durability
● Objetive○ Learn how to provide recent history to late joiners
● Description○ A console application will receive the recent history
published before it was started
![Page 30: and DDS Lua Workshop Peer to Peer publish/subscribe using ... · Peer to Peer publish/subscribe using Lua and DDS ... ENTITY FACTORY DESTINATION ORDER ... Reliable Alarm/Events](https://reader030.vdocuments.us/reader030/viewer/2022032711/5afe79c47f8b9a994d8f0713/html5/thumbnails/30.jpg)
Lua Workshop 2016 Gianpiero Napoli - RTI
Example: Filtering
● Objetive○ Learn how to filter data per subscriber
● Description○ The console application will only receive the data
matching a certain criteria
![Page 31: and DDS Lua Workshop Peer to Peer publish/subscribe using ... · Peer to Peer publish/subscribe using Lua and DDS ... ENTITY FACTORY DESTINATION ORDER ... Reliable Alarm/Events](https://reader030.vdocuments.us/reader030/viewer/2022032711/5afe79c47f8b9a994d8f0713/html5/thumbnails/31.jpg)
Thanks for your attention!Any questions?
[email protected] / @magopieriWe are hiring!!! Visit http://www.rti.com/company/careers.html or talk to me
References:● More info on RTI Prototyper With Lua here:
https://community.rti.com/downloads/experimental/rti-prototyper-with-lua● For any question contact me or write on our forum:
https://community.rti.com/forums/technical-questions