Navigator move get_time_inside and cleanup (#7062)

This commit is contained in:
Daniel Agar
2017-04-20 11:24:55 -04:00
committed by GitHub
parent 1913b970d7
commit 56b028148b
9 changed files with 234 additions and 436 deletions
+35 -40
View File
@@ -45,24 +45,23 @@
#ifndef NAVIGATOR_MISSION_H
#define NAVIGATOR_MISSION_H
#include <drivers/drv_hrt.h>
#include <controllib/blocks.hpp>
#include <controllib/block/BlockParam.hpp>
#include <dataman/dataman.h>
#include <uORB/uORB.h>
#include <uORB/topics/vehicle_global_position.h>
#include <uORB/topics/position_setpoint_triplet.h>
#include <uORB/topics/home_position.h>
#include <uORB/topics/vehicle_status.h>
#include <uORB/topics/mission.h>
#include <uORB/topics/mission_result.h>
#include "navigator_mode.h"
#include "mission_block.h"
#include "mission_feasibility_checker.h"
#include "navigator_mode.h"
#include <cfloat>
#include <controllib/block/BlockParam.hpp>
#include <controllib/blocks.hpp>
#include <dataman/dataman.h>
#include <drivers/drv_hrt.h>
#include <uORB/topics/home_position.h>
#include <uORB/topics/mission.h>
#include <uORB/topics/mission_result.h>
#include <uORB/topics/position_setpoint_triplet.h>
#include <uORB/topics/vehicle_global_position.h>
#include <uORB/topics/vehicle_status.h>
#include <uORB/uORB.h>
class Navigator;
@@ -70,14 +69,11 @@ class Mission : public MissionBlock
{
public:
Mission(Navigator *navigator, const char *name);
~Mission() override = default;
virtual ~Mission();
virtual void on_inactive();
virtual void on_activation();
virtual void on_active();
void on_inactive() override;
void on_activation() override;
void on_active() override;
enum mission_altitude_mode {
MISSION_ALTMODE_ZOH = 0,
@@ -94,7 +90,7 @@ public:
bool set_current_offboard_mission_index(unsigned index);
unsigned find_offboard_land_start();
int find_offboard_land_start();
private:
/**
@@ -245,28 +241,28 @@ private:
control::BlockParamInt _param_force_vtol;
control::BlockParamFloat _param_fw_climbout_diff;
struct mission_s _onboard_mission;
struct mission_s _offboard_mission;
struct mission_s _onboard_mission {};
struct mission_s _offboard_mission {};
int _current_onboard_mission_index;
int _current_offboard_mission_index;
bool _need_takeoff; /**< if true, then takeoff must be performed before going to the first waypoint (if needed) */
int _current_onboard_mission_index{-1};
int _current_offboard_mission_index{-1};
bool _need_takeoff{true}; /**< if true, then takeoff must be performed before going to the first waypoint (if needed) */
enum {
MISSION_TYPE_NONE,
MISSION_TYPE_ONBOARD,
MISSION_TYPE_OFFBOARD
} _mission_type;
} _mission_type{MISSION_TYPE_NONE};
bool _inited;
bool _home_inited;
bool _need_mission_reset;
bool _inited{false};
bool _home_inited{false};
bool _need_mission_reset{false};
MissionFeasibilityChecker _missionFeasibilityChecker; /**< class that checks if a mission is feasible */
float _min_current_sp_distance_xy; /**< minimum distance which was achieved to the current waypoint */
float _min_current_sp_distance_xy{FLT_MAX}; /**< minimum distance which was achieved to the current waypoint */
float _distance_current_previous; /**< distance from previous to current sp in pos_sp_triplet,
float _distance_current_previous{0.0f}; /**< distance from previous to current sp in pos_sp_triplet,
only use if current and previous are valid */
enum work_item_type {
@@ -274,11 +270,10 @@ private:
WORK_ITEM_TYPE_TAKEOFF, /**< takeoff before moving to waypoint */
WORK_ITEM_TYPE_MOVE_TO_LAND, /**< move to land waypoint before descent */
WORK_ITEM_TYPE_ALIGN, /**< align for next waypoint */
WORK_ITEM_TYPE_CMD_BEFORE_MOVE, /**< */
WORK_ITEM_TYPE_TRANSITON_AFTER_TAKEOFF, /**< */
WORK_ITEM_TYPE_TRANSITON_BEFORE_LAND, /**< */
WORK_ITEM_TYPE_MOVE_TO_LAND_AFTER_TRANSITION /**< */
} _work_item_type; /**< current type of work to do (sub mission item) */
WORK_ITEM_TYPE_CMD_BEFORE_MOVE,
WORK_ITEM_TYPE_TRANSITON_AFTER_TAKEOFF,
WORK_ITEM_TYPE_MOVE_TO_LAND_AFTER_TRANSITION
} _work_item_type{WORK_ITEM_TYPE_DEFAULT}; /**< current type of work to do (sub mission item) */
};
#endif