Fast-DDS

Description

eprosima Fast DDS* (formerly Fast RTPS) is a C++ implementation of the DDS (Data Distribution Service) standard of the OMG (Object Management Group).

Software Architecture

Software architecture description

https://github.com/eProsima/Fast-DDS.git

input:

./
├── cmake
│   ├── common
│   │   ├── check_configuration.cmake
│   │   ├── eprosima_libraries.cmake
│   │   ├── GitUtils.cmake
│   │   ├── gtest.cmake
│   │   └── Utils.cmake
│   ├── dev
│   │   ├── generate_msvc_libraries.cmake
│   │   └── set_sources.cmake
│   ├── modules
│   │   ├── CheckForPthreads.c
│   │   ├── CheckLibatomic.cmake
│   │   ├── Findandroid-ifaddrs.cmake
│   │   ├── FindAsio.cmake
│   │   ├── FindThirdpartyBoost.cmake
│   │   ├── FindThreads.cmake
│   │   └── FindTinyXML2.cmake
│   └── packaging
│       ├── Config.cmake.in
│       ├── eProsimaPackaging.cmake
│       ├── linux
│       └── windows
├── CMakeLists.txt
├── colcon.pkg
├── configure.ac
├── CONTRIBUTING.md
├── CTestJenkins.cmake
├── doc
│   ├── design
│   │   ├── intra-process.md
│   │   └── shared-memory-transport
│   ├── pdf
│   │   ├── FASTRTPSGEN - User Manual.odt
│   │   ├── Fast RTPS - Installation Manual.odt
│   │   ├── Fast RTPS - Latency Test.odt
│   │   ├── Fast RTPS - Throughput Test.odt
│   │   └── Fast RTPS - User Manual.odt
│   ├── proposals
│   │   └── shared-memory-transport
│   └── README.html.in
├── doxyfile.in
├── examples
│   ├── C++
│   │   ├── Benchmark
│   │   ├── ClientServerTest
│   │   ├── Configurability
│   │   ├── DDS
│   │   ├── DeadlineQoSExample
│   │   ├── DisablePositiveACKs
│   │   ├── DynamicHelloWorldExample
│   │   ├── Filtering
│   │   ├── FlowControlExample
│   │   ├── HelloWorldExample
│   │   ├── HelloWorldExampleSharedMem
│   │   ├── HelloWorldExampleTCP
│   │   ├── HistoryKind
│   │   ├── Keys
│   │   ├── LateJoiners
│   │   ├── LifespanQoSExample
│   │   ├── LivelinessQoS
│   │   ├── OwnershipStrengthQoSExample
│   │   ├── RTPSTest_as_socket
│   │   ├── RTPSTest_persistent
│   │   ├── RTPSTest_registered
│   │   ├── SampleConfig_Controller
│   │   ├── SampleConfig_Events
│   │   ├── SampleConfig_Multimedia
│   │   ├── SecureHelloWorldExample
│   │   ├── StaticHelloWorldExample
│   │   ├── UserDefinedTransportExample
│   │   └── XMLProfiles
│   └── CMakeLists.txt
├── fastrtps.repos
├── include
│   ├── dds
│   │   ├── core
│   │   ├── domain
│   │   ├── pub
│   │   ├── sub
│   │   └── topic
│   ├── fastdds
│   │   ├── dds
│   │   └── rtps
│   ├── fastrtps
│   │   ├── attributes
│   │   ├── common
│   │   ├── config
│   │   ├── config.h.in
│   │   ├── Domain.h
│   │   ├── eProsima_auto_link.h
│   │   ├── fastrtps_all.h
│   │   ├── fastrtps_dll.h
│   │   ├── fastrtps_fwd.h
│   │   ├── log
│   │   ├── participant
│   │   ├── publisher
│   │   ├── qos
│   │   ├── rtps
│   │   ├── subscriber
│   │   ├── TopicDataType.h
│   │   ├── transport
│   │   ├── types
│   │   ├── utils
│   │   └── xmlparser
│   └── Makefile.am.in
├── LICENSE
├── m4
│   ├── ax_check_openssl.m4
│   ├── ax_cxx_compile_stdcxx_0x.m4
│   └── ax_cxx_compile_stdcxx_11.m4
├── Makefile.am.in
├── package.xml
├── PLATFORM_SUPPORT.md
├── Public_API_foonathan_memory.md
├── Quality_Declaration_foonathan_memory.md
├── QUALITY.md
├── README.md
├── resources
│   └── xsd
│       ├── fastRTPS_profiles.xsd
│       ├── governance.xsd
│       └── permissions.xsd
├── roadmap.md
├── src
│   └── cpp
│       ├── CMakeLists.txt
│       ├── dds
│       ├── dynamic-types
│       ├── fastdds
│       ├── fastrtps_deprecated
│       ├── fastrtps.rc
│       ├── Makefile.am.in
│       ├── rtps
│       ├── security
│       └── utils
├── test
│   ├── blackbox
│   │   ├── api
│   │   ├── CMakeLists.txt
│   │   ├── common
│   │   ├── discovery_participant_flags.xml
│   │   ├── persistence.xml
│   │   ├── PubSubReader.xml.in
│   │   ├── PubSubWriter.xml.in
│   │   ├── types
│   │   ├── utils
│   │   ├── XFAIL_DDS_PIM.list
│   │   └── XFAIL_DDS_PIM_SECURITY.list
│   ├── certs
│   │   ├── certs
│   │   ├── crlnumber
│   │   ├── expiredpubcert.pem
│   │   ├── expiredpubcert.txt
│   │   ├── expiredpub.cnf
│   │   ├── expiredpubkey.pem
│   │   ├── expiredpubreq.pem
│   │   ├── governance_disable_discovery_disable_access_encrypt.smime
│   │   ├── governance_disable_discovery_disable_access_encrypt.xml
│   │   ├── governance_disable_discovery_disable_access_none.smime
│   │   ├── governance_disable_discovery_disable_access_none.xml
│   │   ├── governance_disable_discovery_enable_access_encrypt.smime
│   │   ├── governance_disable_discovery_enable_access_encrypt.xml
│   │   ├── governance_disable_discovery_enable_access_none.smime
│   │   ├── governance_disable_discovery_enable_access_none.xml
│   │   ├── governance_enable_discovery_disable_access_encrypt.smime
│   │   ├── governance_enable_discovery_disable_access_encrypt.xml
│   │   ├── governance_enable_discovery_disable_access_none.smime
│   │   ├── governance_enable_discovery_disable_access_none.xml
│   │   ├── governance_enable_discovery_enable_access_encrypt.smime
│   │   ├── governance_enable_discovery_enable_access_encrypt.xml
│   │   ├── governance_enable_discovery_enable_access_none.smime
│   │   ├── governance_enable_discovery_enable_access_none.xml
│   │   ├── governance_helloworld_all_enable.smime
│   │   ├── governance_helloworld_all_enable.xml
│   │   ├── governance_rule_order_test_inverse.smime
│   │   ├── governance_rule_order_test_inverse.xml
│   │   ├── governance_rule_order_test.smime
│   │   ├── governance_rule_order_test.xml
│   │   ├── governance.txt
│   │   ├── index_sec.txt
│   │   ├── index.txt
│   │   ├── index.txt.attr
│   │   ├── joinedcacertcrl.pem
│   │   ├── maincacert.pem
│   │   ├── maincacert.txt
│   │   ├── maincaconf.cnf
│   │   ├── maincakey.pem
│   │   ├── maincrl.pem
│   │   ├── mainpubcert.pem
│   │   ├── mainpubcert.txt
│   │   ├── mainpub.cnf
│   │   ├── mainpubkey.pem
│   │   ├── mainpubreq.pem
│   │   ├── mainsubcert.pem
│   │   ├── mainsubcert.txt
│   │   ├── mainsub.cnf
│   │   ├── mainsubkey.pem
│   │   ├── mainsubreq.pem
│   │   ├── permissions_access_control_tests.smime
│   │   ├── permissions_access_control_tests.xml
│   │   ├── permissions_helloworld_partitions.smime
│   │   ├── permissions_helloworld_partitions.xml
│   │   ├── permissions_helloworld.smime
│   │   ├── permissions_helloworld.xml
│   │   ├── permissions.smime
│   │   ├── permissions.xml
│   │   ├── pwdpubcert.pem
│   │   ├── pwdpubcert.txt
│   │   ├── pwdpub.cnf
│   │   ├── pwdpubkey.pem
│   │   ├── pwdpubreq.pem
│   │   ├── revokedpubcert.pem
│   │   ├── revokedpubcert.txt
│   │   ├── revokedpub.cnf
│   │   ├── revokedpubkey.pem
│   │   ├── revokedpubreq.pem
│   │   ├── seccacert.pem
│   │   ├── seccacert.txt
│   │   ├── seccaconf.cnf
│   │   ├── seccakey.pem
│   │   ├── serial
│   │   └── serial_sec
│   ├── CMakeLists.txt
│   ├── communication
│   │   ├── automatic_liveliness_assertion.py
│   │   ├── CMakeLists.txt
│   │   ├── liveliness_assertion.120.xml
│   │   ├── liveliness_assertion.360.xml
│   │   ├── liveliness_assertion.py
│   │   ├── liveliness_assertion.xml
│   │   ├── multiple_subs_secure_crypto_communication.py
│   │   ├── Publisher.cpp
│   │   ├── Publisher.hpp
│   │   ├── PublisherMain.cpp
│   │   ├── PubSubMain.cpp
│   │   ├── secure_msg_crypto_besteffort_pub.xml
│   │   ├── secure_msg_crypto_besteffort_sub.xml
│   │   ├── secure_msg_submsg_crypto_besteffort_pub.xml
│   │   ├── secure_msg_submsg_crypto_besteffort_sub.xml
│   │   ├── secure_submsg_crypto_besteffort_pub.xml
│   │   ├── secure_submsg_crypto_besteffort_sub.xml
│   │   ├── shm_communication_subscriber_dies_while_processing_message.py
│   │   ├── shm_communication_subscriber_dies_while_processing_message.xml
│   │   ├── simple_besteffort.xml
│   │   ├── simple_communication.py
│   │   ├── simple_mix_communication.py
│   │   ├── simple_reliable_besteffort.xml
│   │   ├── simple_reliable.xml
│   │   ├── simple_secure_besteffort_pub.xml
│   │   ├── simple_secure_besteffort_sub.xml
│   │   ├── Subscriber.cpp
│   │   ├── Subscriber.hpp
│   │   ├── SubscriberMain.cpp
│   │   └── two_publishers_communication.py
│   ├── dds
│   │   └── communication
│   ├── mock
│   │   ├── dds
│   │   └── rtps
│   ├── performance
│   │   ├── CMakeLists.txt
│   │   ├── latency
│   │   ├── optionparser.h
│   │   ├── throughput
│   │   └── video
│   ├── profiling
│   │   ├── allocations
│   │   ├── CMakeLists.txt
│   │   ├── cycles_tests.py
│   │   ├── main_MemoryTest.cpp
│   │   ├── memory_analysis.py
│   │   ├── MemoryTestPublisher.cpp
│   │   ├── MemoryTestPublisher.h
│   │   ├── memory_tests.py
│   │   ├── MemoryTestSubscriber.cpp
│   │   ├── MemoryTestSubscriber.h
│   │   ├── MemoryTestTypes.cpp
│   │   ├── MemoryTestTypes.h
│   │   ├── optionparser.h
│   │   └── RTPSProfilingCommon.h
│   ├── realtime
│   │   ├── CMakeLists.txt
│   │   ├── mutex_testing_tool
│   │   └── UserThreadNonBlockedTest.cpp
│   ├── staticdiscovery.txt
│   ├── system
│   │   └── tools
│   ├── unittest
│   │   ├── CMakeLists.txt
│   │   ├── common
│   │   ├── dds
│   │   ├── dynamic_types
│   │   ├── logging
│   │   ├── rtps
│   │   ├── security
│   │   ├── transport
│   │   ├── utils
│   │   ├── xmlparser
│   │   └── xtypes
│   └── xtypes
│       ├── CMakeLists.txt
│       ├── idl
│       ├── TestPublisher.cpp
│       ├── TestPublisher.h
│       ├── TestSubscriber.cpp
│       ├── TestSubscriber.h
│       └── XTypesTests.cpp
├── thirdparty
│   ├── android-ifaddrs
│   ├── asio
│   ├── boost
│   │   ├── include
│   │   ├── LICENSE.TXT
│   │   └── test
│   ├── fastcdr
│   ├── nlohmann-json
│   │   └── json.hpp
│   └── tinyxml2
├── tools
│   ├── CMakeLists.txt
│   ├── fastdds
│   │   ├── CMakeLists.txt
│   │   ├── discovery
│   │   ├── fastdds
│   │   ├── fastdds.bat
│   │   ├── fastdds.py
│   │   ├── ros-discovery
│   │   ├── ros-discovery.bat
│   │   └── shm
│   └── fds
│       ├── CMakeLists.txt
│       ├── fast-discovery-server.bat.in
│       ├── optionparser.h
│       ├── README.txt
│       ├── server.cpp
│       └── server.h
├── UPGRADING.md
├── utils
│   ├── doxygen
│   │   ├── complete_doxyfile_api
│   │   ├── examples
│   │   └── pages
│   ├── futureCode
│   │   ├── ReceivedChanges.cpp
│   │   ├── ReceivedChanges.h
│   │   ├── SkipList.cpp
│   │   └── SkipList.h
│   ├── images
│   │   ├── icon
│   │   └── logo
│   └── pcTests
│       └── Readme.md
├── valgrind.supp
├── VERSIONING.md
└── versions.md

