|
|
|
@ -790,7 +790,17 @@ void Vehicle::_handleDistanceSensor(mavlink_message_t& message)
@@ -790,7 +790,17 @@ void Vehicle::_handleDistanceSensor(mavlink_message_t& message)
|
|
|
|
|
{ |
|
|
|
|
mavlink_distance_sensor_t distanceSensor; |
|
|
|
|
|
|
|
|
|
mavlink_msg_distance_sensor_decode(&message, &distanceSensor); |
|
|
|
|
mavlink_msg_distance_sensor_decode(&message, &distanceSensor);\
|
|
|
|
|
|
|
|
|
|
if (!_distanceSensorFactGroup.idSet()) { |
|
|
|
|
_distanceSensorFactGroup.setIdSet(true); |
|
|
|
|
_id = distanceSensor.id; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (_id != distanceSensor.id) { |
|
|
|
|
// We can only handle a single sensor reporting
|
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
struct orientation2Fact_s { |
|
|
|
|
MAV_SENSOR_ORIENTATION orientation; |
|
|
|
@ -799,16 +809,22 @@ void Vehicle::_handleDistanceSensor(mavlink_message_t& message)
@@ -799,16 +809,22 @@ void Vehicle::_handleDistanceSensor(mavlink_message_t& message)
|
|
|
|
|
|
|
|
|
|
orientation2Fact_s rgOrientation2Fact[] = |
|
|
|
|
{ |
|
|
|
|
{ MAV_SENSOR_ROTATION_NONE, _distanceSensorFactGroup.rotationNone() }, |
|
|
|
|
{ MAV_SENSOR_ROTATION_YAW_90, _distanceSensorFactGroup.rotationYaw90() }, |
|
|
|
|
{ MAV_SENSOR_ROTATION_YAW_180, _distanceSensorFactGroup.rotationYaw180() }, |
|
|
|
|
{ MAV_SENSOR_ROTATION_YAW_270, _distanceSensorFactGroup.rotationYaw270() }, |
|
|
|
|
{ MAV_SENSOR_ROTATION_NONE, _distanceSensorFactGroup.rotationNone() }, |
|
|
|
|
{ MAV_SENSOR_ROTATION_YAW_45, _distanceSensorFactGroup.rotationYaw45() }, |
|
|
|
|
{ MAV_SENSOR_ROTATION_YAW_90, _distanceSensorFactGroup.rotationYaw90() }, |
|
|
|
|
{ MAV_SENSOR_ROTATION_YAW_135, _distanceSensorFactGroup.rotationYaw135() }, |
|
|
|
|
{ MAV_SENSOR_ROTATION_YAW_180, _distanceSensorFactGroup.rotationYaw180() }, |
|
|
|
|
{ MAV_SENSOR_ROTATION_YAW_225, _distanceSensorFactGroup.rotationYaw225() }, |
|
|
|
|
{ MAV_SENSOR_ROTATION_YAW_270, _distanceSensorFactGroup.rotationYaw270() }, |
|
|
|
|
{ MAV_SENSOR_ROTATION_YAW_315, _distanceSensorFactGroup.rotationYaw315() }, |
|
|
|
|
{ MAV_SENSOR_ROTATION_PITCH_90, _distanceSensorFactGroup.rotationPitch90() }, |
|
|
|
|
{ MAV_SENSOR_ROTATION_PITCH_270, _distanceSensorFactGroup.rotationPitch270() }, |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
for (size_t i=0; i<sizeof(rgOrientation2Fact)/sizeof(rgOrientation2Fact[0]); i++) { |
|
|
|
|
const orientation2Fact_s& orientation2Fact = rgOrientation2Fact[i]; |
|
|
|
|
if (orientation2Fact.orientation == distanceSensor.orientation) { |
|
|
|
|
orientation2Fact.fact->setRawValue(distanceSensor.current_distance); |
|
|
|
|
orientation2Fact.fact->setRawValue(distanceSensor.current_distance / 100.0); // cm to meters
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
@ -3393,25 +3409,50 @@ VehicleSetpointFactGroup::VehicleSetpointFactGroup(QObject* parent)
@@ -3393,25 +3409,50 @@ VehicleSetpointFactGroup::VehicleSetpointFactGroup(QObject* parent)
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
const char* VehicleDistanceSensorFactGroup::_rotationNoneFactName = "rotationNone"; |
|
|
|
|
const char* VehicleDistanceSensorFactGroup::_rotationYaw45FactName = "rotationYaw45"; |
|
|
|
|
const char* VehicleDistanceSensorFactGroup::_rotationYaw90FactName = "rotationYaw90"; |
|
|
|
|
const char* VehicleDistanceSensorFactGroup::_rotationYaw135FactName = "rotationYaw135"; |
|
|
|
|
const char* VehicleDistanceSensorFactGroup::_rotationYaw180FactName = "rotationYaw180"; |
|
|
|
|
const char* VehicleDistanceSensorFactGroup::_rotationYaw225FactName = "rotationYaw225"; |
|
|
|
|
const char* VehicleDistanceSensorFactGroup::_rotationYaw270FactName = "rotationYaw270"; |
|
|
|
|
const char* VehicleDistanceSensorFactGroup::_rotationYaw315FactName = "rotationYaw315"; |
|
|
|
|
const char* VehicleDistanceSensorFactGroup::_rotationPitch90FactName = "rotationPitch90"; |
|
|
|
|
const char* VehicleDistanceSensorFactGroup::_rotationPitch270FactName = "rotationPitch270"; |
|
|
|
|
|
|
|
|
|
VehicleDistanceSensorFactGroup::VehicleDistanceSensorFactGroup(QObject* parent) |
|
|
|
|
: FactGroup (1000, ":/json/Vehicle/DistanceSensorFact.json", parent) |
|
|
|
|
, _rotationNoneFact (0, _rotationNoneFactName, FactMetaData::valueTypeDouble) |
|
|
|
|
, _rotationYaw45Fact (0, _rotationYaw45FactName, FactMetaData::valueTypeDouble) |
|
|
|
|
, _rotationYaw90Fact (0, _rotationYaw90FactName, FactMetaData::valueTypeDouble) |
|
|
|
|
, _rotationYaw135Fact (0, _rotationYaw135FactName, FactMetaData::valueTypeDouble) |
|
|
|
|
, _rotationYaw180Fact (0, _rotationYaw180FactName, FactMetaData::valueTypeDouble) |
|
|
|
|
, _rotationYaw225Fact (0, _rotationYaw225FactName, FactMetaData::valueTypeDouble) |
|
|
|
|
, _rotationYaw270Fact (0, _rotationYaw270FactName, FactMetaData::valueTypeDouble) |
|
|
|
|
{ |
|
|
|
|
_addFact(&_rotationNoneFact, _rotationNoneFactName); |
|
|
|
|
_addFact(&_rotationYaw90Fact, _rotationYaw90FactName); |
|
|
|
|
_addFact(&_rotationYaw180Fact, _rotationYaw180FactName); |
|
|
|
|
_addFact(&_rotationYaw270Fact, _rotationYaw270FactName); |
|
|
|
|
, _rotationYaw315Fact (0, _rotationYaw315FactName, FactMetaData::valueTypeDouble) |
|
|
|
|
, _rotationPitch90Fact (0, _rotationPitch90FactName, FactMetaData::valueTypeDouble) |
|
|
|
|
, _rotationPitch270Fact (0, _rotationPitch270FactName, FactMetaData::valueTypeDouble) |
|
|
|
|
, _idSet (false) |
|
|
|
|
, _id (0) |
|
|
|
|
{ |
|
|
|
|
_addFact(&_rotationNoneFact, _rotationNoneFactName); |
|
|
|
|
_addFact(&_rotationYaw45Fact, _rotationYaw45FactName); |
|
|
|
|
_addFact(&_rotationYaw90Fact, _rotationYaw90FactName); |
|
|
|
|
_addFact(&_rotationYaw135Fact, _rotationYaw135FactName); |
|
|
|
|
_addFact(&_rotationYaw180Fact, _rotationYaw180FactName); |
|
|
|
|
_addFact(&_rotationYaw225Fact, _rotationYaw225FactName); |
|
|
|
|
_addFact(&_rotationYaw270Fact, _rotationYaw270FactName); |
|
|
|
|
_addFact(&_rotationYaw315Fact, _rotationYaw315FactName); |
|
|
|
|
_addFact(&_rotationPitch90Fact, _rotationPitch90FactName); |
|
|
|
|
_addFact(&_rotationPitch270Fact, _rotationPitch270FactName); |
|
|
|
|
|
|
|
|
|
// Start out as not available "--.--"
|
|
|
|
|
_rotationNoneFact.setRawValue(std::numeric_limits<float>::quiet_NaN()); |
|
|
|
|
_rotationYaw45Fact.setRawValue(std::numeric_limits<float>::quiet_NaN()); |
|
|
|
|
_rotationYaw135Fact.setRawValue(std::numeric_limits<float>::quiet_NaN()); |
|
|
|
|
_rotationYaw90Fact.setRawValue(std::numeric_limits<float>::quiet_NaN()); |
|
|
|
|
_rotationYaw180Fact.setRawValue(std::numeric_limits<float>::quiet_NaN()); |
|
|
|
|
_rotationYaw225Fact.setRawValue(std::numeric_limits<float>::quiet_NaN()); |
|
|
|
|
_rotationYaw270Fact.setRawValue(std::numeric_limits<float>::quiet_NaN()); |
|
|
|
|
_rotationPitch90Fact.setRawValue(std::numeric_limits<float>::quiet_NaN()); |
|
|
|
|
_rotationPitch270Fact.setRawValue(std::numeric_limits<float>::quiet_NaN()); |
|
|
|
|
} |
|
|
|
|