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
+25 -27
View File
@@ -41,18 +41,16 @@
#ifndef NAVIGATOR_MISSION_BLOCK_H
#define NAVIGATOR_MISSION_BLOCK_H
#include <drivers/drv_hrt.h>
#include "navigator_mode.h"
#include <navigator/navigation.h>
#include <uORB/topics/mission.h>
#include <uORB/topics/vehicle_global_position.h>
#include <uORB/topics/position_setpoint_triplet.h>
#include <uORB/topics/vtol_vehicle_status.h>
#include <uORB/topics/actuator_controls.h>
#include <uORB/topics/follow_target.h>
#include "navigator_mode.h"
#include <uORB/topics/mission.h>
#include <uORB/topics/position_setpoint_triplet.h>
#include <uORB/topics/vehicle_command.h>
#include <uORB/topics/vehicle_global_position.h>
#include <uORB/topics/vtol_vehicle_status.h>
class Navigator;
@@ -63,15 +61,11 @@ public:
* Constructor
*/
MissionBlock(Navigator *navigator, const char *name);
~MissionBlock() = default;
MissionBlock(const MissionBlock &) = delete;
MissionBlock &operator=(const MissionBlock &) = delete;
/**
* Destructor
*/
virtual ~MissionBlock();
/* TODO: move this to a helper class in navigator */
static bool item_contains_position(const struct mission_item_s *item);
@@ -81,6 +75,7 @@ protected:
* @return true if successfully reached
*/
bool is_mission_item_reached();
/**
* Reset all reached flags
*/
@@ -121,28 +116,31 @@ protected:
*/
void set_idle_item(struct mission_item_s *item);
/**
* Convert a mission item to a command
*/
void mission_item_to_vehicle_command(const struct mission_item_s *item, struct vehicle_command_s *cmd);
/**
* Set follow_target item
*/
void set_follow_target_item(struct mission_item_s *item, float min_clearance, follow_target_s &target, float yaw);
/**
* Convert a mission item to a command
*/
void mission_item_to_vehicle_command(const struct mission_item_s *item, struct vehicle_command_s *cmd);
void issue_command(const struct mission_item_s *item);
mission_item_s _mission_item;
bool _waypoint_position_reached;
bool _waypoint_yaw_reached;
hrt_abstime _time_first_inside_orbit;
hrt_abstime _action_start;
hrt_abstime _time_wp_reached;
float get_time_inside(const struct mission_item_s &item);
actuator_controls_s _actuators;
orb_advert_t _actuator_pub;
orb_advert_t _cmd_pub;
mission_item_s _mission_item{};
bool _waypoint_position_reached{false};
bool _waypoint_yaw_reached{false};
hrt_abstime _time_first_inside_orbit{0};
hrt_abstime _action_start{0};
hrt_abstime _time_wp_reached{0};
actuator_controls_s _actuators{};
orb_advert_t _actuator_pub{nullptr};
control::BlockParamFloat _param_loiter_min_alt;
control::BlockParamFloat _param_yaw_timeout;