11 #ifndef READ_SIM_DATA_H
12 #define READ_SIM_DATA_H
20 #include <Eigen/Dense>
28 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
30 ReadSimData(std::vector<BufferEntryType>* data_out, std::shared_ptr<SensorAbsClass> sensor,
31 const std::string& file_path)
33 std::vector<std::string> expect_entry = {
34 "t",
"a_x",
"a_y",
"a_z",
"w_x",
"w_y",
"w_z",
"p_x",
"p_y",
"p_z",
"v_x",
"v_y",
35 "v_z",
"q_w",
"q_x",
"q_y",
"q_z",
"ba_x",
"ba_y",
"ba_z",
"bw_x",
"bw_y",
"bw_z",
41 unsigned long number_of_datapoints = csv_data[
"t"].size();
42 data_out->resize(number_of_datapoints);
46 for (
size_t k = 0; k < number_of_datapoints; k++)
48 Time time = csv_data[
"t"][k];
50 Eigen::Vector3d w_imu(csv_data[
"w_x"][k], csv_data[
"w_y"][k], csv_data[
"w_z"][k]);
51 Eigen::Vector3d a_imu(csv_data[
"a_x"][k], csv_data[
"a_y"][k], csv_data[
"a_z"][k]);
52 Eigen::Vector3d p(csv_data[
"p_x"][k], csv_data[
"p_y"][k], csv_data[
"p_z"][k]);
53 Eigen::Vector3d v(csv_data[
"v_x"][k], csv_data[
"v_y"][k], csv_data[
"v_z"][k]);
54 Eigen::Quaterniond q(csv_data[
"q_w"][k], csv_data[
"q_x"][k], csv_data[
"q_y"][k], csv_data[
"q_z"][k]);
57 Eigen::Vector3d bGyr(csv_data[
"bw_x"][k], csv_data[
"bw_y"][k], csv_data[
"bw_z"][k]);
58 Eigen::Vector3d bAcc(csv_data[
"ba_x"][k], csv_data[
"ba_y"][k], csv_data[
"ba_z"][k]);
61 core_ground_truth.
p_wi_ = p;
62 core_ground_truth.
q_wi_ = q;
63 core_ground_truth.
v_wi_ = v;
64 core_ground_truth.
b_w_ = bGyr;
65 core_ground_truth.
b_a_ = bAcc;
70 data.
set_measurement(std::make_shared<IMUMeasurementType>(a_imu, w_imu));
73 data_out->at(k) = current_entry;
The BufferDataType binds the core and sensor state in form of a shared void pointer.
Definition: buffer_data_type.h:36
void set_measurement(std::shared_ptr< void > meas)
Definition: buffer_data_type.h:75
Definition: buffer_entry_type.h:41
Definition: core_state_type.h:21
Eigen::Vector3d v_wi_
Definition: core_state_type.h:28
Eigen::Vector3d b_a_
Definition: core_state_type.h:31
Eigen::Vector3d b_w_
Definition: core_state_type.h:30
Eigen::Vector3d p_wi_
Definition: core_state_type.h:27
Eigen::Quaternion< double > q_wi_
Definition: core_state_type.h:29
Definition: read_csv.h:30
Definition: read_sim_data.h:26
EIGEN_MAKE_ALIGNED_OPERATOR_NEW ReadSimData(std::vector< BufferEntryType > *data_out, std::shared_ptr< SensorAbsClass > sensor, const std::string &file_path)
Definition: read_sim_data.h:30
static Eigen::Quaterniond NormalizeQuaternion(const Eigen::Quaterniond &quat, std::string note="")
std::map< std::string, std::vector< double > > CsvDataType
Definition: read_csv.h:26