주요 콘텐츠

select

rosbag에서 메시지의 일부 선택

R2021b 이후

    설명

    bagreadersel = select(bagreader)rosbagreader 객체 bagreader의 모든 메시지를 포함하는 rosbagreader 객체 bagreadersel을 반환합니다.

    이 함수는 rosbagreader 객체의 복사본을 만들거나 지정에 따라 선택된 메시지가 포함된 새 rosbagreader 객체를 반환합니다.

    bagreadersel = select(bagreader,Name=Value)는 하나 이상의 이름-값 인수를 사용하여 추가 파라미터를 지정합니다. 예를 들어 Topic="/odom"/odom 토픽별로 필터링하여 메시지의 일부를 선택합니다.

    예제

    예제

    모두 축소

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

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

    bagMsgs = rosbagreader("ex_multiple_topics.bag")
    bagMsgs = 
      rosbagreader with properties:
    
               FilePath: '/tmp/Bdoc25a_2974004_1599981/tp214450ba/ros-ex26633229/ex_multiple_topics.bag'
              StartTime: 201.3400
                EndTime: 321.3400
            NumMessages: 36963
        AvailableTopics: [4×3 table]
        AvailableFrames: {0×1 cell}
            MessageList: [36963×4 table]
    
    

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

    bagMsgs2 = select(bagMsgs,...
        Time=[bagMsgs.StartTime bagMsgs.StartTime + 1],...
        Topic='/odom')
    bagMsgs2 = 
      rosbagreader with properties:
    
               FilePath: '/tmp/Bdoc25a_2974004_1599981/tp214450ba/ros-ex26633229/ex_multiple_topics.bag'
              StartTime: 201.3400
                EndTime: 202.3200
            NumMessages: 99
        AvailableTopics: [1×3 table]
        AvailableFrames: {0×1 cell}
            MessageList: [99×4 table]
    
    

    선택한 부분의 메시지를 셀형 배열로 가져옵니다.

    msgs = readMessages(bagMsgs2)
    msgs=99×1 cell array
        {1×1 Odometry}
        {1×1 Odometry}
        {1×1 Odometry}
        {1×1 Odometry}
        {1×1 Odometry}
        {1×1 Odometry}
        {1×1 Odometry}
        {1×1 Odometry}
        {1×1 Odometry}
        {1×1 Odometry}
        {1×1 Odometry}
        {1×1 Odometry}
        {1×1 Odometry}
        {1×1 Odometry}
        {1×1 Odometry}
        {1×1 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: [1x1 tsdata.timemetadata]
                Data: [99x2 double]
            DataInfo: [1x1 tsdata.datametadata]
    
      More properties, Methods
    

    입력 인수

    모두 축소

    rosbag의 메시지 인덱스로, rosbagreader 객체로 지정됩니다.

    이름-값 인수

    모두 축소

    선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN으로 지정합니다. 여기서 Name은 인수 이름이고 Value는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.

    예: Topic="/odom"/odom 토픽별로 필터링하여 메시지의 일부를 선택합니다.

    ROS 메시지 유형으로, string형 스칼라, 문자형 벡터, 또는 string형 스칼라나 문자형 벡터로 구성된 셀형 배열로 지정됩니다. 셀형 배열을 사용하여 여러 메시지 유형을 지정합니다.

    예: select(bagreader,MessageType={"nav_msgs/Odometry","rosgraph_msgs/Clock"})

    데이터형: char | string | cell

    Rosbag 선택의 시작 시간과 종료 시간으로, n×2 벡터로 지정됩니다.

    예: select(bagreader,Time=[bag.StartTime,bag.StartTime+1])

    데이터형: double

    ROS 토픽 이름으로, string형 스칼라, 문자형 벡터, 또는 string형 스칼라나 문자형 벡터로 구성된 셀형 배열로 지정됩니다. 셀형 배열을 사용하여 여러 토픽 이름을 지정합니다.

    예: select(bagreader,Topic={"/odom","/clock"})

    데이터형: char | string | cell

    출력 인수

    모두 축소

    rosbag 메시지의 복사본 또는 일부로, rosbagreader 객체로 반환됩니다.

    버전 내역

    R2021b에 개발됨