From 6a1657d72af98a9fe2ef7e1a3de9144d58289969 Mon Sep 17 00:00:00 2001 From: Christopher Dyken Date: Tue, 13 Feb 2018 16:30:49 +0100 Subject: [PATCH] Check in MavLinkDroneController::update if we actually have a distance sensor --- .../controllers/MavLinkDroneController.hpp | 24 +++++++++++-------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/AirLib/include/vehicles/multirotor/controllers/MavLinkDroneController.hpp b/AirLib/include/vehicles/multirotor/controllers/MavLinkDroneController.hpp index f0841104df..8cd4b3968d 100644 --- a/AirLib/include/vehicles/multirotor/controllers/MavLinkDroneController.hpp +++ b/AirLib/include/vehicles/multirotor/controllers/MavLinkDroneController.hpp @@ -787,16 +787,20 @@ struct MavLinkDroneController::impl { mag_output.magnetic_field_body, baro_output.pressure * 0.01f /*Pa to Milibar */, baro_output.altitude); - const auto& distance_output = getDistance()->getOutput(); - float pitch, roll, yaw; - VectorMath::toEulerianAngle(distance_output.relative_pose.orientation, pitch, roll, yaw); - - sendDistanceSensor(distance_output.min_distance / 100, //m -> cm - distance_output.max_distance / 100, //m -> cm - distance_output.distance, - 0, //sensor type: //TODO: allow changing in settings? - 77, //sensor id, //TODO: should this be something real? - pitch); //TODO: convert from radians to degrees? + + const auto * distance = getDistance(); + if (distance) { + const auto& distance_output = distance->getOutput(); + float pitch, roll, yaw; + VectorMath::toEulerianAngle(distance_output.relative_pose.orientation, pitch, roll, yaw); + + sendDistanceSensor(distance_output.min_distance / 100, //m -> cm + distance_output.max_distance / 100, //m -> cm + distance_output.distance, + 0, //sensor type: //TODO: allow changing in settings? + 77, //sensor id, //TODO: should this be something real? + pitch); //TODO: convert from radians to degrees? + } const auto gps = getGps(); if (gps != nullptr) {