Closed
Description
Interoperability with RTI Connext DDS is broken, beginning with version 2.0.2.
The Reliability and Durability of QoS incorrectly detected for remote writers.
As a result, some data is not received.
The remote system runs under RTI Connext DDS. There were no problems with version 2.0.1.
Backtrace showed that the incorrect behavior was introduced by the following commit: #1384
##Expected Behavior
------ Fast-DDS Version: 2.0.1
["172.16.1.26": (uuid: "fe39129", interface: "en0", isWiFi: false)] ["en0": "172.16.1.2", "lo0": "127.0.0.1"]
Local address en0:172.16.1.2
Discovered Participant: geoserve 172.16.1.26:7417
Discovered Participant: trident-control 172.16.1.26:7415
Discovered Participant: trident-update 172.16.1.26:7411
Discovered Participant: trident-core 172.16.1.26:7413
Discovered Participant: trident-record 172.16.1.26:7421
Discovered Participant: trident-remote-control 172.16.1.26:7419
Writer: rov_cams - Reliable
Writer: rov_cam_fwd - Reliable
Writer: rov_cam_fwd_H264_0_ctrl_desc - Reliable
Writer: rov_video_overlay_mode_current - Reliable
Writer: rov_cam_fwd_H264_0_ctrl_current - Reliable
Writer: rov_cam_fwd_H264_1_ctrl_desc - Reliable
Writer: rov_cam_fwd_H264_1_ctrl_current - Reliable
Writer: rov_cam_fwd_H264_0_video - Reliable
Writer: rov_cam_fwd_H264_1_video - Reliable
Writer: rov_firmware_command_rep - Reliable
Writer: rov_firmware_service_status - Reliable
Writer: rov_firmware_status - Reliable
Writer: rov_controller_state_current - Reliable
Writer: rov_safety - Reliable
Writer: pid_setpoint_current - Reliable
Writer: pid_state - Reliable
Writer: trident_command_target - Reliable
Writer: trident_esc_config_target - Reliable
Writer: rov_controller_state_current - Reliable
Writer: rov_controller_state_current - Reliable
Writer: rov_controller_state_current - Reliable
Writer: rov_controller_state_current - Reliable
Writer: rov_controller_state_current - Reliable
Writer: rov_controller_state_current - Reliable
Writer: rov_beacon - Reliable
Writer: rov_ping_reply - Reliable
Writer: rov_pressure_internal - Reliable
Writer: trident_esc_config_request - Reliable
Writer: rov_temp_internal - Reliable
Writer: rov_depth - Reliable
Writer: rov_temp_water - Reliable
Writer: rov_attitude - Reliable
Writer: rov_attitude_euler - Reliable
Writer: rov_imu_calibration - Reliable
Writer: rov_light_power_current - Reliable
Writer: rov_fuelgauge_status - Reliable
Writer: rov_fuelgauge_health - Reliable
Writer: rov_mcu_status - Reliable
Writer: rov_subsystem_status - Reliable
Writer: rov_mcu_watchdog_status - Reliable
Writer: rov_mcu_comm_stats - Reliable
Writer: rov_mcu_i2c_stats - Reliable
Writer: rov_esc_feedback - Reliable
Writer: rov_esc_fault_alert - Reliable
Writer: rov_esc_fault_warning_info - Reliable
Writer: rov_recording_stats - Reliable
Writer: rov_vid_session_rep - Reliable
Writer: rov_vid_session_current - Reliable
Writer: rov_state_signal - Best_effort
Writer: asv_command_sequence - Reliable
Writer: rov_mode_signal - Best_effort
Writer: rov_vid_session_req - Reliable
Writer: rov_vactest_blink_command - Reliable
Writer: rov_light_power_requested - Reliable
Writer: rov_motor_command_debug - Reliable
Writer: rov_control_target - Reliable
Message topic `rov_cam_fwd_H264_0_ctrl_current`
RovControlDescriptor(id: 134217729, idString: "brightness", type: 1, name: "Brightness", unit: "n/a", minimum: -255, maximum: 255, step: 1, defaultValueNumeric: 0, defaultValueString: "", flags: 32, menuOptions: [])
RovControlDescriptor(id: 134217730, idString: "contrast", type: 5, name: "Contrast", unit: "n/a", minimum: 0, maximum: 200, step: 1, defaultValueNumeric: 100, defaultValueString: "", flags: 32, menuOptions: [])
RovControlDescriptor(id: 134217732, idString: "hue", type: 1, name: "Hue", unit: "n/a", minimum: -18000, maximum: 18000, step: 1, defaultValueNumeric: 0, defaultValueString: "", flags: 32, menuOptions: [])
RovControlDescriptor(id: 134217733, idString: "gamma", type: 5, name: "Gamma", unit: "n/a", minimum: 0, maximum: 300, step: 1, defaultValueNumeric: 0, defaultValueString: "", flags: 32, menuOptions: [])
RovControlDescriptor(id: 134217731, idString: "saturation", type: 5, name: "Saturation", unit: "n/a", minimum: 0, maximum: 200, step: 1, defaultValueNumeric: 100, defaultValueString: "", flags: 32, menuOptions: [])
RovControlDescriptor(id: 134217736, idString: "gain", type: 5, name: "Gain", unit: "n/a", minimum: 1, maximum: 100, step: 1, defaultValueNumeric: 1, defaultValueString: "", flags: 32, menuOptions: [])
RovControlDescriptor(id: 134217735, idString: "sharpness", type: 5, name: "Sharpness", unit: "n/a", minimum: 1, maximum: 100, step: 1, defaultValueNumeric: 1, defaultValueString: "", flags: 32, menuOptions: [])
RovControlDescriptor(id: 134218028, idString: "bitrate", type: 6, name: "Bitrate", unit: "bits/s", minimum: 1000, maximum: 10000000, step: 1, defaultValueNumeric: 1500000, defaultValueString: "", flags: 32, menuOptions: [])
##Current Behavior
------ Fast-DDS Version: 2.1.0
["172.16.1.26": (uuid: "fe39129", interface: "en0", isWiFi: false)] ["lo0": "127.0.0.1", "en0": "172.16.1.2"]
Local address en0:172.16.1.2
Discovered Participant: trident-core 172.16.1.26:7413
Discovered Participant: trident-control 172.16.1.26:7415
Discovered Participant: geoserve 172.16.1.26:7417
Discovered Participant: trident-update 172.16.1.26:7411
Discovered Participant: trident-record 172.16.1.26:7421
Discovered Participant: trident-remote-control 172.16.1.26:7419
Writer: rov_controller_state_current - Best_effort
Writer: rov_safety - Best_effort
Writer: pid_setpoint_current - Best_effort
Writer: pid_state - Best_effort
Writer: trident_command_target - Best_effort
Writer: trident_esc_config_target - Best_effort
Writer: rov_controller_state_current - Best_effort
Writer: rov_controller_state_current - Best_effort
Writer: rov_controller_state_current - Best_effort
Writer: rov_controller_state_current - Best_effort
Writer: rov_controller_state_current - Best_effort
Writer: rov_controller_state_current - Best_effort
Writer: rov_beacon - Best_effort
Writer: rov_ping_reply - Best_effort
Writer: rov_pressure_internal - Best_effort
Writer: trident_esc_config_request - Best_effort
Writer: rov_temp_internal - Best_effort
Writer: rov_depth - Best_effort
Writer: rov_temp_water - Best_effort
Writer: rov_attitude - Best_effort
Writer: rov_attitude_euler - Best_effort
Writer: rov_imu_calibration - Best_effort
Writer: rov_light_power_current - Best_effort
Writer: rov_fuelgauge_status - Best_effort
Writer: rov_fuelgauge_health - Best_effort
Writer: rov_mcu_status - Best_effort
Writer: rov_subsystem_status - Best_effort
Writer: rov_mcu_watchdog_status - Best_effort
Writer: rov_mcu_comm_stats - Best_effort
Writer: rov_mcu_i2c_stats - Best_effort
Writer: rov_esc_feedback - Best_effort
Writer: rov_esc_fault_alert - Best_effort
Writer: rov_esc_fault_warning_info - Best_effort
Writer: rov_cams - Best_effort
Writer: rov_cam_fwd - Best_effort
Writer: rov_cam_fwd_H264_0_ctrl_desc - Best_effort
2020-11-24 19:48:35.779 [RTPS_EDP Warning] INCOMPATIBLE QOS (topic: rov_cam_fwd_H264_0_ctrl_desc): Remote Writer ac.10.1.1a.0.0.0.5f.0.0.0.1|80.0.42.2 is Best Effort and local reader is RELIABLE (/Users/dmitry/Developer/OpenROV-Trident/TestTridentIO/FastRTPSBridge/Fast-DDS/src/cpp/rtps/builtin/discovery/endpoint/EDP.cpp:879) -> Function valid_matching
Writer: rov_video_overlay_mode_current - Best_effort
Writer: rov_cam_fwd_H264_0_ctrl_current - Best_effort
Writer: rov_cam_fwd_H264_1_ctrl_desc - Best_effort
Writer: rov_cam_fwd_H264_1_ctrl_current - Best_effort
Writer: rov_cam_fwd_H264_0_video - Reliable
Writer: rov_cam_fwd_H264_1_video - Reliable
Writer: rov_firmware_command_rep - Best_effort
Writer: rov_firmware_service_status - Best_effort
Writer: rov_firmware_status - Best_effort
Writer: rov_recording_stats - Best_effort
Writer: rov_vid_session_rep - Best_effort
Writer: rov_vid_session_current - Best_effort
Writer: rov_state_signal - Best_effort
Writer: asv_command_sequence - Best_effort
Writer: rov_mode_signal - Best_effort
Writer: rov_vid_session_req - Best_effort
Writer: rov_vactest_blink_command - Best_effort
Writer: rov_light_power_requested - Best_effort
Writer: rov_motor_command_debug - Best_effort
Writer: rov_control_target - Best_effort
No message for topic rov_cam_fwd_H264_0_ctrl_desc
received.
##Steps to Reproduce
Unfortunately, I can't provide the steps for playback. Writer part is closed-source. Reader part source code is attached.
Part of code:
class BridgedParticipantListener: public eprosima::fastrtps::rtps::RTPSParticipantListener
{
void onParticipantDiscovery(RTPSParticipant *participant, ParticipantDiscoveryInfo &&info) override;
void onWriterDiscovery(RTPSParticipant *participant, WriterDiscoveryInfo &&info) override;
};
void BridgedParticipantListener::onWriterDiscovery(RTPSParticipant *participant, WriterDiscoveryInfo &&info)
{
(void)participant;
auto topicName = info.info.topicName();
auto typeName = info.info.typeName();
switch(info.status) {
case WriterDiscoveryInfo::DISCOVERED_WRITER:
std::cout << "Writer: " << topicName << " - " << (info.info.m_qos.m_reliability.kind == RELIABLE_RELIABILITY_QOS ? "Reliable\n":"Best_effort\n");
break;
case WriterDiscoveryInfo::CHANGED_QOS_WRITER:
break;
case WriterDiscoveryInfo::REMOVED_WRITER:
break;
}
}
##System information
- Fast-RTPS version: tag: v2.1.0
- OS: macOS Bug Sur 11.0.1
##Additional resources
- Wireshark capture
2.1.0-reliability.pcapng.zip
Metadata
Metadata
Assignees
Labels
No labels