diff --git a/src/modules/mavlink/mavlink_receiver.cpp b/src/modules/mavlink/mavlink_receiver.cpp index 03fed9e23d..e927765929 100644 --- a/src/modules/mavlink/mavlink_receiver.cpp +++ b/src/modules/mavlink/mavlink_receiver.cpp @@ -110,6 +110,8 @@ MavlinkReceiver::MavlinkReceiver(Mavlink *parent) : _battery_pub(nullptr), _cmd_pub(nullptr), _flow_pub(nullptr), + _hil_distance_sensor_pub(nullptr), + _flow_distance_sensor_pub(nullptr), _distance_sensor_pub(nullptr), _offboard_control_mode_pub(nullptr), _actuator_controls_pub(nullptr), @@ -462,15 +464,15 @@ MavlinkReceiver::handle_message_optical_flow_rad(mavlink_message_t *msg) d.max_distance = 5.0f; d.current_distance = flow.distance; /* both are in m */ d.type = 1; - d.id = 0; + d.id = MAV_DISTANCE_SENSOR_ULTRASOUND; d.orientation = 8; d.covariance = 0.0; - if (_distance_sensor_pub == nullptr) { - _distance_sensor_pub = orb_advertise_multi(ORB_ID(distance_sensor), &d, + if (_flow_distance_sensor_pub == nullptr) { + _flow_distance_sensor_pub = orb_advertise_multi(ORB_ID(distance_sensor), &d, &_orb_class_instance, ORB_PRIO_HIGH); } else { - orb_publish(ORB_ID(distance_sensor), _distance_sensor_pub, &d); + orb_publish(ORB_ID(distance_sensor), _flow_distance_sensor_pub, &d); } } @@ -517,11 +519,11 @@ MavlinkReceiver::handle_message_hil_optical_flow(mavlink_message_t *msg) d.orientation = 8; d.covariance = 0.0; - if (_distance_sensor_pub == nullptr) { - _distance_sensor_pub = orb_advertise_multi(ORB_ID(distance_sensor), &d, + if (_hil_distance_sensor_pub == nullptr) { + _hil_distance_sensor_pub = orb_advertise_multi(ORB_ID(distance_sensor), &d, &_orb_class_instance, ORB_PRIO_HIGH); } else { - orb_publish(ORB_ID(distance_sensor), _distance_sensor_pub, &d); + orb_publish(ORB_ID(distance_sensor), _hil_distance_sensor_pub, &d); } } @@ -574,7 +576,7 @@ MavlinkReceiver::handle_message_distance_sensor(mavlink_message_t *msg) d.max_distance = float(dist_sensor.max_distance) * 1e-2f; /* cm to m */ d.current_distance = float(dist_sensor.current_distance) * 1e-2f; /* cm to m */ d.type = dist_sensor.type; - d.id = dist_sensor.id; + d.id = MAV_DISTANCE_SENSOR_LASER; d.orientation = dist_sensor.orientation; d.covariance = dist_sensor.covariance; diff --git a/src/modules/mavlink/mavlink_receiver.h b/src/modules/mavlink/mavlink_receiver.h index 2363516a9a..ed4c3ee39b 100644 --- a/src/modules/mavlink/mavlink_receiver.h +++ b/src/modules/mavlink/mavlink_receiver.h @@ -178,6 +178,8 @@ private: orb_advert_t _battery_pub; orb_advert_t _cmd_pub; orb_advert_t _flow_pub; + orb_advert_t _hil_distance_sensor_pub; + orb_advert_t _flow_distance_sensor_pub; orb_advert_t _distance_sensor_pub; orb_advert_t _offboard_control_mode_pub; orb_advert_t _actuator_controls_pub;