Skip to content

Interoperability with RTI Connext DDS is broken, beginning with version 2.0.2. The Reliability and Durability QoS incorrectly detected for remote writers. #1623

Closed
@DimaRU

Description

@DimaRU

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions