1. 程式人生 > >ROS學習篇(七)rostopic訊息記錄、回放、轉.txt

ROS學習篇(七)rostopic訊息記錄、回放、轉.txt

一、通過bag檔案記錄話題訊息

當釋出話題的節點執行後,可以通過rostopic list 列出當前執行的話題,然後記錄:

mkdir bagfile
cd bagfile
rosbag record -a  #記錄所有的話題

當訊息記錄完成後,結束ctrl+c終止record的命令列,在新建的bagfile檔案中會生成年-月-日-時-分-秒.bag檔案。

二、資料重現

我們使用rosbag命令將資料記錄在bag檔案之後,還可以利用裡面的資料重現我們節點的執行狀態。

cd bagfile
rosbag info <file_name>

會顯示此bag檔案的一些詳細資訊(如下圖):
這裡寫圖片描述


回放

cd bagfile
rosbag play <bagfile_name>

預設情況下,rosbag play命令會等待0.2秒之後才開始釋出資訊,這是為了在釋出資訊之前通知所有訂閱資訊的節點,以使它們能夠及時地接收到rosbag play釋出的資訊。這個等待時間可以用-d選項指定。

因為rosbag record記錄資料是有延遲的,所以在執行rosbag play最初的一小段時間裡訊息不會發布,使用-s選項後跟秒數可以跳過bag檔案記錄的前幾秒。

-r,它可以改變資訊釋出的速度:

rosbag play -r 2 <bagfile_name>   #以兩倍的速度釋出記錄的訊息

三、選定話題記錄

在一個包含數百個話題的大型系統中,經常會發布諸如影象等的大量的資訊,把它們都記錄到一個檔案裡是不現實的,好在rosbag record命令提供了僅記錄部分話題的能力。

rosbag record -O subset /turtle1/cmd_vel /turtle1/pose

-O選項指定了我們要儲存的bag檔案的名字(subset.bag),後面的/turtle1/cmd_vel/turtle1/pose則指定了我們要記錄資訊的話題。

注:rosbag record/play無法完美重現系統的狀態。

四、.bag檔案轉.txt

file_name.bag檔案中topic_name

話題的訊息轉換到Txt_name.txt檔案中:

rostopic echo -b file_name.bag -p /topic_name > Txt_name.txt

五、.bag檔案生成失敗,只出現.bag.active檔案

根據目前的經驗,出現這情況是因為電腦在記錄訊息時卡掉了,沒有完成最終的錄製。可以轉換成.bag檔案,但是訊息有丟失(電腦卡掉後的話題內容)
恢復:

  • ①切換到”xxx.bag.active”檔案所在的目錄下;
  • ②命令列輸入“rosbag reindex xxx.bag.active”;
  • ③輸入”rosbag fix xxx.bag.active outfile_name.abg”;

注:
在第二步結束後,除了原來的以.bag.active為字尾的檔案之外,還會生成一個以.bag.org.active為字尾的檔案,注意該檔案只是中間檔案,第三部輸入的時候不要對該檔案進行修復。

在第三步結束之後,會生成正常的.bag檔案

六、使用rxplot畫時間趨勢曲線

在ROS系統中,標量資料可以根據訊息中提供的時間戳作為時間序列繪製圖形。
執行可以釋出話題的節點後,可以通過rostopic list檢視當前的釋出的話題,現在,我們不再去使用rostopic echo <topic>,而是通過rxplot命令就能夠看到隨時間變化的值的曲線。

rqt_plot /topic/data //單個話題,單個數據
rqt_plot /topic/x:y:z //單個話題,向量資料
rqt_plot /topic/x /topic/y /topic/z

或是先開啟GUI介面:

rosrun rqt_plot rqt_plot

這裡寫圖片描述
然後再topic中輸入想要觀測的話題就可以了。
但是當某個話題資料較多時,需要plot單個數據才會有曲線,或是根本不行。待進一步研究…

相關推薦

ROS學習rostopic訊息記錄.txt

一、通過bag檔案記錄話題訊息 當釋出話題的節點執行後,可以通過rostopic list 列出當前執行的話題,然後記錄: mkdir bagfile cd bagfile rosbag record -a #記錄所有的話題 當訊息記錄完成後,結束c

ROS學習ROS引數服務1

在任何機器人系統中,引數傳遞都是一個十分重要的功能,不論是感測器的設定,還是控制引數的調整,都需要留出方便的引數除錯介面,有的引數只在啟動程式啟動時更改,有的引數卻希望在執行時能夠被動態修改,在ROS中,可以通過引數服務來實現上面的想法。 首先熟悉一下rosp

ROS學習編寫簡單的Service和Client (Python)

一、寫一個伺服器(service)節點 首先我們得確保運行了之前的教程中的creating the AddTwoInts.srv教程。 進去工作空間中 roscd beginner_tutorials 在py指令碼資料夾scripts中新建add_t

C Primer Plus學習筆記- C 控制語句:分支和跳

prim class wid int 但是 count 跳轉 ++ idt if 語句: if 語句被稱為分支語句(branching statement)或選擇語句(selection statement) if 語句的通用形式: if (expression)

WPF and Silverlight 學習筆記:WPF佈局管理之StackPanelWrapPanelDockPanel

