mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-11-03 01:51:35 +08:00
Send current local position estimate as well
This commit is contained in:
@@ -927,6 +927,14 @@ int commander_thread_main(int argc, char *argv[])
|
|||||||
orb_copy(ORB_ID(vehicle_global_position), global_position_sub, &global_position);
|
orb_copy(ORB_ID(vehicle_global_position), global_position_sub, &global_position);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* update local position estimate */
|
||||||
|
orb_check(local_position_sub, &updated);
|
||||||
|
|
||||||
|
if (updated) {
|
||||||
|
/* position changed */
|
||||||
|
orb_copy(ORB_ID(vehicle_local_position), local_position_sub, &local_position);
|
||||||
|
}
|
||||||
|
|
||||||
/* update condition_global_position_valid */
|
/* update condition_global_position_valid */
|
||||||
/* hysteresis for EPH/EPV */
|
/* hysteresis for EPH/EPV */
|
||||||
bool eph_epv_good;
|
bool eph_epv_good;
|
||||||
@@ -952,6 +960,10 @@ int commander_thread_main(int argc, char *argv[])
|
|||||||
home.lon = global_position.lon;
|
home.lon = global_position.lon;
|
||||||
home.alt = global_position.alt;
|
home.alt = global_position.alt;
|
||||||
|
|
||||||
|
home.x = local_position.x;
|
||||||
|
home.y = local_position.y;
|
||||||
|
home.z = local_position.z;
|
||||||
|
|
||||||
warnx("home: lat = %.7f, lon = %.7f, alt = %.2f ", home.lat, home.lon, (double)home.alt);
|
warnx("home: lat = %.7f, lon = %.7f, alt = %.2f ", home.lat, home.lon, (double)home.alt);
|
||||||
mavlink_log_info(mavlink_fd, "[cmd] home: %.7f, %.7f, %.2f", home.lat, home.lon, (double)home.alt);
|
mavlink_log_info(mavlink_fd, "[cmd] home: %.7f, %.7f, %.2f", home.lat, home.lon, (double)home.alt);
|
||||||
|
|
||||||
@@ -968,14 +980,6 @@ int commander_thread_main(int argc, char *argv[])
|
|||||||
tune_positive(true);
|
tune_positive(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* update local position estimate */
|
|
||||||
orb_check(local_position_sub, &updated);
|
|
||||||
|
|
||||||
if (updated) {
|
|
||||||
/* position changed */
|
|
||||||
orb_copy(ORB_ID(vehicle_local_position), local_position_sub, &local_position);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* update condition_local_position_valid and condition_local_altitude_valid */
|
/* update condition_local_position_valid and condition_local_altitude_valid */
|
||||||
check_valid(local_position.timestamp, POSITION_TIMEOUT, local_position.xy_valid && eph_epv_good, &(status.condition_local_position_valid), &status_changed);
|
check_valid(local_position.timestamp, POSITION_TIMEOUT, local_position.xy_valid && eph_epv_good, &(status.condition_local_position_valid), &status_changed);
|
||||||
check_valid(local_position.timestamp, POSITION_TIMEOUT, local_position.z_valid, &(status.condition_local_altitude_valid), &status_changed);
|
check_valid(local_position.timestamp, POSITION_TIMEOUT, local_position.z_valid, &(status.condition_local_altitude_valid), &status_changed);
|
||||||
@@ -1338,6 +1342,10 @@ int commander_thread_main(int argc, char *argv[])
|
|||||||
home.lon = global_position.lon;
|
home.lon = global_position.lon;
|
||||||
home.alt = global_position.alt;
|
home.alt = global_position.alt;
|
||||||
|
|
||||||
|
home.x = local_position.x;
|
||||||
|
home.y = local_position.y;
|
||||||
|
home.z = local_position.z;
|
||||||
|
|
||||||
warnx("home: lat = %.7f, lon = %.7f, alt = %.2f ", home.lat, home.lon, (double)home.alt);
|
warnx("home: lat = %.7f, lon = %.7f, alt = %.2f ", home.lat, home.lon, (double)home.alt);
|
||||||
mavlink_log_info(mavlink_fd, "[cmd] home: %.7f, %.7f, %.2f", home.lat, home.lon, (double)home.alt);
|
mavlink_log_info(mavlink_fd, "[cmd] home: %.7f, %.7f, %.2f", home.lat, home.lon, (double)home.alt);
|
||||||
|
|
||||||
|
|||||||
@@ -59,10 +59,13 @@ struct home_position_s
|
|||||||
{
|
{
|
||||||
uint64_t timestamp; /**< Timestamp (microseconds since system boot) */
|
uint64_t timestamp; /**< Timestamp (microseconds since system boot) */
|
||||||
|
|
||||||
//bool altitude_is_relative; // TODO what means home relative altitude? we need clear definition of reference altitude then
|
|
||||||
double lat; /**< Latitude in degrees */
|
double lat; /**< Latitude in degrees */
|
||||||
double lon; /**< Longitude in degrees */
|
double lon; /**< Longitude in degrees */
|
||||||
float alt; /**< Altitude in meters */
|
float alt; /**< Altitude in meters */
|
||||||
|
|
||||||
|
float x; /**< X coordinate in meters */
|
||||||
|
float y; /**< Y coordinate in meters */
|
||||||
|
float z; /**< Z coordinate in meters */
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user