From effb9dee11efc6813038a65080bec86d8e12bcb6 Mon Sep 17 00:00:00 2001 From: Niklas Hauser Date: Thu, 24 Apr 2025 13:20:23 +0200 Subject: [PATCH] [tfmini] Configure range and FoV via parameters --- src/drivers/distance_sensor/tfmini/TFMINI.cpp | 17 +++++++++++++++-- src/drivers/distance_sensor/tfmini/module.yaml | 17 +++++++++++++++++ .../distance_sensor/tfmini/tfmini_main.cpp | 1 - 3 files changed, 32 insertions(+), 3 deletions(-) diff --git a/src/drivers/distance_sensor/tfmini/TFMINI.cpp b/src/drivers/distance_sensor/tfmini/TFMINI.cpp index 202edacd4d..1d62058044 100644 --- a/src/drivers/distance_sensor/tfmini/TFMINI.cpp +++ b/src/drivers/distance_sensor/tfmini/TFMINI.cpp @@ -33,6 +33,7 @@ #include "TFMINI.hpp" +#include #include #include @@ -72,7 +73,8 @@ TFMINI::~TFMINI() int TFMINI::init() { - int32_t hw_model = 1; // only one model so far... + int32_t hw_model = 1; + param_get(param_find("SENS_TFMINI_HW"), &hw_model); switch (hw_model) { case 1: // TFMINI (12m, 100 Hz) @@ -83,8 +85,19 @@ TFMINI::init() // So we set 0.4 as valid minimum. _px4_rangefinder.set_min_distance(0.4f); _px4_rangefinder.set_max_distance(12.0f); - _px4_rangefinder.set_fov(math::radians(1.15f)); + _px4_rangefinder.set_fov(math::radians(2.3f)); + break; + case 2: // ISTRA24 (50m, 100 Hz) + _px4_rangefinder.set_min_distance(0.3f); + _px4_rangefinder.set_max_distance(50.0f); + _px4_rangefinder.set_fov(math::radians(20)); + break; + + case 3: // ISTRA24 (100m, 100 Hz) + _px4_rangefinder.set_min_distance(0.3f); + _px4_rangefinder.set_max_distance(100.0f); + _px4_rangefinder.set_fov(math::radians(20)); break; default: diff --git a/src/drivers/distance_sensor/tfmini/module.yaml b/src/drivers/distance_sensor/tfmini/module.yaml index 59cb6b2343..daf1925b0c 100644 --- a/src/drivers/distance_sensor/tfmini/module.yaml +++ b/src/drivers/distance_sensor/tfmini/module.yaml @@ -4,3 +4,20 @@ serial_config: port_config_param: name: SENS_TFMINI_CFG group: Sensors + +parameters: + - group: Sensors + definitions: + SENS_TFMINI_HW: + description: + short: Hardware Model + long: Models differ in range and FoV. + type: enum + values: + 1: TFMINI + 2: ISTRA24 + 3: ISTRA24_100m + min: 1 + max: 3 + default: 1 + reboot_required: true diff --git a/src/drivers/distance_sensor/tfmini/tfmini_main.cpp b/src/drivers/distance_sensor/tfmini/tfmini_main.cpp index 2680378ad7..c741c8dbbe 100644 --- a/src/drivers/distance_sensor/tfmini/tfmini_main.cpp +++ b/src/drivers/distance_sensor/tfmini/tfmini_main.cpp @@ -132,7 +132,6 @@ $ tfmini stop PRINT_MODULE_USAGE_PARAM_INT('R', 25, 0, 25, "Sensor rotation - downward facing by default", true); PRINT_MODULE_USAGE_COMMAND_DESCR("status","Driver status"); PRINT_MODULE_USAGE_COMMAND_DESCR("stop","Stop driver"); - PRINT_MODULE_USAGE_COMMAND_DESCR("test","Test driver (basic functional tests)"); PRINT_MODULE_USAGE_COMMAND_DESCR("status","Print driver status"); return PX4_OK; }