一、StackPanel StackPanel是以堆疊的方式顯示其中的控制元件 1、可以使用Orientation屬性更改堆疊的順序 Orientation="Vertical"       預設,由上到下顯示各控制元件。控制元件在未定義的前提下,寬度為StackPa

【筆記】最良心的計算幾何學習筆記

不一定 source spa hub 掃描 markdown 如何 urn 神奇 動態凸包 本文的github傳送門在這裏~ ====================================================================== 不會凸

Node學習入門:Connect自帶的中介軟體

本章內容 解析cookie、請求主體和查詢字串的中介軟體 實現Web程式核心功能的中介軟體 處理Web程式安全的中介軟體 提供靜態檔案服務的中介軟體 解析cookie、請求主體和查詢字串的中介軟體 常用

SODBASE CEP學習進階續:SODBASE CEP與Spark streaming整合-低延遲規則管理 與分散式快取整合

在實際大資料工作中,常常有實時監測資料庫變化或實時同步資料到大資料儲存,解決大資料實時分析的需求。同時,增量同步資料庫資料相比全量查詢也減少了網路頻寬消耗。本文以Mysql的bin-log到Kafka為例,使用Canal Server,通過SODBASE引擎不用寫程式就可以設定資料同步規則。

uC/OS 的訊息佇列——uC/OS學習筆記

1.訊息佇列的介紹     使用訊息佇列可在任務之間傳遞多條訊息。訊息佇列相當於訊息郵箱集合,一個郵箱只能在任務間傳遞一條訊息,而訊息佇列則可以傳遞多條訊息。訊息佇列由三部分組成:事件控制塊、訊息佇列和訊息。 2.訊息佇列的操作    a)建立訊息佇列:QSQCreate

WCF學習心得------訊息協定

第七章 訊息協定 7.1 訊息協定概述 通常情況下,在定義訊息的架構時只使用資料協定就足夠,但是有時需要精確控制如何將型別對映到通過網路傳輸的SOAP訊息。對於這種情況,通常解決方案是插入自定義的SOAP標頭。 此外還可以定義訊息頭和正文的安全屬性,通過確定是否對這些元素進

ROS學習筆記2:在ROS中使用OpenCV進行簡單的影象處理---程式碼實現

再上一篇blog中,筆者總結了ROS系統中使用OpenCV庫的進行簡單影象處理的原理、系統相關的設定和程式包的下載。在這篇部落格中,筆者將從程式碼層面介紹如何實現在ROS系統中讀取圖片,並使用OpenCV進行影象處理,在返回結果。 例項:從ROS中讀取圖象,轉換後將彩色圖象

SODBASE CEP學習進階續:SODBASE CEP與Spark streaming整合-低延遲規則管理

許多大資料平臺專案採用流式計算來處理實時資料,會涉及到一個環節:處理規則管理。因為使用者經常有自己配置資料處理規則或策略的需求。同時,維護人員來也有也有將規則提取出來的需求,方便變更和維護的需求。我們知道Spark streaming作為資料歸檔備份時吞吐量高,與Hadoo

設計模式學習總結適配器模式(Adapter)

實現接口 國外 手機 額外 sed ges program ebe 通過   適配器模式主要是通過適配器來實現接口的統一,如要實現國內手機在國外充電,則需要在不同的國家采用不同的適配器來進行兼容!   一、示例展示:   以下例子主要通過給筆記本電腦添加類似手機打電話和發短

linux操作系統基礎

多個 success centos mountd rpcbind ces 說明 目錄 發送 NFS服務(基於CentOS 7.0) NFS(Network File System),網絡文件系統,是linux與linux之間進行文件共享的服務,在NFS應用,本地NFS的客戶

mysql學習筆記—— MySQL內連接和外連接

聚集函數 信息 _id left tro 做了 學習 作用 group MySQL內連接(inner join on) MySQL的內連接使用inner join on,它的效果跟使用where是一樣的,如果聯結的是兩個表,那麽需要左右的條件或者說字段是

Spring 學習筆記—— 切入點表達式

service string 出現 targe || 參數 public 例如 語法   為了能夠靈活定義切入點位置,Spring AOP提供了多種切入點指示符。 execution———用來匹配執行方法的連接點   

EF學習筆記:讀取關聯數據

取數據 microsoft image zha 手動 模型 取數 foreach ret 總目錄:ASP.NET MVC5 及 EF6 學習筆記 - (目錄整理) 本篇參考原文鏈接:Reading Related Data 本章主要講述加載顯示關聯數據; 數據加載分為以下三

JavaScript學習日誌:表單腳本

prev 調用 don 表單 rip 如果 html image 集合 一,基礎知識 1,取得<form>元素引用的方式,常用的是通過id,其次可以通過document.forms可以取得頁面中所有的表單,在這個集合中,可以通過數值索引或name值來取得特定的表

Java語言基礎學習筆記

day tez lec mdk abd err .com mar mdm 烈7A茨諳9m繁5暗MChttp://www.zcool.com.cn/collection/ZMTg3NzE1Njg=.html 3馗iC蓖17握WM啦http://www.zcool.com.cn

python學習筆記函數

限制 指向 什麽 問題 www. img 值傳遞 在線的 comment 原鏈接:http://www.cnblogs.com/vamei/archive/2012/06/01/2529500.html#!comments 函數學習遇到了問題 1 #!/usr/bin/