Browse Source

Add BackEnd logic for GripperAction Feature

Created a Q_Property for return grip_enable option state to the
frontend and a parser for setGripperAction function
QGC4.4
DieBorr 2 years ago committed by Philipp Borgers
parent
commit
f83156560f
  1. 9
      src/FirmwarePlugin/APM/APMFirmwarePlugin.cc
  2. 1
      src/FirmwarePlugin/APM/APMFirmwarePlugin.h
  3. 3
      src/FirmwarePlugin/FirmwarePlugin.h
  4. 9
      src/FirmwarePlugin/PX4/PX4FirmwarePlugin.cc
  5. 1
      src/FirmwarePlugin/PX4/PX4FirmwarePlugin.h
  6. 22
      src/Vehicle/Vehicle.cc
  7. 13
      src/Vehicle/Vehicle.h

9
src/FirmwarePlugin/APM/APMFirmwarePlugin.cc

@ -630,6 +630,15 @@ QString APMFirmwarePlugin::getHobbsMeter(Vehicle* vehicle)
return timeStr; return timeStr;
} }
bool APMFirmwarePlugin::hasGripper(const Vehicle* vehicle) const
{
if(vehicle->parameterManager()->parameterExists(FactSystem::defaultComponentId, "GRIP_ENABLE")) {
bool _hasGripper = (vehicle->parameterManager()->getParameter(FactSystem::defaultComponentId, QStringLiteral("GRIP_ENABLE"))->rawValue().toInt()) == 1 ? true : false;
return _hasGripper;
}
return false;
}
bool APMFirmwarePlugin::isGuidedMode(const Vehicle* vehicle) const bool APMFirmwarePlugin::isGuidedMode(const Vehicle* vehicle) const
{ {
return vehicle->flightMode() == "Guided"; return vehicle->flightMode() == "Guided";

1
src/FirmwarePlugin/APM/APMFirmwarePlugin.h

@ -77,6 +77,7 @@ public:
QString brandImageIndoor (const Vehicle* vehicle) const override { Q_UNUSED(vehicle); return QStringLiteral("/qmlimages/APM/BrandImage"); } QString brandImageIndoor (const Vehicle* vehicle) const override { Q_UNUSED(vehicle); return QStringLiteral("/qmlimages/APM/BrandImage"); }
QString brandImageOutdoor (const Vehicle* vehicle) const override { Q_UNUSED(vehicle); return QStringLiteral("/qmlimages/APM/BrandImage"); } QString brandImageOutdoor (const Vehicle* vehicle) const override { Q_UNUSED(vehicle); return QStringLiteral("/qmlimages/APM/BrandImage"); }
QString getHobbsMeter (Vehicle* vehicle) override; QString getHobbsMeter (Vehicle* vehicle) override;
bool hasGripper (const Vehicle* vehicle) const override;
protected: protected:
/// All access to singleton is through stack specific implementation /// All access to singleton is through stack specific implementation

3
src/FirmwarePlugin/FirmwarePlugin.h

@ -159,6 +159,9 @@ public:
/// @return The minimum equivalent airspeed setpoint /// @return The minimum equivalent airspeed setpoint
virtual double minimumEquivalentAirspeed(Vehicle* /*vehicle*/) { return NAN; } virtual double minimumEquivalentAirspeed(Vehicle* /*vehicle*/) { return NAN; }
/// @return Return true if the GCS has enabled Grip_enable option
virtual bool hasGripper(const Vehicle* /*vehicle*/) const { return false; }
/// @return Return true if we have received the ground speed limits for the mulirotor. /// @return Return true if we have received the ground speed limits for the mulirotor.
virtual bool mulirotorSpeedLimitsAvailable(Vehicle* /*vehicle*/) { return false; } virtual bool mulirotorSpeedLimitsAvailable(Vehicle* /*vehicle*/) { return false; }

9
src/FirmwarePlugin/PX4/PX4FirmwarePlugin.cc

@ -728,3 +728,12 @@ QString PX4FirmwarePlugin::getHobbsMeter(Vehicle* vehicle)
qCDebug(VehicleLog) << "Hobbs Meter string:" << timeStr; qCDebug(VehicleLog) << "Hobbs Meter string:" << timeStr;
return timeStr; return timeStr;
} }
bool PX4FirmwarePlugin::hasGripper(const Vehicle* vehicle) const
{
if(vehicle->parameterManager()->parameterExists(FactSystem::defaultComponentId, QStringLiteral("PD_GRIPPER_EN"))) {
bool _hasGripper = (vehicle->parameterManager()->getParameter(FactSystem::defaultComponentId, QStringLiteral("PD_GRIPPER_EN"))->rawValue().toInt()) != 0 ? true : false;
return _hasGripper;
}
return false;
}

1
src/FirmwarePlugin/PX4/PX4FirmwarePlugin.h

