mirror of
https://github.com/PX4/PX4-Autopilot.git
synced 2026-06-01 02:55:07 +08:00
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:
@@ -44,6 +44,7 @@
|
|||||||
namespace land_detector
|
namespace land_detector
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
bool RoverLandDetector::_get_ground_contact_state()
|
bool RoverLandDetector::_get_ground_contact_state()
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
@@ -51,7 +52,15 @@ bool RoverLandDetector::_get_ground_contact_state()
|
|||||||
|
|
||||||
bool RoverLandDetector::_get_landed_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
|
} // namespace land_detector
|
||||||
|
|||||||
@@ -42,6 +42,7 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "LandDetector.h"
|
#include "LandDetector.h"
|
||||||
|
#include <uORB/topics/vehicle_status.h>
|
||||||
|
|
||||||
namespace land_detector
|
namespace land_detector
|
||||||
{
|
{
|
||||||
@@ -56,7 +57,11 @@ protected:
|
|||||||
bool _get_ground_contact_state() override;
|
bool _get_ground_contact_state() override;
|
||||||
bool _get_landed_state() override;
|
bool _get_landed_state() override;
|
||||||
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
// Program crashes when Subscriptor declared here
|
||||||
|
uORB::Subscription _vehicle_status_sub{ORB_ID(vehicle_status)};
|
||||||
|
vehicle_status_s _vehicle_status{}; /**< vehicle status */
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user