|
|
|
@ -1254,11 +1254,14 @@ MavlinkReceiver::handle_message_odometry(mavlink_message_t *msg)
@@ -1254,11 +1254,14 @@ MavlinkReceiver::handle_message_odometry(mavlink_message_t *msg)
|
|
|
|
|
// - add usage on the estimator side
|
|
|
|
|
odometry.local_frame = odometry.LOCAL_FRAME_NED; |
|
|
|
|
|
|
|
|
|
const size_t POS_URT_SIZE = sizeof(odometry.pose_covariance) / sizeof(odometry.pose_covariance[0]); |
|
|
|
|
const size_t VEL_URT_SIZE = sizeof(odometry.velocity_covariance) / sizeof(odometry.velocity_covariance[0]); |
|
|
|
|
// pose_covariance
|
|
|
|
|
static constexpr size_t POS_URT_SIZE = sizeof(odometry.pose_covariance) / sizeof(odometry.pose_covariance[0]); |
|
|
|
|
static_assert(POS_URT_SIZE == (sizeof(odom.pose_covariance) / sizeof(odom.pose_covariance[0])), |
|
|
|
|
"Odometry Pose Covariance matrix URT array size mismatch"); |
|
|
|
|
static_assert(VEL_URT_SIZE == (sizeof(odom.twist_covariance) / sizeof(odom.twist_covariance[0])), |
|
|
|
|
|
|
|
|
|
// velocity_covariance
|
|
|
|
|
static constexpr size_t VEL_URT_SIZE = sizeof(odometry.velocity_covariance) / sizeof(odometry.velocity_covariance[0]); |
|
|
|
|
static_assert(VEL_URT_SIZE == (sizeof(odom.velocity_covariance) / sizeof(odom.velocity_covariance[0])), |
|
|
|
|
"Odometry Velocity Covariance matrix URT array size mismatch"); |
|
|
|
|
|
|
|
|
|
// create a method to simplify covariance copy
|
|
|
|
@ -1285,7 +1288,7 @@ MavlinkReceiver::handle_message_odometry(mavlink_message_t *msg)
@@ -1285,7 +1288,7 @@ MavlinkReceiver::handle_message_odometry(mavlink_message_t *msg)
|
|
|
|
|
|
|
|
|
|
//TODO: Apply rotation matrix to transform from body-fixed NED to earth-fixed NED frame
|
|
|
|
|
for (size_t i = 0; i < VEL_URT_SIZE; i++) { |
|
|
|
|
odometry.velocity_covariance[i] = odom.twist_covariance[i]; |
|
|
|
|
odometry.velocity_covariance[i] = odom.velocity_covariance[i]; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} else if (odom.child_frame_id == MAV_FRAME_BODY_NED) { /* WRT to vehicle body-NED frame */ |
|
|
|
@ -1307,13 +1310,14 @@ MavlinkReceiver::handle_message_odometry(mavlink_message_t *msg)
@@ -1307,13 +1310,14 @@ MavlinkReceiver::handle_message_odometry(mavlink_message_t *msg)
|
|
|
|
|
|
|
|
|
|
//TODO: Apply rotation matrix to transform from body-fixed to earth-fixed NED frame
|
|
|
|
|
for (size_t i = 0; i < VEL_URT_SIZE; i++) { |
|
|
|
|
odometry.velocity_covariance[i] = odom.twist_covariance[i]; |
|
|
|
|
odometry.velocity_covariance[i] = odom.velocity_covariance[i]; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} else if (odom.child_frame_id == MAV_FRAME_VISION_NED || /* WRT to vehicle local NED frame */ |
|
|
|
|
odom.child_frame_id == MAV_FRAME_MOCAP_NED) { |
|
|
|
|
|
|
|
|
|
if (updated) { |
|
|
|
|
orb_copy(ORB_ID(vehicle_attitude), _vehicle_attitude_sub, &_att); |
|
|
|
|
|
|
|
|
@ -1332,7 +1336,7 @@ MavlinkReceiver::handle_message_odometry(mavlink_message_t *msg)
@@ -1332,7 +1336,7 @@ MavlinkReceiver::handle_message_odometry(mavlink_message_t *msg)
|
|
|
|
|
|
|
|
|
|
//TODO: Apply rotation matrix to transform from earth-fixed to body-fixed NED frame
|
|
|
|
|
for (size_t i = 0; i < VEL_URT_SIZE; i++) { |
|
|
|
|
odometry.velocity_covariance[i] = odom.twist_covariance[i]; |
|
|
|
|
odometry.velocity_covariance[i] = odom.velocity_covariance[i]; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|