In short: ROS sends messages, so a listener node listens to these specific messages. That listener is written in Python and that makes it easy to use the Cython bindings. The listener puts segments into a ringbuffer (HAL). Then an interpolator component interpolates the positions so we get a correct position every ms. The reason for that is that ROS has no isochronous segments.