• 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
  • 相关阅读:
    房屋租赁管理系统的设计与实现
    一文揭秘育碧等传统游戏大厂的NFT策略
    Oracle存储过程中游标cursor、loop、for循环的用法
    AI音乐大模型:是创意的助力还是产业的挑战?
    分公司未经授权对外签订合同是否可以
    4.有霍尔BLDC电机启动及堵转检测
    RabbitMQ 消息应答与发布
    分布式数据库难题(四):单机事务
    树莓派4B部署Yolov5深度学习模型
    大佬的职场经验
  • 原文地址:https://blog.csdn.net/YiYeZhiNian/article/details/126254700