|
|
|
@ -723,7 +723,7 @@ Navigator::status()
@@ -723,7 +723,7 @@ Navigator::status()
|
|
|
|
|
{ |
|
|
|
|
warnx("Global position is %svalid", _global_pos.valid ? "" : "in"); |
|
|
|
|
if (_global_pos.valid) { |
|
|
|
|
warnx("Longitude %5.5f degrees, latitude %5.5f degrees", _global_pos.lon / 1e7, _global_pos.lat / 1e7); |
|
|
|
|
warnx("Longitude %5.5f degrees, latitude %5.5f degrees", _global_pos.lon / 1e7d, _global_pos.lat / 1e7d); |
|
|
|
|
warnx("Altitude %5.5f meters, altitude above home %5.5f meters", |
|
|
|
|
(double)_global_pos.alt, (double)_global_pos.relative_alt); |
|
|
|
|
warnx("Ground velocity in m/s, x %5.5f, y %5.5f, z %5.5f", |
|
|
|
@ -947,14 +947,13 @@ Navigator::start_loiter()
@@ -947,14 +947,13 @@ Navigator::start_loiter()
|
|
|
|
|
_mission_item_triplet.current_valid = true; |
|
|
|
|
_mission_item_triplet.next_valid = false; |
|
|
|
|
|
|
|
|
|
_mission_item_triplet.current.lat = (double)_global_pos.lat / 1e7; |
|
|
|
|
_mission_item_triplet.current.lon = (double)_global_pos.lon / 1e7; |
|
|
|
|
_mission_item_triplet.current.lat = (double)_global_pos.lat / 1e7d; |
|
|
|
|
_mission_item_triplet.current.lon = (double)_global_pos.lon / 1e7d; |
|
|
|
|
_mission_item_triplet.current.yaw = 0.0f; |
|
|
|
|
|
|
|
|
|
get_loiter_item(&_mission_item_triplet.current); |
|
|
|
|
|
|
|
|
|
/* XXX get rid of ugly conversion for home position altitude */ |
|
|
|
|
float global_min_alt = _parameters.min_altitude + (float)_home_pos.alt/1e3f; |
|
|
|
|
float global_min_alt = _parameters.min_altitude + _home_pos.altitude; |
|
|
|
|
|
|
|
|
|
/* Use current altitude if above min altitude set by parameter */ |
|
|
|
|
if (_global_pos.alt < global_min_alt) { |
|
|
|
@ -1080,9 +1079,9 @@ Navigator::start_rtl()
@@ -1080,9 +1079,9 @@ Navigator::start_rtl()
|
|
|
|
|
_mission_item_triplet.current_valid = true; |
|
|
|
|
_mission_item_triplet.next_valid = false; |
|
|
|
|
|
|
|
|
|
_mission_item_triplet.current.lat = (double)_home_pos.lat / 1e7; |
|
|
|
|
_mission_item_triplet.current.lon = (double)_home_pos.lon / 1e7; |
|
|
|
|
_mission_item_triplet.current.altitude = (float)_home_pos.alt / 1e3f + _parameters.min_altitude; |
|
|
|
|
_mission_item_triplet.current.lat = _home_pos.lat; |
|
|
|
|
_mission_item_triplet.current.lon = _home_pos.lon; |
|
|
|
|
_mission_item_triplet.current.altitude = _home_pos.altitude + _parameters.min_altitude; |
|
|
|
|
_mission_item_triplet.current.yaw = 0.0f; |
|
|
|
|
_mission_item_triplet.current.nav_cmd = NAV_CMD_RETURN_TO_LAUNCH; |
|
|
|
|
_mission_item_triplet.current.loiter_direction = 1; |
|
|
|
@ -1104,9 +1103,9 @@ Navigator::start_rtl_loiter()
@@ -1104,9 +1103,9 @@ Navigator::start_rtl_loiter()
|
|
|
|
|
_mission_item_triplet.current_valid = true; |
|
|
|
|
_mission_item_triplet.next_valid = false; |
|
|
|
|
|
|
|
|
|
_mission_item_triplet.current.lat = (double)_home_pos.lat / 1e7; |
|
|
|
|
_mission_item_triplet.current.lon = (double)_home_pos.lon / 1e7; |
|
|
|
|
_mission_item_triplet.current.altitude = _home_pos.alt / 1e3f + _parameters.min_altitude; |
|
|
|
|
_mission_item_triplet.current.lat = _home_pos.lat; |
|
|
|
|
_mission_item_triplet.current.lon = _home_pos.lon; |
|
|
|
|
_mission_item_triplet.current.altitude = _home_pos.altitude + _parameters.min_altitude; |
|
|
|
|
|
|
|
|
|
get_loiter_item(&_mission_item_triplet.current); |
|
|
|
|
|
|
|
|
@ -1163,11 +1162,11 @@ Navigator::mission_item_reached()
@@ -1163,11 +1162,11 @@ Navigator::mission_item_reached()
|
|
|
|
|
|
|
|
|
|
// if (coordinate_frame == (int)MAV_FRAME_GLOBAL) {
|
|
|
|
|
dist = get_distance_to_point_global_wgs84(_mission_item_triplet.current.lat, _mission_item_triplet.current.lon, _mission_item_triplet.current.altitude, |
|
|
|
|
(double)_global_pos.lat / 1e7, (double)_global_pos.lon / 1e7, _global_pos.alt, |
|
|
|
|
(double)_global_pos.lat / 1e7d, (double)_global_pos.lon / 1e7d, _global_pos.alt, |
|
|
|
|
&dist_xy, &dist_z); |
|
|
|
|
|
|
|
|
|
// warnx("1 lat: %2.2f, lon: %2.2f, alt: %2.2f", _mission_item_triplet.current.lat, _mission_item_triplet.current.lon, _mission_item_triplet.current.altitude);
|
|
|
|
|
// warnx("2 lat: %2.2f, lon: %2.2f, alt: %2.2f", (double)_global_pos.lat / 1e7, (double)_global_pos.lon / 1e7, _global_pos.alt);
|
|
|
|
|
// warnx("2 lat: %2.2f, lon: %2.2f, alt: %2.2f", (double)_global_pos.lat / 1e7d, (double)_global_pos.lon / 1e7d, _global_pos.alt);
|
|
|
|
|
|
|
|
|
|
// warnx("Dist: %4.4f", dist);
|
|
|
|
|
|
|
|
|
@ -1319,9 +1318,9 @@ Navigator::add_home_pos_to_rtl(struct mission_item_s *new_mission_item)
@@ -1319,9 +1318,9 @@ Navigator::add_home_pos_to_rtl(struct mission_item_s *new_mission_item)
|
|
|
|
|
{ |
|
|
|
|
if (new_mission_item->nav_cmd == NAV_CMD_RETURN_TO_LAUNCH) { |
|
|
|
|
/* if it is a RTL waypoint, append the home position */ |
|
|
|
|
new_mission_item->lat = (double)_home_pos.lat / 1e7; |
|
|
|
|
new_mission_item->lon = (double)_home_pos.lon / 1e7; |
|
|
|
|
new_mission_item->altitude = (float)_home_pos.alt / 1e3f + _parameters.min_altitude; |
|
|
|
|
new_mission_item->lat = _home_pos.lat; |
|
|
|
|
new_mission_item->lon = _home_pos.lon; |
|
|
|
|
new_mission_item->altitude = _home_pos.altitude + _parameters.min_altitude; |
|
|
|
|
new_mission_item->loiter_radius = _parameters.loiter_radius; // TODO: get rid of magic number
|
|
|
|
|
new_mission_item->radius = 50.0f; // TODO: get rid of magic number
|
|
|
|
|
} |
|
|
|
|