Installation

  1. Download RPM

aarch64:

wget https://117.78.1.88/build/home:Chenjy3_22.03/openEuler_22.03_LTS_standard_aarch64/aarch64/Fast-DDS/ros2-foxy-ros2-Fast-DDS-2.1.2-1.oe2203.aarch64.rpm

x86_64:

wget https://117.78.1.88/build/home:Chenjy3_22.03/openEuler_22.03_LTS_standard_x86_64/x86_64/Fast-DDS/ros2-foxy-ros2-Fast-DDS-2.1.2-1.oe2203.x86_64.rpm
  1. Install RPM

aarch64:

sudo rpm -ivh --nodeps --force ros2-foxy-ros2-Fast-DDS-2.1.2-1.oe2203.aarch64.rpm

x86_64:

sudo rpm -ivh --nodeps --force ros2-foxy-ros2-Fast-DDS-2.1.2-1.oe2203.x86_64.rpm

Instructions

Dependence installation:

sh /opt/ros/foxy/install_dependence.sh

Exit the following output file under the /opt/ros/foxy/ directory,Prove that the software installation is successful.

output:

./
├── bin
│   ├── fastdds
│   ├── fast-discovery-server -> fast-discovery-server-1.0.0
│   ├── fast-discovery-server-1.0.0
│   ├── nodesize_dbg
│   └── ros-discovery
├── COLCON_IGNORE
├── include
│   ├── ament_index_cpp
│   ├── fastcdr
│   ├── fastdds
│   ├── fastrtps
│   └── foonathan_memory
├── lib
│   ├── cmake
│   ├── libament_index_cpp.so
│   ├── libfastcdr.so -> libfastcdr.so.1
│   ├── libfastcdr.so.1 -> libfastcdr.so.1.0.13
│   ├── libfastcdr.so.1.0.13
│   ├── libfastrtps.so -> libfastrtps.so.2
│   ├── libfastrtps.so.2 -> libfastrtps.so.2.1.2
│   ├── libfastrtps.so.2.1.2
│   └── python3.9
├── lib64
│   ├── foonathan_memory
│   └── libfoonathan_memory-0.7.1.a
├── local_setup.bash
├── local_setup.ps1
├── local_setup.sh
├── _local_setup_util_ps1.py
├── _local_setup_util_sh.py
├── local_setup.zsh
├── setup.bash
├── setup.ps1
├── setup.sh
├── setup.zsh
├── share
│   ├── colcon-core
│   ├── fastcdr
│   ├── fastrtps
│   ├── foonathan_memory
│   ├── foonathan_memory_vendor
│   ├── gmock_vendor
│   └── gtest_vendor
├── src
│   ├── gmock_vendor
│   └── gtest_vendor
└── tools
    └── fastdds

Contribution

  1. Fork the repository
  2. Create Feat_xxx branch
  3. Commit your code
  4. Create Pull Request

Gitee Feature

  1. You can use Readme_XXX.md to support different languages, such as Readme_en.md, Readme_zh.md
  2. Gitee blog blog.gitee.com
  3. Explore open source project https://gitee.com/explore
  4. The most valuable open source project GVP
  5. The manual of Gitee https://gitee.com/help
  6. The most popular members https://gitee.com/gitee-stars/