Add FastDDS and eCAL support
Added works
- eCAL support
- FastDDS upgrade to 2.3.x
- eCAL and FastDDS test report
version control policy
I'll try my best to make the branch of repo to rebase with the latest commit of the official one ant take good care of the conflicts.
Middleware plugins
Native plugins
Continental eCAL with raw rosidl
- eCAL 5.10.x
- CMake build flag:
-DPERFORMANCE_TEST_ECAL_RAW_ENABLED=ON - Communication plugin:
-c ECAL_RAW - The eCAL plugin is not a complete DDS implementation.
- Some DDS-specific options (such as domain ID) do not apply.
- Zero copy transport (
--zero-copy): yes - Default transports:
INTRA IPC on same machine Distributed system INTRA SHM Not supported by performance_test
ps:
-
eCAL::CPublisheris used. - rosidl datatype is used.
source /opt/ros/galactic/setup.bash
cd ~/perf_test_ws
colcon build --cmake-args -DPERFORMANCE_TEST_ECAL_RAW_ENABLED=ON
source ./install/setup.bash
mkdir experiment
# t1
./install/performance_test/lib/performance_test/perf_test -c ECAL --msg Array1k -p 0 -s 1
# t2
./install/performance_test/lib/performance_test/perf_test -c ECAL --msg Array1k -p 1 -s 0
Continental eCAL with protobuf
- eCAL 5.10.x
- CMake build flag:
-DPERFORMANCE_TEST_ECAL_PROTO_ENABLED=ON - Communication plugin:
-c ECAL_PROTO - The eCAL plugin is not a complete DDS implementation.
- Some DDS-specific options (such as domain ID) do not apply.
- Zero copy transport (
--zero-copy): no- ser/deserialization cannot be avoided with protobuf
- Default transports:
INTRA IPC on same machine Distributed system INTRA SHM UDP
ps:
-
eCAL::protobuf::CPublisheris used. - proto2 protocol is used.
- proto files are auto-generated by message-schemas
source /opt/ros/galactic/setup.bash
cd ~/perf_test_ws
colcon build --cmake-args -DPERFORMANCE_TEST_ECAL_PROTO_ENABLED=ON
source ./install/setup.bash
mkdir experiment
# t1
./install/performance_test/lib/performance_test/perf_test -c ECAL_PROTO --msg Array1k -p 0 -s 1
# t2
./install/performance_test/lib/performance_test/perf_test -c ECAL_PROTO --msg Array1k -p 1 -s 0
eProsima FastRTPS
- FastDDS 2.3.x
- CMake build flag:
-DPERFORMANCE_TEST_FASTRTPS_ENABLED=ON - Communication plugin:
-c FastRTPS - Zero copy transport (
--zero-copy): no- zero copy with datasharing is only provided by FastDDS-API
- Docker file: Dockerfile.FastDDS
- Default transports:
INTRA IPC on same machine Distributed system INTRA SHM UDP
eProsima FastDDS
FastDDS API is uesd in this plugin, according to examples here
- FastDDS 2.3.x
- CMake build flag:
-DPERFORMANCE_TEST_FASTDDS_ENABLED=ON - Communication plugin:
-c FastDDS - Zero copy transport (
--zero-copy): yes - Docker file: Dockerfile.FastDDS
- Default transports:
INTRA IPC on same machine Distributed system INTRA SHM UDP
ps:
- zero-copy is only available for non-bounded msg definitions.
source /opt/ros/galactic/setup.bash
cd ~/perf_test_ws
colcon build --cmake-args -DPERFORMANCE_TEST_FASTDDS_ENABLED=ON
source ./install/setup.bash
mkdir experiment
# t1
./install/performance_test/lib/performance_test/perf_test -c FastDDS --msg Struct16 -p 0 -s 1
# t2
./install/performance_test/lib/performance_test/perf_test -c FastDDS --msg Struct16 -p 1 -s 0