27 auto ros_nav_ptr = std::get<0>(in.
values);
28 auto& ros_nav = (*ros_nav_ptr);
30 auto best_pose_msg = std::get<0>(out.
values);
31 auto ins_stat_msg = std::get<1>(out.
values);
34 ros_nav.header.stamp.sec + ros_nav.header.stamp.nanosec / 1e9;
35 best_pose_msg->mutable_header()->set_timestamp_sec(unix_msg_time);
36 best_pose_msg->mutable_header()->set_module_name(
"gnss");
38 ins_stat_msg->mutable_header()->set_timestamp_sec(unix_msg_time);
39 ins_stat_msg->mutable_header()->set_module_name(
"gnss");
41 best_pose_msg->set_measurement_time(unix_msg_time);
42 best_pose_msg->set_latitude(ros_nav.latitude);
43 best_pose_msg->set_longitude(ros_nav.longitude);
44 best_pose_msg->set_height_msl(ros_nav.altitude);
45 best_pose_msg->set_undulation(0);
47 best_pose_msg->set_latitude_std_dev(sqrt(ros_nav.position_covariance[4]));
48 best_pose_msg->set_longitude_std_dev(sqrt(ros_nav.position_covariance[0]));
49 best_pose_msg->set_height_std_dev(sqrt(ros_nav.position_covariance[8]));
50 if (ros_nav.status.status == -1) {
51 best_pose_msg->set_sol_status(
54 ins_stat_msg->set_pos_type(0);
55 }
else if (ros_nav.status.status == 0) {
56 best_pose_msg->set_sol_status(
59 ins_stat_msg->set_pos_type(1);
60 }
else if (ros_nav.status.status == 1) {
61 best_pose_msg->set_sol_status(
64 ins_stat_msg->set_pos_type(2);
65 }
else if (ros_nav.status.status == 2) {
66 best_pose_msg->set_sol_status(
68 best_pose_msg->set_sol_type(
70 ins_stat_msg->set_pos_type(2);