mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-07-04 01:40:35 +08:00
navigator: publish navigator mission item changes for logging
- new msg navigator_mission_item for inspecting navigator mission item processing
This commit is contained in:
@@ -70,6 +70,7 @@ void LoggedTopics::add_default_topics()
|
||||
add_topic("manual_control_setpoint", 200);
|
||||
add_topic("mission");
|
||||
add_topic("mission_result");
|
||||
add_topic("navigator_mission_item");
|
||||
add_topic("offboard_control_mode", 100);
|
||||
add_topic("onboard_computer_status", 10);
|
||||
add_topic("position_controller_status", 500);
|
||||
|
||||
@@ -323,6 +323,7 @@ Mission::set_execution_mode(const uint8_t mode)
|
||||
position_setpoint_triplet_s *pos_sp_triplet = _navigator->get_position_setpoint_triplet();
|
||||
pos_sp_triplet->previous = pos_sp_triplet->current;
|
||||
generate_waypoint_from_heading(&pos_sp_triplet->current, _mission_item.yaw);
|
||||
publish_navigator_mission_item(); // for logging
|
||||
_navigator->set_position_setpoint_triplet_updated();
|
||||
issue_command(_mission_item);
|
||||
}
|
||||
@@ -661,7 +662,9 @@ Mission::set_mission_items()
|
||||
user_feedback_done = true;
|
||||
}
|
||||
|
||||
publish_navigator_mission_item(); // for logging
|
||||
_navigator->set_position_setpoint_triplet_updated();
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1145,6 +1148,7 @@ Mission::set_mission_items()
|
||||
}
|
||||
}
|
||||
|
||||
publish_navigator_mission_item(); // for logging
|
||||
_navigator->set_position_setpoint_triplet_updated();
|
||||
}
|
||||
|
||||
@@ -1335,6 +1339,7 @@ Mission::heading_sp_update()
|
||||
}
|
||||
|
||||
// we set yaw directly so we can run this in parallel to the FOH update
|
||||
publish_navigator_mission_item();
|
||||
_navigator->set_position_setpoint_triplet_updated();
|
||||
}
|
||||
}
|
||||
@@ -1354,6 +1359,7 @@ Mission::cruising_speed_sp_update()
|
||||
|
||||
pos_sp_triplet->current.cruising_speed = cruising_speed;
|
||||
|
||||
publish_navigator_mission_item();
|
||||
_navigator->set_position_setpoint_triplet_updated();
|
||||
}
|
||||
|
||||
@@ -1384,6 +1390,7 @@ Mission::do_abort_landing()
|
||||
|
||||
mission_apply_limitation(_mission_item);
|
||||
mission_item_to_position_setpoint(_mission_item, &_navigator->get_position_setpoint_triplet()->current);
|
||||
publish_navigator_mission_item(); // for logging
|
||||
_navigator->set_position_setpoint_triplet_updated();
|
||||
|
||||
mavlink_log_info(_navigator->get_mavlink_log_pub(), "Holding at %d m above landing.",
|
||||
@@ -1826,3 +1833,33 @@ bool Mission::position_setpoint_equal(const position_setpoint_s *p1, const posit
|
||||
&& !PX4_ISFINITE(p2->cruising_throttle))));
|
||||
|
||||
}
|
||||
|
||||
void Mission::publish_navigator_mission_item()
|
||||
{
|
||||
navigator_mission_item_s navigator_mission_item{};
|
||||
|
||||
navigator_mission_item.instance_count = _navigator->mission_instance_count();
|
||||
navigator_mission_item.sequence_current = _current_mission_index;
|
||||
navigator_mission_item.nav_cmd = _mission_item.nav_cmd;
|
||||
navigator_mission_item.latitude = _mission_item.lat;
|
||||
navigator_mission_item.longitude = _mission_item.lon;
|
||||
navigator_mission_item.altitude = _mission_item.altitude;
|
||||
|
||||
navigator_mission_item.time_inside = get_time_inside(_mission_item);
|
||||
navigator_mission_item.acceptance_radius = _mission_item.acceptance_radius;
|
||||
navigator_mission_item.loiter_radius = _mission_item.loiter_radius;
|
||||
navigator_mission_item.yaw = _mission_item.yaw;
|
||||
|
||||
navigator_mission_item.frame = _mission_item.frame;
|
||||
navigator_mission_item.frame = _mission_item.origin;
|
||||
|
||||
navigator_mission_item.loiter_exit_xtrack = _mission_item.loiter_exit_xtrack;
|
||||
navigator_mission_item.force_heading = _mission_item.force_heading;
|
||||
navigator_mission_item.altitude_is_relative = _mission_item.altitude_is_relative;
|
||||
navigator_mission_item.autocontinue = _mission_item.autocontinue;
|
||||
navigator_mission_item.vtol_back_transition = _mission_item.vtol_back_transition;
|
||||
|
||||
navigator_mission_item.timestamp = hrt_absolute_time();
|
||||
|
||||
_navigator_mission_item_pub.publish(navigator_mission_item);
|
||||
}
|
||||
|
||||
@@ -57,6 +57,7 @@
|
||||
#include <uORB/topics/home_position.h>
|
||||
#include <uORB/topics/mission.h>
|
||||
#include <uORB/topics/mission_result.h>
|
||||
#include <uORB/topics/navigator_mission_item.h>
|
||||
#include <uORB/topics/position_setpoint_triplet.h>
|
||||
#include <uORB/topics/vehicle_global_position.h>
|
||||
#include <uORB/topics/vehicle_status.h>
|
||||
@@ -230,12 +231,16 @@ private:
|
||||
|
||||
bool position_setpoint_equal(const position_setpoint_s *p1, const position_setpoint_s *p2) const;
|
||||
|
||||
void publish_navigator_mission_item();
|
||||
|
||||
DEFINE_PARAMETERS(
|
||||
(ParamFloat<px4::params::MIS_DIST_1WP>) _param_mis_dist_1wp,
|
||||
(ParamFloat<px4::params::MIS_DIST_WPS>) _param_mis_dist_wps,
|
||||
(ParamInt<px4::params::MIS_MNT_YAW_CTL>) _param_mis_mnt_yaw_ctl
|
||||
)
|
||||
|
||||
uORB::Publication<navigator_mission_item_s> _navigator_mission_item_pub{ORB_ID::navigator_mission_item};
|
||||
|
||||
uORB::Subscription _mission_sub{ORB_ID(mission)}; /**< mission subscription */
|
||||
mission_s _mission {};
|
||||
|
||||
|
||||
@@ -265,6 +265,7 @@ public:
|
||||
orb_advert_t *get_mavlink_log_pub() { return &_mavlink_log_pub; }
|
||||
|
||||
void increment_mission_instance_count() { _mission_result.instance_count++; }
|
||||
int mission_instance_count() const { return _mission_result.instance_count; }
|
||||
|
||||
void set_mission_failure(const char *reason);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user