CollisionPrevention: reduce internal array size, zero initialize what's possible

This commit is contained in:
Matthias Grob
2024-11-12 21:25:09 +01:00
committed by Claudio Chies
parent c879ca531d
commit 1fa76ac71d
2 changed files with 6 additions and 13 deletions
@@ -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;
}
}
@@ -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);