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. 15
      src/Vehicle/Vehicle.h

9
src/FirmwarePlugin/APM/APMFirmwarePlugin.cc

@ -630,6 +630,15 @@ QString APMFirmwarePlugin::getHobbsMeter(Vehicle* vehicle) @@ -630,6 +630,15 @@ QString APMFirmwarePlugin::getHobbsMeter(Vehicle* vehicle)
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
{
return vehicle->flightMode() == "Guided";

1
src/FirmwarePlugin/APM/APMFirmwarePlugin.h

@ -77,6 +77,7 @@ public: @@ -77,6 +77,7 @@ public:
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 getHobbsMeter (Vehicle* vehicle) override;
bool hasGripper (const Vehicle* vehicle) const override;
protected:
/// All access to singleton is through stack specific implementation

3
src/FirmwarePlugin/FirmwarePlugin.h

@ -159,6 +159,9 @@ public: @@ -159,6 +159,9 @@ public:
/// @return The minimum equivalent airspeed setpoint
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.
virtual bool mulirotorSpeedLimitsAvailable(Vehicle* /*vehicle*/) { return false; }

9
src/FirmwarePlugin/PX4/PX4FirmwarePlugin.cc

@ -728,3 +728,12 @@ QString PX4FirmwarePlugin::getHobbsMeter(Vehicle* vehicle) @@ -728,3 +728,12 @@ QString PX4FirmwarePlugin::getHobbsMeter(Vehicle* vehicle)
qCDebug(VehicleLog) << "Hobbs Meter string:" << 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: @@ -72,6 +72,7 @@ public:
uint32_t highLatencyCustomModeTo32Bits (uint16_t hlCustomMode) override;
bool supportsNegativeThrust (Vehicle* vehicle) override;
QString getHobbsMeter (Vehicle* vehicle) override;
bool hasGripper (const Vehicle* vehicle) const override;
protected:
typedef struct {

22
src/Vehicle/Vehicle.cc

@ -2709,6 +2709,11 @@ double Vehicle::minimumEquivalentAirspeed() @@ -2709,6 +2709,11 @@ double Vehicle::minimumEquivalentAirspeed()
return _firmwarePlugin->minimumEquivalentAirspeed(this);
}
bool Vehicle::hasGripper() const
{
return _firmwarePlugin->hasGripper(this);
}
void Vehicle::startMission()
{
_firmwarePlugin->startMission(this);
@ -4270,3 +4275,20 @@ void Vehicle::setGripperAction(GRIPPER_ACTIONS gripperAction) @@ -4270,3 +4275,20 @@ void Vehicle::setGripperAction(GRIPPER_ACTIONS gripperAction)
gripperAction, // Param2: Gripper Action
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;
}
}

15
src/Vehicle/Vehicle.h

@ -249,6 +249,7 @@ public: @@ -249,6 +249,7 @@ public:
Q_PROPERTY(qreal gimbalPitch READ gimbalPitch NOTIFY gimbalPitchChanged)
Q_PROPERTY(qreal gimbalYaw READ gimbalYaw NOTIFY gimbalYawChanged)
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(CheckList checkListState READ checkListState WRITE setCheckListState NOTIFY checkListStateChanged)
Q_PROPERTY(bool readyToFlyAvailable READ readyToFlyAvailable NOTIFY readyToFlyAvailableChanged) ///< true: readyToFly signalling is available on this vehicle
@ -470,7 +471,7 @@ public: @@ -470,7 +471,7 @@ public:
bool roiModeSupported () const;
bool takeoffVehicleSupported () const;
QString gotoFlightMode () const;
bool hasGripper () const;
bool haveMRSpeedLimits() const { return _multirotor_speed_limits_available; }
bool haveFWSpeedLimits() const { return _fixed_wing_airspeed_limits_available; }
@ -529,8 +530,18 @@ public: @@ -529,8 +530,18 @@ public:
* @brief Send MAV_CMD_DO_GRIPPER command to trigger specified action in the vehicle
*
* @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);
Q_INVOKABLE void sendGripperAction(GRIPPER_OPTIONS gripperOption);
bool fixedWing() const;
bool multiRotor() const;

Loading…
Cancel
Save