write

Запишите журналы в rosbag файл журнала

    Описание

    пример

    write(bagwriter,topic,timestamp,message) пишут сингл или несколько журналов к rosbag файлу журнала. Журнал содержит тему, ее соответствующую метку времени и сообщение ROS.

    Примеры

    свернуть все

    Получите всю информацию из rosbag файла журнала.

    rosbag('info','path_record.bag')
    Path:     /tmp/BR2021bd_1751886_255755/mlx_to_docbook7/tp95a72b0e/ros-ex73035957/path_record.bag
    Version:  2.0
    Duration: 10.5s
    Start:    Jul 05 2021 08:09:52.86 (1625486992.86)
    End:      Jul 05 2021 08:10:03.40 (1625487003.40)
    Size:     13.3 KB
    Messages: 102
    Types:    geometry_msgs/Point [4a842b65f413084dc2b10fb484ea7f17]
    Topics:   /circle  51 msgs  : geometry_msgs/Point
              /line    51 msgs  : geometry_msgs/Point
    

    Создайте rosbagreader объект всех сообщений в rosbag файле журнала.

    reader = rosbagreader('path_record.bag');

    Выберите все сообщения, связанные с темой '/circle'.

    bagSelCircle = select(reader,'Topic','/circle');

    Получите список меток времени от темы.

    timeStamps = bagSelCircle.MessageList.Time;

    Получите сообщения в выборе как массив ячеек.

    messages = readMessages(bagSelCircle);

    Создайте rosbagwriter возразите, чтобы записать сообщения в новый rosbag файл.

    circleWriter = rosbagwriter('circular_path_record.bag');

    Запишите все сообщения, связанные с темой '/circle' к новому rosbag файлу.

    write(circleWriter,'/circle',timeStamps,messages);

    Удалите rosbagwriter объект из памяти и ясный связанный объект.

    delete(circleWriter)
    clear circleWriter

    Получите всю информацию из нового rosbag файла журнала.

    rosbag('info','circular_path_record.bag')
    Path:     /tmp/BR2021bd_1751886_255755/mlx_to_docbook7/tp95a72b0e/ros-ex73035957/circular_path_record.bag
    Version:  2.0
    Duration: 10.4s
    Start:    Jul 05 2021 08:09:52.86 (1625486992.86)
    End:      Jul 05 2021 08:10:03.29 (1625487003.29)
    Size:     8.8 KB
    Messages: 51
    Types:    geometry_msgs/Point [4a842b65f413084dc2b10fb484ea7f17]
    Topics:   /circle  51 msgs  : geometry_msgs/Point
    

    Загрузите новый rosbag файл журнала.

    readerCircle = rosbagreader('circular_path_record.bag');

    Создайте временные ряды для координат.

    tsCircle = timeseries(readerCircle,'X','Y');

    Постройте координаты.

    plot(tsCircle.Data(:,1),tsCircle.Data(:,2))
    axis equal

    Figure contains an axes object. The axes object contains an object of type line.

    Создайте rosbagwriter возразите и rosbag файл в текущей рабочей директории. Задайте формат сжатия фрагментов сообщения и размер каждого фрагмента сообщения.

    bagwriter = rosbagwriter("bagfile.bag", ...
        "Compression","lz4",...
        "ChunkSize",1500)
    bagwriter = 
      rosbagwriter with properties:
    
           FilePath: '/tmp/BR2021bd_1751886_255755/mlx_to_docbook2/tpddfbd76c/ros-ex26181333/bagfile.bag'         
          StartTime: 0                                                                                            
            EndTime: 0                                                                                            
        NumMessages: 0                                                                                            
        Compression: 'lz4'                                                                                        
          ChunkSize: 1500                                                                                    Bytes
           FileSize: 4117                                                                                    Bytes
    
    

    Запустите узел и подключение к ведущему устройству ROS.

    rosinit
    Launching ROS Core...
    Done in 0.65801 seconds.
    Initializing ROS master on http://192.168.0.10:60864.
    Initializing global node /matlab_global_node_84052 with NodeURI http://bat6312glnxa64:32879/
    

    Запишите один журнал в rosbag файл.

    timeStamp = rostime("now");
    rosMessage = rosmessage("nav_msgs/Odometry");
    write(bagwriter,"/odom",timeStamp,rosMessage);
    bagwriter
    bagwriter = 
      rosbagwriter with properties:
    
           FilePath: '/tmp/BR2021bd_1751886_255755/mlx_to_docbook2/tpddfbd76c/ros-ex26181333/bagfile.bag'         
          StartTime: 1.6299e+09                                                                                   
            EndTime: 1.6299e+09                                                                                   
        NumMessages: 1                                                                                            
        Compression: 'lz4'                                                                                        
          ChunkSize: 1500                                                                                    Bytes
           FileSize: 4172                                                                                    Bytes
    
    

    Закройте сеть ROS.

    rosshutdown
    Shutting down global node /matlab_global_node_84052 with NodeURI http://bat6312glnxa64:32879/
    Shutting down ROS master on http://192.168.0.10:60864.
    

    Удалите rosbag объект средства записи из памяти и очистите связанный объект.

    delete(bagwriter)
    clear bagwriter

    Создайте rosbagreader возразите и загрузите все сообщения в rosbag файле журнала. Проверьте недавно записанный журнал.

    bagreader = rosbagreader('bagfile.bag')
    bagreader = 
      rosbagreader with properties:
    
               FilePath: '/tmp/BR2021bd_1751886_255755/mlx_to_docbook2/tpddfbd76c/ros-ex26181333/bagfile.bag'
              StartTime: 1.6299e+09
                EndTime: 1.6299e+09
            NumMessages: 1
        AvailableTopics: [1x3 table]
        AvailableFrames: {0x1 cell}
            MessageList: [1x4 table]
    
    
    bagreader.AvailableTopics
    ans=1×3 table
                 NumMessages       MessageType        MessageDefinition 
                 ___________    _________________    ___________________
    
        /odom         1         nav_msgs/Odometry    {'  uint32 Seq...'}
    
    

    Входные параметры

    свернуть все

    Средство записи файла журнала ROS в виде rosbagwriter объект.

    Название темы ROS в виде строкового скаляра, вектора символов, массива ячеек строковых скаляров или массива ячеек из символьных векторов. Задайте несколько названий темы при помощи массива ячеек.

    Пример: "/odom"

    Пример: {"/odom","cmd_vel"}

    Метка времени ROS обменивается сообщениями в виде Time указатель на объект, числовой скаляр, структура, массив ячеек Time указатели на объект, массив ячеек числовых скаляров или массив ячеек структур. Задайте несколько меток времени при помощи массива ячеек. Создайте Time объект с помощью rostime.

    Пример: 1625559291

    Пример: rostime("now")

    Пример: rostime("now","DataFormat","struct")

    Пример: {1625559291,1625559292}

    Пример: {rostime("now"),rostime("now")+1}

    Сообщение ROS в виде Message указатель на объект, структура, массив ячеек Message указатели на объект или массив ячеек структур. Задайте несколько сообщений при помощи массива ячеек. Создайте Message объектное использование rosmessage.

    Пример: rosmessage("nav_msgs/Odometry")

    Пример: rosmessage("nav_msgs/Odometry","DataFormat","struct")

    Пример: {rosmessage("nav_msgs/Odometry"),rosmessage("geometry_msgs/Twist")}

    Смотрите также

    Объекты

    Функции

    Введенный в R2021b