• ROS学习之C++读取txt点云并在rviz中显示


    在使用ROS中,会存在需要从本地读取坐标的情况,例如move_base的导航点坐标、PCL的点云坐标等。如何读取坐标并在程序中使用,这里简单记录:

    1、txt格式

    txt中记录的数据格式对下文的处理有一定影响,假设这里读取的是二维坐标点,txt文本中每一行存放两个数值,第一个为x坐标,另外一个为y方向坐标。如果三维的话后面增加z方向坐标。中间用空格分开。
    在这里插入图片描述
    这里简单一点就设置了四个点。

    2、读取txt文本

    C++读取txt文本其实也不算难,稍微查一下资料基本也能找到,网上的代码形形色色,能理解就行。这里就简单的写一下我个人使用的代码:

    void AreaPoint::addpeak()
    {
        ifstream fin;  
        fin.open("/home/你的路径/point.txt");
        string linestr;
        Vec2f temp;
        while (getline(fin, linestr))
    	{
            std::stringstream ss(linestr);
            ss >> temp[0];
            ss >> temp[1];
            areapeak.push_back(temp);
        }
        fin.close();    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    areapeak是全局变量定义在public中,这是一个vector< Vec2f >格式的变量,里面正好可以存储一系列的二维坐标点,如果用于别的处理这里也可以改成别的格式,例如pointcloud等。剩下的都在该函数中处理即可。

    3、使用txt文本中的点在rviz中画直线

    使用之前的Mark函数即可在rviz中显示从txt中加载的点构成的封闭区域
    在这里插入图片描述
    可以看出这是一个4X4的矩形,跟最开始写在txt文件中的顶点是相对应的。

    4、小结

    关于在ROS中或者在C++中调用txt文件的情况还是挺多的,需要注意的是读取是数据的处理问题,在txt文件的读取过程中只要将对应的数据存储到对应的容器中就行,以便于我们后期处理。

    这个小实验的代码在:

    https://download.csdn.net/download/YiYeZhiNian/86404800?spm=1001.2014.3001.5501
    
    • 1
  • 相关阅读:
    Python中的进程池及进程池锁:multiprocessing.Pool及multiprocessing.Manager().Lock()
    C语言双向链表
    ArduPilot开源飞控之RC_Channels
    微信小程序基础加强总结
    Spring底层架构核心概念解析
    获取当前OA地址JSP处理判断逻辑
    Vue基础入门教程(vue2)
    【Jupyter】远程连接Jupyter服务器
    抖音矩阵系统源码,抖音矩阵系统定制独立部署,lucky。
    XSS漏洞
  • 原文地址:https://blog.csdn.net/YiYeZhiNian/article/details/126254700