From e1472818dcc7e984a5428ab2aaaad65f7b2178b5 Mon Sep 17 00:00:00 2001 From: Julian Oes <julian@oes.ch> Date: Tue, 22 Jan 2019 15:10:28 +0100 Subject: [PATCH] mavlink_mission: round lat/lon This avoids casting errors. An alternative to `std::round` would be to add 0.5 before casting for positive values and subtract 0.5 before casting for negative values. --- src/modules/mavlink/mavlink_mission.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/modules/mavlink/mavlink_mission.cpp b/src/modules/mavlink/mavlink_mission.cpp index a0faa69e28..19673eac9e 100644 --- a/src/modules/mavlink/mavlink_mission.cpp +++ b/src/modules/mavlink/mavlink_mission.cpp @@ -1560,8 +1560,8 @@ MavlinkMissionManager::format_mavlink_mission_item(const struct mission_item_s * mavlink_mission_item_int_t *item_int = reinterpret_cast<mavlink_mission_item_int_t *>(mavlink_mission_item); - item_int->x = (int32_t)(mission_item->lat * 1e7); - item_int->y = (int32_t)(mission_item->lon * 1e7); + item_int->x = std::round(mission_item->lat * 1e7); + item_int->y = std::round(mission_item->lon * 1e7); } else { mavlink_mission_item->x = (float)mission_item->lat; -- GitLab