A simple bag/live topic player for ROS2. It is intended to be used for remote monitoring of robot operation.
The basic mechanism of bagtube is republishing of live/bag topics to new topics on demand, so that a remote communication protocol (e.g. Zenoh) can be configured to stream only the new topics, sparing the bandwidth during periods when robot activity is of no interest for the user.
- Livestreaming ROS2 topics on demand (i.e. toggling republish on/off) via
enable_livestreamservice - Recording bags via
record_bagaction - Calling additional
SetBoolservices on start/stop of recording/livestreaming (specified viatoggle_input_nodes_running_servicesparameter, see example config) - Listing recorded bags via
get_bag_listservice - Editing bag name and deleting bags via
edit_bagservice - Limiting total used storage via
max_total_size_gbparameter - Playback via
play_bagaction - Playback control via
control_playbackservice (play/pause/seek/set_rate) - Sending preview snapshots after each seek (optional if
snapshot_bag_stampis specified incontrol_playbackservice)
The client is a simple RViz2 panel as an example of controlling bagtube server. It is basically a "video player/recorder" for ROS2 topics.

Installation:
sudo apt install ros-iron-ros-base ros-iron-rviz2 ros-iron-demo-nodes-cpp ros-iron-usb-cam
cd ~/my_ws/
. /opt/ros/iron/setup.bash
colcon build --symlink-installRunning server and rviz2 with bagtube panel example:
. ~/my_ws/install/setup.bash
ros2 launch bagtube chatter_camera.launch.pyNote: the annoying 'Hello world' logging node is just an example that bagtube is not only a video player, but it can be configured for any number of topics of any types (see config). You can see the streamed messages (during livestream/playback) via:
. /opt/ros/iron/setup.bash
ros2 topic echo /chatter_stream