このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
rosbagreader
説明
rosbagreader
オブジェクトは、rosbag 内のメッセージのインデックスです。これを使用して、rosbag からメッセージ データを抽出したり、特定の条件に基づいてメッセージを選択したり、メッセージ プロパティの時系列を作成したりできます。
作成
説明
はインデックス可能な bagreader
= rosbagreader(filepath
)rosbagreader
オブジェクト bagreader
を作成します。このオブジェクトには、入力パス filepath
の rosbag ログ ファイルから得られるすべてのメッセージが含まれます。入力引数 filepath
で FilePath プロパティを設定します。データにアクセスするには、readMessages
または timeseries
を呼び出して、関連データを抽出します。
プロパティ
FilePath
— rosbag ファイルの絶対パス
文字ベクトル
この プロパティ は読み取り専用です。
rosbag ファイルの絶対パス。文字ベクトルとして指定します。
データ型: char
StartTime
— 選択範囲にある最初のメッセージのタイムスタンプ
スカラー
この プロパティ は読み取り専用です。
選択内容にある最初のメッセージのタイムスタンプ。秒単位のスカラーとして指定します。
データ型: double
EndTime
— 選択範囲にある最後のメッセージのタイムスタンプ
スカラー
この プロパティ は読み取り専用です。
選択内容にある最後のメッセージのタイムスタンプ。秒単位のスカラーとして指定します。
データ型: double
NumMessages
— 選択範囲にあるメッセージ数
スカラー
この プロパティ は読み取り専用です。
選択内容にあるメッセージ数。スカラーとして指定します。rosbag をはじめて読み込むとき、このプロパティは rosbag 内のメッセージ数をもちます。select
でメッセージのサブセットを選択すると、このプロパティはこのサブセット内のメッセージ数を示します。
データ型: double
AvailableTopics
— 選択範囲にあるトピックの table
table
この プロパティ は読み取り専用です。
選択内容にあるトピックの table。table として指定します。table の各行は、1 つのトピック、このトピックのメッセージ数、メッセージ タイプ、およびタイプの定義を示します。
データ型: table
AvailableFrames
— 使用可能な座標系のリスト
文字ベクトルの cell 配列
この プロパティ は読み取り専用です。
使用可能な座標系のリスト。文字ベクトルの cell 配列として指定します。座標系間の特定の変換が使用可能かどうかを確認するには canTransform
を、変換をクエリするには getTransform
を使用します。
データ型: cell
MessageList
— 選択範囲にあるメッセージのリスト
table
この プロパティ は読み取り専用です。
選択内容にあるメッセージのリスト。table として指定します。table の各行は、1 つのメッセージを示します。
データ型: table
オブジェクト関数
select | rosbag 内のメッセージのサブセットを選択 |
readMessages | rosbag からのメッセージの読み取り |
timeseries | 選択したメッセージ プロパティの時系列オブジェクトの作成 |
timetable | Create timetable for selected message properties in ROS bag file |
canTransform | 変換が使用可能かどうかを確認 |
getTransform | 2 つの座標系の間の変換を取得 |
例
rosbagreader
オブジェクトを使用した rosbag の選択の作成
rosbag ログ ファイルを読み込み、選択した条件に基づいて特定のメッセージを解析します。
rosbag ログ ファイルにあるすべてのメッセージの rosbagreader
オブジェクトを作成します。
bagMsgs = rosbagreader("ex_multiple_topics.bag")
bagMsgs = rosbagreader with properties: FilePath: '/tmp/Bdoc24a_2511836_3320146/tpd9b150c7/ros-ex26633229/ex_multiple_topics.bag' StartTime: 201.3400 EndTime: 321.3400 NumMessages: 36963 AvailableTopics: [4x3 table] AvailableFrames: {0x1 cell} MessageList: [36963x4 table]
メッセージのサブセットを、タイムスタンプとトピックに基づいて選択します。
bagMsgs2 = select(bagMsgs,... Time=[bagMsgs.StartTime bagMsgs.StartTime + 1],... Topic='/odom')
bagMsgs2 = rosbagreader with properties: FilePath: '/tmp/Bdoc24a_2511836_3320146/tpd9b150c7/ros-ex26633229/ex_multiple_topics.bag' StartTime: 201.3400 EndTime: 202.3200 NumMessages: 99 AvailableTopics: [1x3 table] AvailableFrames: {0x1 cell} MessageList: [99x4 table]
選択内容にあるメッセージを cell 配列として取得します。
msgs = readMessages(bagMsgs2)
msgs=99×1 cell array
{1x1 Odometry}
{1x1 Odometry}
{1x1 Odometry}
{1x1 Odometry}
{1x1 Odometry}
{1x1 Odometry}
{1x1 Odometry}
{1x1 Odometry}
{1x1 Odometry}
{1x1 Odometry}
{1x1 Odometry}
{1x1 Odometry}
{1x1 Odometry}
{1x1 Odometry}
{1x1 Odometry}
{1x1 Odometry}
⋮
特定のメッセージ プロパティを時系列として返します。
ts = timeseries(bagMsgs2,... 'Pose.Pose.Position.X', ... 'Twist.Twist.Angular.Y')
timeseries Timeseries contains duplicate times. Common Properties: Name: '/odom Properties' Time: [99x1 double] TimeInfo: tsdata.timemetadata Data: [99x2 double] DataInfo: tsdata.datametadata
"rosbagreader"
オブジェクトを使用した rosbag ファイルからの変換の取得
rosbag を読み込み、利用可能な座標系を確認することで、rosbag (.bag
) ファイルから変換を取得します。これらの座標系から、getTransform
を使用して、2 つの座標系の間の変換をクエリします。
rosbag を読み込みます。
bagMsgs = rosbagreader("ros_turtlesim.bag")
bagMsgs = rosbagreader with properties: FilePath: '/tmp/Bdoc24a_2511836_3360848/tpe1f56baf/ros-ex81142742/ros_turtlesim.bag' StartTime: 1.5040e+09 EndTime: 1.5040e+09 NumMessages: 6089 AvailableTopics: [6x3 table] AvailableFrames: {2x1 cell} MessageList: [6089x4 table]
使用可能な座標系のリストを取得します。
frames = bagMsgs.AvailableFrames
frames = 2x1 cell
{'turtle1'}
{'world' }
2 つの座標系の間の最新の変換を取得します。
tf = getTransform(bagMsgs,'world',frames{1})
tf = ROS TransformStamped message with properties: MessageType: 'geometry_msgs/TransformStamped' Header: [1x1 Header] Transform: [1x1 Transform] ChildFrameId: 'turtle1' Use showdetails to show the contents of the message
特定の時間に使用可能な変換をチェックし、その変換を取得します。canTransform
を使用して、変換が使用可能かどうかを確認します。rostime
を使用して時間を指定します。
tfTime = rostime(bagMsgs.StartTime + 1); if (canTransform(bagMsgs,'world',frames{1},tfTime)) tf2 = getTransform(bagMsgs,'world',frames{1},tfTime); end
バージョン履歴
R2021b で導入
参考
select
| readMessages
| timeseries
| canTransform
| getTransform
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)