From ec3f1fd5c22bfc4961a36f070c4e919ff2ea53dc Mon Sep 17 00:00:00 2001
From: Oleg Kalachev <okalachev@gmail.com>
Date: Fri, 22 Feb 2019 16:23:41 +0300
Subject: [PATCH] mavlink_receiver: fix DISTANCE_SENSOR covariance handling

---
 msg/distance_sensor.msg                  | 2 +-
 src/modules/mavlink/mavlink_receiver.cpp | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/msg/distance_sensor.msg b/msg/distance_sensor.msg
index 4a2e8f8d8f..6e636160c5 100644
--- a/msg/distance_sensor.msg
+++ b/msg/distance_sensor.msg
@@ -5,7 +5,7 @@ uint64 timestamp		# time since system start (microseconds)
 float32 min_distance		# Minimum distance the sensor can measure (in m)
 float32 max_distance		# Maximum distance the sensor can measure (in m)
 float32 current_distance	# Current distance reading (in m)
-float32 covariance		# Measurement covariance (in m), 0 for unknown / invalid readings
+float32 covariance		# Measurement covariance (in m^2), 0 for unknown / invalid readings
 int8 signal_quality		# Signal quality in percent (0...100%), where 0 = invalid signal, 100 = perfect signal, and -1 = unknown signal quality.
 
 uint8 type			# Type from MAV_DISTANCE_SENSOR enum
diff --git a/src/modules/mavlink/mavlink_receiver.cpp b/src/modules/mavlink/mavlink_receiver.cpp
index 5243e7b72c..8b9a88e663 100644
--- a/src/modules/mavlink/mavlink_receiver.cpp
+++ b/src/modules/mavlink/mavlink_receiver.cpp
@@ -797,7 +797,7 @@ MavlinkReceiver::handle_message_distance_sensor(mavlink_message_t *msg)
 	d.type = dist_sensor.type;
 	d.id = 	MAV_DISTANCE_SENSOR_LASER;
 	d.orientation = dist_sensor.orientation;
-	d.covariance = dist_sensor.covariance;
+	d.covariance = dist_sensor.covariance * 1e-4f; // cm^2 to m^2
 
 	/// TODO Add sensor rotation according to MAV_SENSOR_ORIENTATION enum
 
-- 
GitLab