主要内容

이번역페이지는최신내용을담고있지않습니다。최신내용을문으로보려면여기를클릭하십시오。

readMessages

Rosbag에서메시지읽기

R2019b이후

설명

예제

公司= readMessages (BagSelection객체 또는rosbagreader객체의모든메시지에서데이터를반환합니다。메시지는메시지로구성된셀형배열로반환됩니다。BagSelection객체를가져오려면rosbag함수를사용합니다。

예제

公司= readMessages (로지정된행의메시지에서데이터를반환합니다。행의범위는[1,袋里。NumMessages]입니다。

예제

公司= readMessages (___“DataFormat”格式)은위에나와있는입력인수세트중하나를사용하여구조체로구성된셀형배열이나메시지객체로구성된셀형배열로데이터를반환합니다。格式“结构”또는“对象”로지정합니다。

구조체를사용하면메시지객체를사용하는것보다훨씬빠를수있으며,rosgenmsg를사용하여메시지정의를불러오지않고도사용자지정메시지데이터를직접읽을수있습니다。

참고

향후릴리스에서ROS工具箱는ros메시지에대해객체대신메시지구조체를사용할예정입니다。

지금메시지구조체를사용하려면“DataFormat”이름-값通讯录수를“结构”로설정합니다。자세한내용은Ros메시지구조체항목을참조하십시오。

예제

모두 축소

Rosbag을읽고토픽과시간을기준으로필터링합니다。

Bagselect = rosbag(“ex_multiple_topics.bag”);Bagselect2 = select(bagselect,“时间”...[bagselect。StartTime bagselect。开始时间+ 1],“主题”' /奥多姆');

모든메시지를셀형배열로반환합니다。

allMsgs = readMessages(bagselect2);

처음10개의메시지를셀형배열로반환합니다。

firstMsgs = readMessages(bagselect2,1:10);

Rosbag을불러옵니다。

袋子= rosbag(“ros_turtlesim.bag”);

특정토픽을선택합니다。

bSel = select(包,“主题”“turtle1 /姿势”);

메시지를구조체로읽습니다。메시지를읽을때DataFormat이름-값쌍을지정합니다。반환된구조체의셀형배열에서첫번째구조체를검사합니다。

msgStructs = readMessages(bSel,“DataFormat”“结构”);msgStructs {1}
ans =带字段的结构:MessageType: 'turtlesim/Pose' X: 5.5016 Y: 6.3965 Theta: 4.5377线性速度:1角速度:0

메시지에서xy점을추출하고로봇궤적을플로팅합니다。

구조체에서모든X필드와Y필드를추출하기위해cellfun을사용합니다。이필드는rosbag을기록할동의로봇의xy위치를나타냅니다。

xPoints = cellfun(@(m) double(m.X),msgStructs);yPoints = cellfun(@(m) double(m.Y),msgStructs);情节(xPoints yPoints)

图中包含一个轴对象。axis对象包含一个line类型的对象。

Rosbag로그파일을불러오고선택기준에따라특정메시지를구문분석합니다。

Rosbag로그파일에있는모든메시지의rosbagreader객체를만듭니다。

bagMsgs = rosbagreader(“ros_multi_topics.bag”
FilePath: '/mathworks/devel/bat/Bdoc22b/build/matlab/toolbox/robotics/robotexamples/ros/data/bags/ros_multi_topics. properties: /mathworks/devel/bat/Bdoc22b/build/matlab/toolbox/robotics/robotexamples/ros/data/bags/ros_multi_topics. properties:bag' StartTime: 201.3400 EndTime: 321.3400 NumMessages: 36963 AvailableTopics: [4x3 table] AvailableFrames: {0x1 cell} MessageList: [36963x4 table]

타임스탬프와토픽을기준으로메시지의일부를선택합니다。

bagMsgs2 = select(bagMsgs,...时间= [bagMsgs。StartTime bagMsgs。开始时间+ 1],...主题=' /奥多姆'
FilePath: '/mathworks/devel/bat/Bdoc22b/build/matlab/toolbox/robotics/robotexamples/ros/data/bags/ros_multi_topics. 'bag' StartTime: 201.3400 EndTime: 202.3200 NumMessages: 99 AvailableTopics: [1x3 table] AvailableFrames: {0x1 cell} MessageList: [99x4 table]

선택한부분에서셀형배열로메시지를가져옵니다。

msgs = readMessages(bagMsgs2)
公司=99×1单元格数组{1 x1测程法}{1 x1测程法}{1 x1测程法}{1 x1测程法}{1 x1测程法}{1 x1测程法}{1 x1测程法}{1 x1测程法}{1 x1测程法}{1 x1测程法}{1 x1测程法}{1 x1测程法}{1 x1测程法}{1 x1测程法}{1 x1测程法}{1 x1测程法}⋮

특정메시지속성을시계열로반환합니다。

ts = timeseries(bagMsgs2,...“Pose.Pose.Position.X”...“Twist.Twist.Angular.Y”
timeseries timeseries包含重复的时间。Common Properties: Name: '/odom Properties' Time: [99x1 double] TimeInfo: tsdata。timemetadata Data: [99x2 double] DataInfo: tsdata.datametadata

입력marketing수

모두 축소

Rosbag의메시지덱스로,BagSelection객체 또는rosbagreader객체로지정됩니다。

BagSelection객체 또는rosbagreader객체의행으로,。여기서n은메시지를가져올행의개수입니다。벡터의각소는包의번호가매겨진메시지에해당합니다。행의범위는[1,袋里。NumMessage]입니다。

출력marketing수

모두 축소

ROS메시지데이터로,객체로반환되거나메시지객체로구성된셀형배열또는구조체로구성된셀형배열로반환됩니다。데이터는rosbag을사용하여만들어진BagSelection객체 또는rosbagreader객체에서가져옵니다。

메시지를구조체로구성된셀형배열로가져오려면rosbag함수에서“DataFormat”、“结构”를지정해야합니다。구조체를사용하면메시지객체를사용하는것보다훨씬빠를수있으며,rosgenmsg를사용하여메시지정의를불러오지않고도사용자지정메시지데이터를직접읽을수있습니다。

버전 내역

R2019b에개발됨

모두 확장

Baidu
map