I am interfacing `ROS2` with native `RTI DDS Connector` for python where I am publishing messages in RTI connector and subscribing in ROS2.
I am trying to publish a ConnextStaticSerializedData type message, but encountered an issue where transport info do not match:
PRESParticipant_checkTransportInfoMatching:Warning: the message_size_max, 65536, for udpv6, of the remote participant (rviz2), does not match the message_size_max, 65487, of the local participant (MyPubParticipant). Will lose RTPS packets with size > 65487
NDDS_Transport_UDP_create_sendresource_srEA:send ping failed
PRESParticipant_checkTransportInfoMatching:Warning: the message_size_max, 65536, for udpv6, of the remote participant (robot_state_publisher), does not match the message_size_max, 65487, of the local participant (MyPubParticipant). Will lose RTPS packets with size > 65487
Here is the Qos profile used:
<dds xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://community.rti.com/schema/5.3.1/rti_dds_profiles.xsd"
version="5.3.1"> <!-- Qos Library -->
<qos_library name="QosLibrary">
<qos_profile name="DefaultProfile"
is_default_qos="true">
<datawriter_qos>
<property>
<value>
<element>
<name>dds.data_writer.history.memory_manager.fast_pool.pool_buffer_max_size</name>
<value>0</value>
</element>
</value>
</property>
<history>
<kind>KEEP_LAST_HISTORY_QOS</kind>
<depth>1000</depth>
</history>
<reliability>
<kind>RELIABLE_RELIABILITY_QOS</kind>
</reliability>
<durability>
<kind>VOLATILE_DURABILITY_QOS</kind>
</durability>
</datawriter_qos>
<participant_qos>
<transport_builtin>
<mask>UDPV6 |UDPV4 | SHMEM</mask>
</transport_builtin>
<property>
<value>
<element>
<name>dds.transport.UDPv6.builtin.parent.message_size_max</name>
<value>65536</value>
</element>
</value>
</property>
</participant_qos>
</qos_profile>
</qos_library> <!-- types -->
<types>
<struct name= "ConnextStaticSerializedData">
<member name="key_hash" type="octet" arrayDimensions="16" key="true"/>
<member name="serialized_key" type="octet" sequenceMaxLength="2147483647"/>
<member name="serialized_data" type="octet" sequenceMaxLength="2147483647"/>
</struct>
</types> <!-- Domain Library -->
<domain_library name="MyDomainLibrary">
<domain name="MyDomain" domain_id="30">
<register_type name="geometry_msgs::msg::dds_::Twist_" type_ref="ConnextStaticSerializedData" />
<topic name="rt/cmd_vel" register_type_ref="geometry_msgs::msg::dds_::Twist_"/>
</domain>
</domain_library> <!-- Participant library -->
<domain_participant_library name="MyParticipantLibrary">
<domain_participant name="MyPubParticipant" domain_ref="MyDomainLibrary::MyDomain">
<publisher name="MyPublisher">
<data_writer name="MySquareWriter" topic_ref="rt/cmd_vel" />
</publisher>
</domain_participant> <!-- We use separate participants because we run the writer and the reader
on different applications, and wouldn't want to create the reader
in writer.py, or the writer in reader.py -->
<domain_participant name="MySubParticipant" domain_ref="MyDomainLibrary::MyDomain">
<subscriber name="MySubscriber">
<data_reader name="MySquareReader" topic_ref="rt/cmd_vel" />
</subscriber>
</domain_participant>
</domain_participant_library>
</dds>
See https://community.rti.com/comment/5535#comment-5535 for this issue.