mars_lib 0.1.0.2abe2576fe7f
Modular and Robust Sensor-Fusion
Loading...
Searching...
No Matches
Public Member Functions | List of all members
mars::ReadSimData Class Reference

#include </home/runner/work/mars_lib/mars_lib/source/mars/include/mars/data_utils/read_sim_data.h>

+ Collaboration diagram for mars::ReadSimData:

Public Member Functions

EIGEN_MAKE_ALIGNED_OPERATOR_NEW ReadSimData (std::vector< BufferEntryType > *data_out, std::shared_ptr< SensorAbsClass > sensor, const std::string &file_path)
 

Constructor & Destructor Documentation

◆ ReadSimData()

EIGEN_MAKE_ALIGNED_OPERATOR_NEW mars::ReadSimData::ReadSimData ( std::vector< BufferEntryType > *  data_out,
std::shared_ptr< SensorAbsClass sensor,
const std::string &  file_path 
)
inline
32 {
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",
36 };
37
38 CsvDataType csv_data;
39 ReadCsv(&csv_data, file_path);
40
41 unsigned long number_of_datapoints = csv_data["t"].size();
42 data_out->resize(number_of_datapoints);
43
44 CoreStateType core_ground_truth;
45
46 for (size_t k = 0; k < number_of_datapoints; k++)
47 {
48 Time time = csv_data["t"][k];
49
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]);
55 q = Utils::NormalizeQuaternion(q, "sim csv reader");
56
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]);
59
60 CoreStateType core_ground_truth;
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;
66
67 BufferDataType data;
68 // TODO
69 // data.set_core_state(std::make_shared<CoreStateType>(core_ground_truth));
70 data.set_measurement(std::make_shared<IMUMeasurementType>(a_imu, w_imu));
71
72 BufferEntryType current_entry(time, data, sensor);
73 data_out->at(k) = current_entry;
74 }
75 }
static Eigen::Quaterniond NormalizeQuaternion(const Eigen::Quaterniond &quat, std::string note="")
std::map< std::string, std::vector< double > > CsvDataType
Definition read_csv.h:26
+ Here is the call graph for this function:

The documentation for this class was generated from the following file: