美文网首页
Rosbag API的学习

Rosbag API的学习

作者: 阮明晨 | 来源:发表于2019-06-20 16:56 被阅读0次

    一、用Rosbag API来对bag文件进行解析。

    1.1bag文件的基本数据类型:

    1.1

    1.2用API对上图的信息进行提取显示

    所用的编译器为Qt5.9.3,环境为ubuntu16.04。

    1、boost::shared_ptr<rosbag::Bag> m_file;创建文件指针             

         m_file = boost::shared_ptr<rosbag::Bag>(new rosbag::Bag()); 指针指向类对象

         m_file->open(m_filePath, rosbag::bagmode::Read); 利用open函数打开bag文件,bagmode是枚举类型可以改变

        这个时候你就可以用m_file来做一些事情了。

    2、rosbag::View viewer(*m_file);创建类对象

         viewer.size();得到了1.1图中messages的值

         viewer.getConnections().size();获取Topic话题的总数,1.1图上是4个

         viewer.getConnections().at(num)->topic; string类型。可以获取指定索引的话题

         viewer.getConnections().at(num)->datatype;string类型。可以获取指定索引话题的类型

    特殊的:

          当你想获取指定索引话题的1.1图上msgs前面的数据时候你需要单独写一个类继承rosbag::View

    3、解析点云数据

       当解析的时候还需要这个创建 rosbag::View* m_view;

        m_view = new rosbag::View(*m_file, rosbag::TopicQuery("/kitti/velo/pointcloud"));

        rosbag::View::iterator iter;创建一个迭代器来显示不同数据帧的信息(一个话题有msgs这么多帧的信息)当用迭代器的时候需要初始化

        iter = m_view->begin();//迭代器初始化

        当你想读取下一帧的时候:  if(iter != m_view->end())  {      iter++;     }  

        但是在我这编译环境下迭代器是不能iter--的,所以我只能用一个计数器记录当前的帧数,往前查询的时候计数器--:iNum为计数器

    3.1

    利用图3.2代码进行解析

    3.2

    解析过后可以得到图3.3数据:

    3.3

    这个?id是我自己计算的。

    4、解析图像数据

    1、与解析点云数据不一样的地方有2

    第一点:迭代器的指向是不一样的:

    m_view = new rosbag::View(*m_file,rosbag::TopicQuery("/kitti/camera_color_left/image_raw"));

    iter = m_view->begin();

    第二点:具体解析的时候:

    5、写点云数据

    首先你需要创建一个bag文件:

    m_writebag = boost::shared_ptr<rosbag::Bag>(new rosbag::Bag()); 

     m_writebag->open(m_savePath, rosbag::bagmode::Write);

    m_writebag->write((*iter).getTopic(),(*iter).getTime(), (*iter));也是通过迭代器来写当前帧的数据

    这个操作和打开bag文件和相似,只是参数做了变更。

    6、我做的Demo的样子

    学完这些,如果你更想深入了解的话建议你去http://wiki.ros.org/rosbag/Code%20API 也就是Ros的官方网去进行学习。你也可以下载Zeal从里面下载Ros的API文档进行学习,这里面的东西非常的全面,并且可以搜索非常好!

    相关文章

      网友评论

          本文标题:Rosbag API的学习

          本文链接:https://www.haomeiwen.com/subject/zyhjqctx.html