From 1fa76ac71d603ccf489457d1e7208439e11fc194 Mon Sep 17 00:00:00 2001 From: Matthias Grob Date: Tue, 12 Nov 2024 21:25:09 +0100 Subject: [PATCH] CollisionPrevention: reduce internal array size, zero initialize what's possible --- src/lib/collision_prevention/CollisionPrevention.cpp | 10 +++------- src/lib/collision_prevention/CollisionPrevention.hpp | 9 +++------ 2 files changed, 6 insertions(+), 13 deletions(-) diff --git a/src/lib/collision_prevention/CollisionPrevention.cpp b/src/lib/collision_prevention/CollisionPrevention.cpp index 4f6ff22974..dd0049f5e9 100644 --- a/src/lib/collision_prevention/CollisionPrevention.cpp +++ b/src/lib/collision_prevention/CollisionPrevention.cpp @@ -51,18 +51,14 @@ CollisionPrevention::CollisionPrevention(ModuleParams *parent) : >= BIN_COUNT, "BIN_COUNT must not overflow obstacle_distance.distances"); // initialize internal obstacle map - _obstacle_map_body_frame.timestamp = getTime(); _obstacle_map_body_frame.frame = obstacle_distance_s::MAV_FRAME_BODY_FRD; _obstacle_map_body_frame.increment = BIN_SIZE; _obstacle_map_body_frame.min_distance = UINT16_MAX; - _obstacle_map_body_frame.max_distance = 0; - _obstacle_map_body_frame.angle_offset = 0.f; - const uint64_t current_time = getTime(); + + static constexpr int BIN_COUNT_EXTERNAL = + sizeof(_obstacle_map_body_frame.distances) / sizeof(_obstacle_map_body_frame.distances[0]); for (uint32_t i = 0 ; i < BIN_COUNT_EXTERNAL; i++) { - _data_timestamps[i] = current_time; - _data_maxranges[i] = 0; - _data_fov[i] = 0; _obstacle_map_body_frame.distances[i] = UINT16_MAX; } } diff --git a/src/lib/collision_prevention/CollisionPrevention.hpp b/src/lib/collision_prevention/CollisionPrevention.hpp index bf30c7a455..547c63c3aa 100644 --- a/src/lib/collision_prevention/CollisionPrevention.hpp +++ b/src/lib/collision_prevention/CollisionPrevention.hpp @@ -85,12 +85,9 @@ protected: static constexpr int BIN_SIZE = 360 / BIN_COUNT; // cannot be lower than 5 degrees, should divide 360 evenly obstacle_distance_s _obstacle_map_body_frame{}; - static constexpr int BIN_COUNT_EXTERNAL = - sizeof(_obstacle_map_body_frame.distances) / sizeof(_obstacle_map_body_frame.distances[0]); - - bool _data_fov[BIN_COUNT_EXTERNAL]; - uint64_t _data_timestamps[BIN_COUNT_EXTERNAL]; - uint16_t _data_maxranges[BIN_COUNT_EXTERNAL]; /**< in cm */ + bool _data_fov[BIN_COUNT] {}; + uint64_t _data_timestamps[BIN_COUNT] {}; + uint16_t _data_maxranges[BIN_COUNT] {}; /**< in cm */ void _addDistanceSensorData(distance_sensor_s &distance_sensor, const matrix::Quatf &vehicle_attitude);