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;