Rover land detection (#13769)

* Land Enabled

* Declared Subscriptor in header as originally intended.

In the header it caused SIGSEGV in my machine so that's why it was moved
to .cpp

* Code Style fixed

* Removed confusing comments

* Comment update

Co-authored-by: Julian Oes <julian@oes.ch>
This commit is contained in:
ealdaz-seesai
2020-04-28 09:59:24 +01:00
committed by GitHub
parent f78847b26f
commit efa0e1bf0f
2 changed files with 15 additions and 1 deletions
@@ -44,6 +44,7 @@
namespace land_detector
{
bool RoverLandDetector::_get_ground_contact_state()
{
return true;
@@ -51,7 +52,15 @@ bool RoverLandDetector::_get_ground_contact_state()
bool RoverLandDetector::_get_landed_state()
{
return !_actuator_armed.armed;
_vehicle_status_sub.update(&_vehicle_status);
if (_vehicle_status.nav_state == vehicle_status_s::NAVIGATION_STATE_AUTO_LAND) {
return true; // If Landing has been requested then say we have landed.
} else {
return !_actuator_armed.armed; // If we are armed we are not landed.
}
}
} // namespace land_detector
@@ -42,6 +42,7 @@
#pragma once
#include "LandDetector.h"
#include <uORB/topics/vehicle_status.h>
namespace land_detector
{
@@ -56,7 +57,11 @@ protected:
bool _get_ground_contact_state() override;
bool _get_landed_state() override;
private:
// Program crashes when Subscriptor declared here
uORB::Subscription _vehicle_status_sub{ORB_ID(vehicle_status)};
vehicle_status_s _vehicle_status{}; /**< vehicle status */
};