rosbagwriter

Создайте и запишите журналы в rosbag файл журнала

    Описание

    Используйте rosbagwriter объект создать rosbag файл журнала и запись регистрирует к файлу сумки. Каждый журнал содержит тему, ее соответствующую метку времени и сообщение ROS.

    Создание

    Описание

    пример

    bagwriter = rosbagwriter(filepath) создает rosbag файл журнала в месте, заданном path и возвращает соответствующий rosbagwriter объект.

    Если вы не задаете имя файла сумки в filepath, объект присваивает текущую метку времени как имя файла. Если папки вы задаете в filepath не присутствуют в директории, объект создает их и помещает файл сумки соответственно. filepath входной параметр устанавливает свойство FilePath.

    пример

    bagwriter = rosbagwriter(___,Name,Value) устанавливает свойства Compression и ChunkSize с помощью аргументов name-value. Используйте этот синтаксис с входным параметром в предыдущем синтаксисе.

    Свойства

    развернуть все

    Это свойство доступно только для чтения.

    Путь к rosbag файлу в виде вектора символов.

    Типы данных: char

    Это свойство доступно только для чтения.

    Метка времени первого сообщения, записанного в файл сумки в виде скаляра в секундах.

    Типы данных: double

    Это свойство доступно только для чтения.

    Метка времени последнего сообщения, записанного в файл сумки в виде скаляра в секундах.

    Типы данных: double

    Это свойство доступно только для чтения.

    Количество сообщений, записанных в файл сумки в виде скаляра.

    Типы данных: double

    Формат сжатия сообщения разделяет на блоки в виде "bz2", "lz4", или "uncompressed".

    Пример: "Compression","lz4"

    Типы данных: char | string

    Размер каждого сообщения разделяет на блоки в виде ненулевого положительного целого числа в байтах. Значение задает буфер в объекте файла сумки. Сокращение этого значения приводит к большему количеству записей к диску.

    Пример: "ChunkSize",819200

    Типы данных: double

    Это свойство доступно только для чтения.

    Текущий размер файла сумки в виде неотрицательного целого числа в байтах.

    Типы данных: double

    Функции объекта

    writeЗапишите журналы в rosbag файл журнала
    deleteУдалите rosbag объект средства записи из памяти

    Примеры

    свернуть все

    Получите всю информацию из 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...'}
    
    

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

    Объекты

    Функции

    Введенный в R2021b