23 using namespace gtsam;
31 (
Vector(3) << 0.0001, 0.0001, 0.0001).finished());
34 (
Vector(3) << 1.0 / 30.0, 1.0 / 30.0, 1.0 / 100.0).finished());
41 std::vector<std::string>
readLine(
const std::string& line,
42 const std::string& delimiter =
" ")
const {
43 std::vector<std::string> parts;
45 auto end = line.find(delimiter);
46 while (
end != std::string::npos) {
47 parts.push_back(line.substr(start,
end - start));
48 start =
end + delimiter.length();
49 end = line.find(delimiter, start);
57 std::cerr <<
"Failed to open file: " <<
filename << std::endl;
62 std::pair<std::vector<Pose2>, std::pair<size_t, size_t>>
parseLine(
63 const std::string& line)
const {
64 std::vector<std::string> parts = readLine(line);
66 size_t keyS = stoi(parts[1]);
67 size_t keyT = stoi(parts[3]);
69 int numMeasurements = stoi(parts[5]);
70 std::vector<Pose2> poseArray(numMeasurements);
71 for (
int i = 0;
i < numMeasurements; ++
i) {
72 double x = stod(parts[6 + 3 *
i]);
73 double y = stod(parts[7 + 3 *
i]);
74 double rad = stod(parts[8 + 3 *
i]);
77 return {poseArray, {keyS, keyT}};
81 bool next(std::vector<Pose2>* poseArray, std::pair<size_t, size_t>*
keys) {
83 if (getline(in_, line)) {
84 std::tie(*poseArray, *
keys) = parseLine(line);
99 const std::string&
filename =
"Hybrid_city10000.txt") {
100 std::ofstream outfile;
103 for (
size_t i = 0;
i < numPoses; ++
i) {
105 outfile << outPose.
x() <<
" " << outPose.
y() <<
" " << outPose.
theta()
109 std::cout <<
"Output written to " <<
filename << std::endl;