电子商务网站的建设 论文,wordpress能仿站吗,手机网站模版php源码,前端做学校网站教务rosbag是用于录制和回放 ROS 主题的一个工具集#xff0c;实现了数据的复用#xff0c;方便调试和测试。rosbag本质也是ros的节点#xff0c;当录制时#xff0c;rosbag是一个订阅节点#xff0c;可以订阅话题消息并将订阅到的数据写入磁盘文件#xff1b;当重放时#…rosbag是用于录制和回放 ROS 主题的一个工具集实现了数据的复用方便调试和测试。rosbag本质也是ros的节点当录制时rosbag是一个订阅节点可以订阅话题消息并将订阅到的数据写入磁盘文件当重放时rosbag是一个发布节点可以读取磁盘文件发布文件中的话题消息。
1、通过命令行使用rosbag
1.1 录制
rosbag record -a -O 目标文件 -a 录制所有话题 -O 文件命名时不带时间戳 若不想录制所有的话题可以不使用 -a 而是将所需话题跟在后面。结束录制使用 ctrl c在创建的目录中会生成bag文件。
1.2 查看文件
rosbag info 文件名
1.3 回放文件
rosbag play 文件名
rosbag的 参数远不止这些可以通过 -h 进行查看。
2、通过编码使用rosbag
通过编码可以更加灵活的使用rosbag下面通过rosbag实现文本的简单读写。
2.1 写bag
#include ros/ros.h
#include rosbag/bag.h
#include std_msgs/String.h
/*需求使用rosbag向磁盘文件写数据话题消息流程1、导包2、初始化3、创建rosbag对象4、打开文件流5、写数据6、关闭文件流
*/
int main(int argc, char *argv[])
{/* code *///2、初始化setlocale(LC_ALL, );ros::init(argc, argv,rosbag_write);ros::NodeHandle nh;//3、创建rosbag对象rosbag::Bag bag;//4、打开文件流bag.open(test.bag,rosbag::BagMode::Write);//5、写数据std_msgs::String msgs;msgs.data Come on! You are the best!;/*参数1话题参数1时间戳参数1消息*/bag.write(/chatter,ros::Time::now(),msgs);//6、关闭数据流bag.close();return 0;
}2.2 读bag
#include ros/ros.h
#include rosbag/bag.h
#include rosbag/view.h
#include std_msgs/String.h
/*需求使用rosbag读取磁盘上的bag文件流程1、导包2、初始化3、创建bag对象4、打开文件流5、读数据6、关闭文件流
*/
int main(int argc, char *argv[])
{/* code *///2、初始化setlocale(LC_ALL, );ros::init(argc, argv,rosbag_read);ros::NodeHandle nh;//3、创建bag对象rosbag::Bag bag;//4、打开数据流bag.open(test.bag,rosbag::BagMode::Read);//5、读数据//取出话题、时间戳和消息//先获取消息的集合再迭代取出消息的字段for (auto m : rosbag::View(bag)){//解析std::string topic m.getTopic();ros::Time time m.getTime();std_msgs::StringPtr p m.instantiatestd_msgs::String();ROS_INFO(话题%s, 时间戳%.2f, 消息%s,topic.c_str(),time.toSec(),p-data.c_str());}//6、关闭bag.close();return 0;
}