@ -72,6 +72,7 @@ public:
uint32_t highLatencyCustomModeTo32Bits (uint16_t hlCustomMode) override; uint32_t highLatencyCustomModeTo32Bits (uint16_t hlCustomMode) override;
bool supportsNegativeThrust (Vehicle* vehicle) override; bool supportsNegativeThrust (Vehicle* vehicle) override;
QString getHobbsMeter (Vehicle* vehicle) override; QString getHobbsMeter (Vehicle* vehicle) override;
bool hasGripper (const Vehicle* vehicle) const override;
protected: protected:
typedef struct { typedef struct {

22
src/Vehicle/Vehicle.cc

@ -2709,6 +2709,11 @@ double Vehicle::minimumEquivalentAirspeed()
return _firmwarePlugin->minimumEquivalentAirspeed(this); return _firmwarePlugin->minimumEquivalentAirspeed(this);
} }
bool Vehicle::hasGripper() const
{
return _firmwarePlugin->hasGripper(this);
}
void Vehicle::startMission() void Vehicle::startMission()
{ {
_firmwarePlugin->startMission(this); _firmwarePlugin->startMission(this);
@ -4270,3 +4275,20 @@ void Vehicle::setGripperAction(GRIPPER_ACTIONS gripperAction)
gripperAction, // Param2: Gripper Action gripperAction, // Param2: Gripper Action
0, 0, 0, 0, 0); // Param 3 ~ 7 : unused 0, 0, 0, 0, 0); // Param 3 ~ 7 : unused
} }
void Vehicle::sendGripperAction(GRIPPER_OPTIONS gripperOption)
{
switch(gripperOption) {
case Gripper_release:
setGripperAction(GRIPPER_ACTION_RELEASE);
break;
case Gripper_grab:
setGripperAction(GRIPPER_ACTION_GRAB);
break;
case Invalid_option:
qDebug("unknown function");
break;
default:
break;
}
}

13
src/Vehicle/Vehicle.h

@ -249,6 +249,7 @@ public:
Q_PROPERTY(qreal gimbalPitch READ gimbalPitch NOTIFY gimbalPitchChanged) Q_PROPERTY(qreal gimbalPitch READ gimbalPitch NOTIFY gimbalPitchChanged)
Q_PROPERTY(qreal gimbalYaw READ gimbalYaw NOTIFY gimbalYawChanged) Q_PROPERTY(qreal gimbalYaw READ gimbalYaw NOTIFY gimbalYawChanged)
Q_PROPERTY(bool gimbalData READ gimbalData NOTIFY gimbalDataChanged) Q_PROPERTY(bool gimbalData READ gimbalData NOTIFY gimbalDataChanged)
Q_PROPERTY(bool hasGripper READ hasGripper CONSTANT)
Q_PROPERTY(bool isROIEnabled READ isROIEnabled NOTIFY isROIEnabledChanged) Q_PROPERTY(bool isROIEnabled READ isROIEnabled NOTIFY isROIEnabledChanged)
Q_PROPERTY(CheckList checkListState READ checkListState WRITE setCheckListState NOTIFY checkListStateChanged) Q_PROPERTY(CheckList checkListState READ checkListState WRITE setCheckListState NOTIFY checkListStateChanged)
Q_PROPERTY(bool readyToFlyAvailable READ readyToFlyAvailable NOTIFY readyToFlyAvailableChanged) ///< true: readyToFly signalling is available on this vehicle Q_PROPERTY(bool readyToFlyAvailable READ readyToFlyAvailable NOTIFY readyToFlyAvailableChanged) ///< true: readyToFly signalling is available on this vehicle
@ -470,7 +471,7 @@ public:
bool roiModeSupported () const; bool roiModeSupported () const;
bool takeoffVehicleSupported () const; bool takeoffVehicleSupported () const;
QString gotoFlightMode () const; QString gotoFlightMode () const;
bool hasGripper () const;
bool haveMRSpeedLimits() const { return _multirotor_speed_limits_available; } bool haveMRSpeedLimits() const { return _multirotor_speed_limits_available; }
bool haveFWSpeedLimits() const { return _fixed_wing_airspeed_limits_available; } bool haveFWSpeedLimits() const { return _fixed_wing_airspeed_limits_available; }
@ -530,7 +531,17 @@ public:
* *
* @param gripperAction Gripper action to trigger * @param gripperAction Gripper action to trigger
*/ */
enum GRIPPER_OPTIONS
{
Gripper_release = GRIPPER_ACTION_RELEASE,
Gripper_grab = GRIPPER_ACTION_GRAB,
Invalid_option = GRIPPER_ACTIONS_ENUM_END,
};
Q_ENUM(GRIPPER_OPTIONS)
void setGripperAction(GRIPPER_ACTIONS gripperAction); void setGripperAction(GRIPPER_ACTIONS gripperAction);
Q_INVOKABLE void sendGripperAction(GRIPPER_OPTIONS gripperOption);
bool fixedWing() const; bool fixedWing() const;
bool multiRotor() const; bool multiRotor() const;

Loading…
Cancel
Save