wordpress安裝詳解seo關鍵詞首頁排名代發(fā)
rosbag是用于錄制和回放 ROS 主題的一個工具集,實現(xiàn)了數(shù)據(jù)的復用,方便調(diào)試和測試。rosbag本質(zhì)也是ros的節(jié)點,當錄制時,rosbag是一個訂閱節(jié)點,可以訂閱話題消息并將訂閱到的數(shù)據(jù)寫入磁盤文件;當重放時,rosbag是一個發(fā)布節(jié)點,可以讀取磁盤文件,發(fā)布文件中的話題消息。
1、通過命令行使用rosbag
1.1 錄制
rosbag record -a -O 目標文件
-a 錄制所有話題
-O 文件命名時不帶時間戳
若不想錄制所有的話題,可以不使用 -a ,而是將所需話題跟在后面。結(jié)束錄制使用 ctrl + c,在創(chuàng)建的目錄中會生成bag文件。
1.2 查看文件
rosbag info 文件名
1.3 回放文件
rosbag play 文件名
rosbag的 參數(shù)遠不止這些,可以通過 -h 進行查看。
2、通過編碼使用rosbag
通過編碼可以更加靈活的使用rosbag,下面通過rosbag實現(xiàn)文本的簡單讀寫。
2.1 寫bag
#include "ros/ros.h"
#include "rosbag/bag.h"
#include "std_msgs/String.h"
/*需求:使用rosbag向磁盤文件寫數(shù)據(jù)(話題+消息)流程:1、導包2、初始化3、創(chuàng)建rosbag對象4、打開文件流5、寫數(shù)據(jù)6、關閉文件流
*/
int main(int argc, char *argv[])
{/* code *///2、初始化setlocale(LC_ALL, "");ros::init(argc, argv,"rosbag_write");ros::NodeHandle nh;//3、創(chuàng)建rosbag對象rosbag::Bag bag;//4、打開文件流bag.open("test.bag",rosbag::BagMode::Write);//5、寫數(shù)據(jù)std_msgs::String msgs;msgs.data = "Come on! You are the best!";/*參數(shù)1:話題參數(shù)1:時間戳參數(shù)1:消息*/bag.write("/chatter",ros::Time::now(),msgs);//6、關閉數(shù)據(jù)流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、創(chuàng)建bag對象4、打開文件流5、讀數(shù)據(jù)6、關閉文件流
*/
int main(int argc, char *argv[])
{/* code *///2、初始化setlocale(LC_ALL, "");ros::init(argc, argv,"rosbag_read");ros::NodeHandle nh;//3、創(chuàng)建bag對象rosbag::Bag bag;//4、打開數(shù)據(jù)流bag.open("test.bag",rosbag::BagMode::Read);//5、讀數(shù)據(jù)//取出話題、時間戳和消息//先獲取消息的集合,再迭代取出消息的字段for (auto &&m : rosbag::View(bag)){//解析std::string topic = m.getTopic();ros::Time time = m.getTime();std_msgs::StringPtr p = m.instantiate<std_msgs::String>();ROS_INFO("話題:%s, 時間戳:%.2f, 消息:%s",topic.c_str(),time.toSec(),p->data.c_str());}//6、關閉bag.close();return 0;
}