In traditional DDS, the format of the exchanged data is defined using IDL, and DataWriter and DataReader are automatically generated from the IDL.
However, in UmberDDS, the format of the exchanged data is defined as a struct that implements serde::{Serialize, Deserialize}
, and the DataWriter and DataReader use the generic types DataWriter<D: Serialize>
and DataReader<D: Deserialize>
.
If you want to use refarence/dds-analysis-docker to perform communication tests with other implementations or analyze this implementation in a Docker environment, or if you want to test interoperability with RustDDS before contributing using test, several dependencies registered as Git submodules are required.
When cloning this repository, please use the --recursive option to clone the dependencies along with it.
git clone --recursive https://github.com/tier4/umber_dds.git
UmberDDS has not yet implemented proper logging, so all debug information is output directly to stderr
. Therefore, if you do not need debug information, it is recommended to redirect stderr
to /dev/null
.
# build examples
cargo build --examples
You can choose to start either a Publisher or a Subscriber using -m
.
To start the Publisher, use -m p
or -m P
. To start the Subscriber, use -m s
or -m S
.
You can specify the reliability of the entity with -r
.
To specify Reliable, use -r r
or -r R
. To specify BestEffort, use -r b
or -r B
.
The default is BestEffort.
reliable publisher
./target/debug/examples/shapes_demo -m p -r b 2> /dev/null
besteffort subscriber
./target/debug/examples/shapes_demo -m s 2> /dev/null
- FastDDS (%1),(%2)
- RustDDS (%1)
- CycloneDDS
(%1) These implementations use IPC (Inter-Process Communication) instead of UDP for communication when Participants are on the same host. Since UmberDDS does not implement IPC, it cannot communicate with Participants of these implementations on the same host. If you need to communicate with these implementations on the same host, run UmberDDS in an isolated network namespace using tools like Docker.
(%2) It has been confirmed that example/shapes_demo.rs can
communicate with FastDDS ShapesDemo. However, communication between UmberDDS and FastDDS using other programs has not been successful.
- RTPS Discovery Module
- RTPS MessageReveiver Module
- RTPS Behavior Module
- Best-Effort StatefulWriter Behavior
- Reliable StatefulWriter Behavior
- Best-Effort StatelessReader Behavior
- Reliable StatelessReader Behavior
- RTPS Writer Liveliness Protocol
- Logging
- Topics kinds: with_key and no_key
- IPC (Inter-Process Communication)
Unsuporting QoS can be set, but it dosn't effect behavior of UmberDDS.
- Reliability
- kind (Reliability, BestEffort)
- max_bloking_time
- Durability
- Deadline
- History
- Lifespan
- Liveliness
- DurabilityService
- Presentaion
- LatencyBudget
- Ownership
- OwnershipStrength
- TimeBasedFilter
- DestinationOrder
- ResourceLimits
- Partition
- UserData
- TopicData
- GrupData
- WriterDataLifecycle
- ReaderDataLifecycle
- TransportPrioriry
- EntityFactory