aboutsummaryrefslogtreecommitdiff
path: root/src/modules/land_detector/MulticopterLandDetector.cpp
diff options
context:
space:
mode:
authorJohan Jansen <jnsn.johan@gmail.com>2015-02-09 18:03:10 +0100
committerJohan Jansen <jnsn.johan@gmail.com>2015-02-09 18:06:29 +0100
commitfe21cb6a1aa0c5ccd9610cb2a93139a91a9e5a72 (patch)
treeb86dcfafbddd8debbbb3265ac2423111a7ceb539 /src/modules/land_detector/MulticopterLandDetector.cpp
parentc371eb9b901f0644bc4732934156a27cf5c4be5c (diff)
downloadpx4-firmware-fe21cb6a1aa0c5ccd9610cb2a93139a91a9e5a72.tar.gz
px4-firmware-fe21cb6a1aa0c5ccd9610cb2a93139a91a9e5a72.tar.bz2
px4-firmware-fe21cb6a1aa0c5ccd9610cb2a93139a91a9e5a72.zip
LandDetector: Fix for land detection without GPS
Diffstat (limited to 'src/modules/land_detector/MulticopterLandDetector.cpp')
-rw-r--r--src/modules/land_detector/MulticopterLandDetector.cpp11
1 files changed, 6 insertions, 5 deletions
diff --git a/src/modules/land_detector/MulticopterLandDetector.cpp b/src/modules/land_detector/MulticopterLandDetector.cpp
index cfb3344f9..6d7803536 100644
--- a/src/modules/land_detector/MulticopterLandDetector.cpp
+++ b/src/modules/land_detector/MulticopterLandDetector.cpp
@@ -49,13 +49,13 @@ MulticopterLandDetector::MulticopterLandDetector() : LandDetector(),
_paramHandle(),
_params(),
_vehicleGlobalPositionSub(-1),
- _waypointSub(-1),
+ _vehicleStatusSub(-1),
_actuatorsSub(-1),
_armingSub(-1),
_parameterSub(-1),
_attitudeSub(-1),
_vehicleGlobalPosition({}),
- _waypoint({}),
+ _vehicleStatus({}),
_actuators({}),
_arming({}),
_vehicleAttitude({}),
@@ -72,7 +72,7 @@ void MulticopterLandDetector::initialize()
// subscribe to position, attitude, arming and velocity changes
_vehicleGlobalPositionSub = orb_subscribe(ORB_ID(vehicle_global_position));
_attitudeSub = orb_subscribe(ORB_ID(vehicle_attitude));
- _waypointSub = orb_subscribe(ORB_ID(position_setpoint_triplet));
+ _vehicleStatusSub = orb_subscribe(ORB_ID(vehicle_status));
_actuatorsSub = orb_subscribe(ORB_ID_VEHICLE_ATTITUDE_CONTROLS);
_armingSub = orb_subscribe(ORB_ID(actuator_armed));
_parameterSub = orb_subscribe(ORB_ID(parameter_update));
@@ -85,7 +85,7 @@ void MulticopterLandDetector::updateSubscriptions()
{
orb_update(ORB_ID(vehicle_global_position), _vehicleGlobalPositionSub, &_vehicleGlobalPosition);
orb_update(ORB_ID(vehicle_attitude), _attitudeSub, &_vehicleAttitude);
- orb_update(ORB_ID(position_setpoint_triplet), _waypointSub, &_waypoint);
+ orb_update(ORB_ID(vehicle_status), _vehicleStatusSub, &_vehicleStatus);
orb_update(ORB_ID_VEHICLE_ATTITUDE_CONTROLS, _actuatorsSub, &_actuators);
orb_update(ORB_ID(actuator_armed), _armingSub, &_arming);
}
@@ -107,7 +107,8 @@ bool MulticopterLandDetector::update()
// check if we are moving horizontally
bool horizontalMovement = sqrtf(_vehicleGlobalPosition.vel_n * _vehicleGlobalPosition.vel_n
- + _vehicleGlobalPosition.vel_e * _vehicleGlobalPosition.vel_e) > _params.maxVelocity;
+ + _vehicleGlobalPosition.vel_e * _vehicleGlobalPosition.vel_e) > _params.maxVelocity
+ && _vehicleStatus.condition_global_position_valid;
// next look if all rotation angles are not moving
bool rotating = sqrtf(_vehicleAttitude.rollspeed*_vehicleAttitude.rollspeed +