Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

Nodes receive messages as serialized data buffers over sockets. Normally the client library deserializes that buffer, copying all the data fields from that buffer into some language-appropriate message object.

rosbag treats messages a bit differently. When it receives one, it skips the deserialization step and instead copies the data buffer to the end of the bag file it's writing. The bag file has a linear structure - it's basically all the serialized messages written out to disk sequentially.

Since rosbag writes all the data sequentially, no seeks (which negatively affect I/O performance) are required. So rosbag should be able to hit the max "buffer-to-disk" data transfer rate, which is typically around 1030 Mbits/sec.

Nodes receive messages as serialized data buffers over sockets. Normally the client library deserializes that buffer, copying all the data fields from that buffer into some language-appropriate message object.

rosbag treats messages a bit differently. When it receives one, it skips the deserialization step and instead copies the data buffer to the end of the bag file it's writing. The bag file has a linear structure - it's basically all the serialized messages written out to disk sequentially.sequentially. The current format is documented at http://www.ros.org/wiki/Bags/Format/2.0.

Since rosbag writes all the data sequentially, no seeks (which negatively affect I/O performance) are required. So rosbag should be able to hit the max "buffer-to-disk" data transfer rate, which is typically around 1030 Mbits/sec.