Browse Source

Navigator: Set sane defaults for navigation and loiter waypoints with zero acceptance radius or orbit

sbg
Lorenz Meier 9 years ago
parent
commit
590f00f560
  1. 5
      src/modules/navigator/mission_block.cpp
  2. 2
      src/modules/navigator/navigation.h

5
src/modules/navigator/mission_block.cpp

@ -146,7 +146,7 @@ MissionBlock::is_mission_item_reached()
float mission_acceptance_radius = _navigator->get_acceptance_radius(_mission_item.acceptance_radius); float mission_acceptance_radius = _navigator->get_acceptance_radius(_mission_item.acceptance_radius);
/* if set to zero use the default instead */ /* if set to zero use the default instead */
if (mission_acceptance_radius < 0.001f) { if (mission_acceptance_radius < NAV_EPSILON_POSITION) {
mission_acceptance_radius = _navigator->get_acceptance_radius(); mission_acceptance_radius = _navigator->get_acceptance_radius();
} }
@ -210,7 +210,8 @@ MissionBlock::mission_item_to_position_setpoint(const struct mission_item_s *ite
sp->lon = item->lon; sp->lon = item->lon;
sp->alt = item->altitude_is_relative ? item->altitude + _navigator->get_home_position()->alt : item->altitude; sp->alt = item->altitude_is_relative ? item->altitude + _navigator->get_home_position()->alt : item->altitude;
sp->yaw = item->yaw; sp->yaw = item->yaw;
sp->loiter_radius = item->loiter_radius; sp->loiter_radius = (item->loiter_radius > NAV_EPSILON_POSITION) ? item->loiter_radius :
_navigator->get_loiter_radius();
sp->loiter_direction = item->loiter_direction; sp->loiter_direction = item->loiter_direction;
sp->pitch_min = item->pitch_min; sp->pitch_min = item->pitch_min;

2
src/modules/navigator/navigation.h

@ -47,6 +47,8 @@
#define NUM_MISSIONS_SUPPORTED 256 #define NUM_MISSIONS_SUPPORTED 256
#define NAV_EPSILON_POSITION 0.001f /**< Anything smaller than this is considered zero */
/* compatible to mavlink MAV_CMD */ /* compatible to mavlink MAV_CMD */
enum NAV_CMD { enum NAV_CMD {
NAV_CMD_IDLE = 0, NAV_CMD_IDLE = 0,

Loading…
Cancel
Save