Запишите журналы в rosbag файл журнала
rosbagwriter
ОбъектПолучите всю информацию из 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
rosbagwriter
ОбъектСоздайте 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...'}
bagwriter
— Средство записи файла журнала ROSrosbagwriter
объектСредство записи файла журнала ROS в виде rosbagwriter
объект.
topic
— Название темы ROSНазвание темы ROS в виде строкового скаляра, вектора символов, массива ячеек строковых скаляров или массива ячеек из символьных векторов. Задайте несколько названий темы при помощи массива ячеек.
Пример: "/odom"
Пример: {"/odom","cmd_vel"}
timestamp
— Метка времени сообщения ROSTime
указатель на объект | числовой скаляр | структура | массив ячеек Time
указатели на объект | массив ячеек числовых скаляров | массив ячеек структурМетка времени ROS обменивается сообщениями в виде Time
указатель на объект, числовой скаляр, структура, массив ячеек Time
указатели на объект, массив ячеек числовых скаляров или массив ячеек структур. Задайте несколько меток времени при помощи массива ячеек. Создайте Time
объект с помощью rostime
.
Пример: 1625559291
Пример: rostime("now")
Пример: rostime("now","DataFormat","struct")
Пример: {1625559291,1625559292}
Пример: {rostime("now"),rostime("now")+1}
message
— Сообщение ROSMessage
указатель на объект | структура | массив ячеек Message
указатели на объект | массив ячеек структурСообщение ROS в виде Message
указатель на объект, структура, массив ячеек Message
указатели на объект или массив ячеек структур. Задайте несколько сообщений при помощи массива ячеек. Создайте Message
объектное использование rosmessage
.
Пример: rosmessage("nav_msgs/Odometry")
Пример: rosmessage("nav_msgs/Odometry","DataFormat","struct")
Пример: {rosmessage("nav_msgs/Odometry"),rosmessage("geometry_msgs/Twist")}
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.