env_ 是开放空间规划前对环境信息的存储 用来给MyEnvironment my_env;赋值

什么是CSV?

​ CSV 是一种以纯文本形式存储的表格数据,具体介绍如下(来自 维基百科 ):

逗号分隔值(Comma-Separated Values,CSV,有时也称为 字符分隔值 ,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。纯文本意味着该文件是一个字符序列,不含必须像二进制数字那样被解读的数据。CSV文件由任意数目的记录组成,记录间以某种换行符分隔;每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号或制表符。通常,所有记录都有完全相同的字段序列。

​ 简单的说,CSV 是一种通用的、相对简单的表格文件格式,最广泛的应用就是在不同程序之间转移表格数据。值得注意的是,CSV 并没有一种单一的、定义明确的格式(虽然有一个 RFC 4180 的定义),一般地,CSV 文件具有如下特征:

  • 纯文本,使用某个特定的字符集保存,例如 ASCII、Unicode 等
  • 由一条条记录组成,一般每一行代表一条记录
  • 每条记录被分隔符划分为不同的字段,最常见的分隔符是逗号,毕竟其中文名叫逗号分隔值:)
  • 每条记录相同的字段序列
  • 因为CSV 文件并没有一种单一的、定义明确的格式,因此下面的内容以最常见的格式为例,即逗号(,)分隔字段,换行符(\n)分隔记录。

    示例主要将一个 二维数组 存入到CSV文件中。

    #include <iostream>
    #include <fstream>
    #include <stdlib.h>
    using namespace std;
    int main()
    	int a[2][3] = { 1, 2, 3, 4, 1,2};
    	int lines, row, column;
    	lines = sizeof(a) / sizeof(a[0][0]);  // 数组数据总数
    	row = sizeof(a) / sizeof(a[0]);       // 行
    	column = lines / row;                 // 列
    	// 向csv文档中写入数据
        ofstream dataFile;
    	dataFile.open("test.csv", ios::out | ios::trunc);
        dataFile << "x"
    		 << std::endl;
    	for (int i = 0; i < row; i = i + 1)
    		for (int j = 0; j < column; j = j + 1)
    			dataFile << a[i][j] << ",";          // 写入数据
    		dataFile <<  endl;                       // 换行
    	dataFile.close();                            // 关闭文档
    

    输出结果:

    常见的CSV文件的分隔符是逗号(,),被分隔符分开的字段会位于不同的列。在上述语句中,x、y、z被分隔符分开,因此这个CSV文件共有3列,分别是x、y、z。

    CSV文件是由一条条记录组成的,常见划分不同记录的符号是换行符(\n)。在上述语句中,x、y、z 分别属于同一行上的不同三列,很显然,这条记录是表头。

    用Plotjuggler显示机器人路径

    保存机器人轨迹为CSV文件

    使用下面的示例代码来存储机器人的位置。存储其他数据也可以用类似的方法。

    #include <fstream>
    #include <ios>
    #include <iostream>
    #include <string>
    #include <vector>
    struct Pose
        double x;
        double y;
    void saveCvsFile(std::string file_name, std::vector<Pose> path)
        std::ofstream outfile;
        outfile.open(file_name.c_str(), std::ios::trunc);
        outfile << "x"
            << "yaw"
            << "num" << std::endl;
        int num_count = 0;
        for (int i = 0; i < path->size(); ++i)
            outfile << path->at(i).x << "," << path->at(i).y << ","  
                << path->at(i).yaw << "," << num_count << std::endl;
            num_count++;
        outfile.close();
    

    在plotjugger中显示路径:

    C语言读取写入CSV文件 [一]基础篇

    数据回放伴侣Rviz+plotjuggler

    我们向往远方,却忽略了此刻的美丽