27 auto ros_imu_ptr = std::get<0>(in.
values);
28 auto& ros_imu = (*ros_imu_ptr);
30 auto imu_msg = std::get<0>(out.
values);
31 auto corrected_imu_msg = std::get<1>(out.
values);
35 double unix_msg_time =
36 ros_imu.header.stamp.sec + ros_imu.header.stamp.nanosec / 1e9;
37 imu_msg->mutable_header()->set_timestamp_sec(unix_msg_time);
38 imu_msg->mutable_header()->set_module_name(
"gnss");
40 imu_msg->set_measurement_time(unix_msg_time);
41 imu_msg->set_measurement_span(0.0);
42 imu_msg->mutable_linear_acceleration()->set_x(ros_imu.linear_acceleration.x);
43 imu_msg->mutable_linear_acceleration()->set_y(ros_imu.linear_acceleration.y);
44 imu_msg->mutable_linear_acceleration()->set_z(ros_imu.linear_acceleration.z);
45 imu_msg->mutable_angular_velocity()->set_x(ros_imu.angular_velocity.x);
46 imu_msg->mutable_angular_velocity()->set_y(ros_imu.angular_velocity.y);
47 imu_msg->mutable_angular_velocity()->set_z(ros_imu.angular_velocity.z);
49 corrected_imu_msg->mutable_header()->set_timestamp_sec(unix_msg_time);
50 corrected_imu_msg->mutable_header()->set_module_name(
"gnss");
51 corrected_imu_msg->mutable_imu()->mutable_linear_acceleration()->set_x(
52 ros_imu.linear_acceleration.x);
53 corrected_imu_msg->mutable_imu()->mutable_linear_acceleration()->set_y(
54 ros_imu.linear_acceleration.y);
55 corrected_imu_msg->mutable_imu()->mutable_linear_acceleration()->set_z(
56 ros_imu.linear_acceleration.z);
57 corrected_imu_msg->mutable_imu()->mutable_angular_velocity()->set_x(
58 ros_imu.angular_velocity.x);
59 corrected_imu_msg->mutable_imu()->mutable_angular_velocity()->set_y(
60 ros_imu.angular_velocity.y);
61 corrected_imu_msg->mutable_imu()->mutable_angular_velocity()->set_z(
62 ros_imu.angular_velocity.z);
64 double euler_angles[3];
66 quaternion[0] = ros_imu.orientation.x;
67 quaternion[1] = ros_imu.orientation.y;
68 quaternion[2] = ros_imu.orientation.z;
69 quaternion[3] = ros_imu.orientation.w;
73 corrected_imu_msg->mutable_imu()->mutable_euler_angles()->set_x(
75 corrected_imu_msg->mutable_imu()->mutable_euler_angles()->set_y(
77 corrected_imu_msg->mutable_imu()->mutable_euler_angles()->set_z(