Browse Source

distance_sensor:Add rotation parameter in uavcan rangefinder

pr-sensor-distance
Zebulon 3 years ago
parent
commit
7210e48dfd
  1. 2
      src/drivers/uavcan/sensors/rangefinder.cpp
  2. 1
      src/drivers/uavcan/sensors/rangefinder.hpp
  3. 19
      src/drivers/uavcan/uavcan_params.c

2
src/drivers/uavcan/sensors/rangefinder.cpp

@ -52,6 +52,7 @@ int UavcanRangefinderBridge::init() @@ -52,6 +52,7 @@ int UavcanRangefinderBridge::init()
// Initialize min/max range from params
param_get(param_find("UAVCAN_RNG_MIN"), &_range_min_m);
param_get(param_find("UAVCAN_RNG_MAX"), &_range_max_m);
param_get(param_find("UAVCAN_RNG_ROT"), &_range_rot);
int res = _sub_range_data.start(RangeCbBinder(this, &UavcanRangefinderBridge::range_sub_cb));
@ -104,6 +105,7 @@ void UavcanRangefinderBridge::range_sub_cb(const @@ -104,6 +105,7 @@ void UavcanRangefinderBridge::range_sub_cb(const
rangefinder->set_fov(msg.field_of_view);
rangefinder->set_min_distance(_range_min_m);
rangefinder->set_max_distance(_range_max_m);
rangefinder->set_orientation((uint8_t)_range_rot);
_inited = true;
}

1
src/drivers/uavcan/sensors/rangefinder.hpp

@ -69,6 +69,7 @@ private: @@ -69,6 +69,7 @@ private:
float _range_min_m{0.0f};
float _range_max_m{0.0f};
int32_t _range_rot{25};
bool _inited{false};

19
src/drivers/uavcan/uavcan_params.c

@ -106,6 +106,25 @@ PARAM_DEFINE_FLOAT(UAVCAN_RNG_MIN, 0.3f); @@ -106,6 +106,25 @@ PARAM_DEFINE_FLOAT(UAVCAN_RNG_MIN, 0.3f);
*/
PARAM_DEFINE_FLOAT(UAVCAN_RNG_MAX, 200.0f);
/**
* UAVCAN rangefinder Rotation
*
* This parameter defines the rotation of the sensor relative to the platform.
*
* @reboot_required true
* @min 0
* @max 25
* @group Sensors
*
* @value 0 ROTATION_FORWARD_FACING
* @value 2 ROTATION_RIGHT_FACING
* @value 4 ROTATION_BACKWARD_FACING
* @value 6 ROTATION_LEFT_FACING
* @value 24 ROTATION_UPWARD_FACING
* @value 25 ROTATION_DOWNWARD_FACING
*/
PARAM_DEFINE_INT32(UAVCAN_RNG_ROT, 25);
/**
* UAVCAN ANTI_COLLISION light operating mode
*

Loading…
Cancel
Save