Repository Summary
| Description | |
| Checkout URI | https://gitlab.com/jlack/data_tamer_tools.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-04-18 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| data_tamer_tools | 0.7.0 |
README
Data Tamer Tools
Tools for working with DataTamer data in ROS2, providing Foxglove integration and MCAP data storage capabilities.
Overview
This package provides five main tools:
- Foxglove Relay: Real-time visualization of DataTamer data and selected ROS message types through Foxglove Studio
- MCAP Sink: Store DataTamer data in MCAP (MessagePack) format for efficient storage and playback, with rotation hooks for regular and lifecycle ROS nodes
- MCAP Converter: Convert DataTamer-encoded MCAP files to Protobuf-encoded MCAP files for Foxglove compatibility
-
Rosout Logger: Record ROS log messages (
/rosout) to MCAP files with Foxglove Log schema - Log Rotation Coordinator: Synchronize log directory rotation across multiple MCAP loggers
Tools
1. Foxglove Relay (foxglove_relay)
A ROS2 component that bridges DataTamer data to Foxglove Studio for real-time visualization.
Features:
- Automatically discovers DataTamer topics (
/data_tamer/schema,/data_tamer/schemas,/data_tamer/snapshot) - Automatically discovers
sensor_msgs/msg/NavSatFixtopics and relays each source as its ownfoxglove.LocationFixchannel (Map track) - Automatically discovers
geographic_msgs/msg/GeoPathtopics and relays each source asfoxglove.GeoJSON(Map overlay) - Automatically discovers
sensor_msgs/msg/LaserScantopics and relays each source asfoxglove.LaserScan - Automatically discovers
visualization_msgs/msg/MarkerArraytopics and relays each source asfoxglove.SceneUpdate - Automatically discovers
tf2_msgs/msg/TFMessagetopics and relays each source asfoxglove.FrameTransform - Optional MCAP recording of selected Foxglove schemas (
foxglove.LocationFix,foxglove.GeoJSON,foxglove.LaserScan,foxglove.SceneUpdate,foxglove.FrameTransform) for offline playback in Foxglove - Supports both JSON and Protocol Buffers encoding for Foxglove visualization
- Converts DataTamer schemas to JSON Schema or Protocol Buffers descriptor format
- Creates Foxglove WebSocket server for real-time data streaming
- Supports soft eviction of idle channels (closes channels but keeps schemas)
- Configurable eviction policies and discovery intervals
- Optional ROS log relaying to Foxglove
Prerequisites:
- Your DataTamer channels must use
DataTamer::ROS2PublisherSinkto publish data to ROS2 topics - The relay automatically discovers and subscribes to the standard DataTamer ROS2 topics
Usage:
# Launch as ROS2 component
ros2 run data_tamer_tools foxglove_relay
# Or with custom parameters
ros2 run data_tamer_tools foxglove_relay --ros-args \
-p host:=0.0.0.0 \
-p port:=8765 \
-p use_protobuf:=true \
-p eviction_ttl_sec:=900 \
-p eviction_period_sec:=30 \
-p discovery_sec:=5 \
-p enable_rosout:=true
Parameters:
WebSocket Server Configuration:
-
host(string, default: “0.0.0.0”): WebSocket server host address -
port(int, default: 8765): WebSocket server port number
Data Encoding:
-
use_protobuf(bool, default: true): Use Protocol Buffers encoding instead of JSON-
true: Data is serialized using Protocol Buffers for better performance and smaller payloads -
false: Data is serialized as JSON strings for human readability
-
Channel Management:
-
eviction_ttl_sec(int, default: 900): Time-to-live for idle channels in seconds- Channels that haven’t received data for this duration will be soft-evicted (closed but schema kept)
-
eviction_period_sec(int, default: 30): Interval in seconds for checking stale channels- How often the relay checks for channels that should be evicted
-
discovery_sec(int, default: 5): Interval in seconds for topic discovery- How often the relay scans for new DataTamer topics to subscribe to
-
navsat_ttl_sec(int, default: 30): Time-to-live for NavSatFix sources; stale sources are pruned from the relay’s discovered LocationFix tracks -
geopath_ttl_sec(int, default: 0): Time-to-live for GeoPath sources (0 disables pruning) -
laser_scan_ttl_sec(int, default: 0): Time-to-live for LaserScan sources (0 disables pruning) -
scene_ttl_sec(int, default: 0): Time-to-live for MarkerArray / SceneUpdate sources (0 disables pruning) -
tf_ttl_sec(int, default: 0): Time-to-live for TFMessage / FrameTransform sources (0 disables pruning) -
navsat_qos(string, default: “sensor”): QoS profile for NavSatFix subscriptions. Acceptssensor(orsensor_data),system_default(ordefault),best_effort, orreliable. -
location_fix_prefix(string, default: “/locations”): Prefix for relayed per-sourcefoxglove.LocationFixtopics -
geojson_prefix(string, default: “/geojson”): Prefix for relayed per-sourcefoxglove.GeoJSONtopics -
laser_scan_prefix(string, default: “/scan”): Prefix for relayed per-sourcefoxglove.LaserScantopics -
scene_prefix(string, default: “/scene”): Prefix for relayed per-sourcefoxglove.SceneUpdatetopics -
transform_prefix(string, default: “/transforms”): Prefix for relayed per-sourcefoxglove.FrameTransformtopics
Supported Relay Types:
| ROS topic type | Foxglove schema | Default prefix | Typical panel |
|---|---|---|---|
data_tamer_msgs/msg/Snapshot |
Raw channel (JSON Schema or Protobuf descriptors) | original channel name | Raw Messages / Plot |
sensor_msgs/msg/NavSatFix |
foxglove.LocationFix |
/locations |
Map |
geographic_msgs/msg/GeoPath |
foxglove.GeoJSON |
/geojson |
Map |
sensor_msgs/msg/LaserScan |
foxglove.LaserScan |
/scan |
3D |
visualization_msgs/msg/MarkerArray |
foxglove.SceneUpdate |
/scene |
3D |
tf2_msgs/msg/TFMessage |
foxglove.FrameTransform |
/transforms |
3D |
MarkerArray Notes:
-
visualization_msgs/msg/Marker::ADD,DELETE, andDELETEALLare relayed - Supported marker geometries are
ARROW,CUBE,SPHERE,CYLINDER,LINE_STRIP,LINE_LIST, andTEXT_VIEW_FACING
Topic Mapping:
File truncated at 100 lines see the full file
CONTRIBUTING
Repository Summary
| Description | |
| Checkout URI | https://gitlab.com/jlack/data_tamer_tools.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-04-18 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| data_tamer_tools | 0.7.0 |
README
Data Tamer Tools
Tools for working with DataTamer data in ROS2, providing Foxglove integration and MCAP data storage capabilities.
Overview
This package provides five main tools:
- Foxglove Relay: Real-time visualization of DataTamer data and selected ROS message types through Foxglove Studio
- MCAP Sink: Store DataTamer data in MCAP (MessagePack) format for efficient storage and playback, with rotation hooks for regular and lifecycle ROS nodes
- MCAP Converter: Convert DataTamer-encoded MCAP files to Protobuf-encoded MCAP files for Foxglove compatibility
-
Rosout Logger: Record ROS log messages (
/rosout) to MCAP files with Foxglove Log schema - Log Rotation Coordinator: Synchronize log directory rotation across multiple MCAP loggers
Tools
1. Foxglove Relay (foxglove_relay)
A ROS2 component that bridges DataTamer data to Foxglove Studio for real-time visualization.
Features:
- Automatically discovers DataTamer topics (
/data_tamer/schema,/data_tamer/schemas,/data_tamer/snapshot) - Automatically discovers
sensor_msgs/msg/NavSatFixtopics and relays each source as its ownfoxglove.LocationFixchannel (Map track) - Automatically discovers
geographic_msgs/msg/GeoPathtopics and relays each source asfoxglove.GeoJSON(Map overlay) - Automatically discovers
sensor_msgs/msg/LaserScantopics and relays each source asfoxglove.LaserScan - Automatically discovers
visualization_msgs/msg/MarkerArraytopics and relays each source asfoxglove.SceneUpdate - Automatically discovers
tf2_msgs/msg/TFMessagetopics and relays each source asfoxglove.FrameTransform - Optional MCAP recording of selected Foxglove schemas (
foxglove.LocationFix,foxglove.GeoJSON,foxglove.LaserScan,foxglove.SceneUpdate,foxglove.FrameTransform) for offline playback in Foxglove - Supports both JSON and Protocol Buffers encoding for Foxglove visualization
- Converts DataTamer schemas to JSON Schema or Protocol Buffers descriptor format
- Creates Foxglove WebSocket server for real-time data streaming
- Supports soft eviction of idle channels (closes channels but keeps schemas)
- Configurable eviction policies and discovery intervals
- Optional ROS log relaying to Foxglove
Prerequisites:
- Your DataTamer channels must use
DataTamer::ROS2PublisherSinkto publish data to ROS2 topics - The relay automatically discovers and subscribes to the standard DataTamer ROS2 topics
Usage:
# Launch as ROS2 component
ros2 run data_tamer_tools foxglove_relay
# Or with custom parameters
ros2 run data_tamer_tools foxglove_relay --ros-args \
-p host:=0.0.0.0 \
-p port:=8765 \
-p use_protobuf:=true \
-p eviction_ttl_sec:=900 \
-p eviction_period_sec:=30 \
-p discovery_sec:=5 \
-p enable_rosout:=true
Parameters:
WebSocket Server Configuration:
-
host(string, default: “0.0.0.0”): WebSocket server host address -
port(int, default: 8765): WebSocket server port number
Data Encoding:
-
use_protobuf(bool, default: true): Use Protocol Buffers encoding instead of JSON-
true: Data is serialized using Protocol Buffers for better performance and smaller payloads -
false: Data is serialized as JSON strings for human readability
-
Channel Management:
-
eviction_ttl_sec(int, default: 900): Time-to-live for idle channels in seconds- Channels that haven’t received data for this duration will be soft-evicted (closed but schema kept)
-
eviction_period_sec(int, default: 30): Interval in seconds for checking stale channels- How often the relay checks for channels that should be evicted
-
discovery_sec(int, default: 5): Interval in seconds for topic discovery- How often the relay scans for new DataTamer topics to subscribe to
-
navsat_ttl_sec(int, default: 30): Time-to-live for NavSatFix sources; stale sources are pruned from the relay’s discovered LocationFix tracks -
geopath_ttl_sec(int, default: 0): Time-to-live for GeoPath sources (0 disables pruning) -
laser_scan_ttl_sec(int, default: 0): Time-to-live for LaserScan sources (0 disables pruning) -
scene_ttl_sec(int, default: 0): Time-to-live for MarkerArray / SceneUpdate sources (0 disables pruning) -
tf_ttl_sec(int, default: 0): Time-to-live for TFMessage / FrameTransform sources (0 disables pruning) -
navsat_qos(string, default: “sensor”): QoS profile for NavSatFix subscriptions. Acceptssensor(orsensor_data),system_default(ordefault),best_effort, orreliable. -
location_fix_prefix(string, default: “/locations”): Prefix for relayed per-sourcefoxglove.LocationFixtopics -
geojson_prefix(string, default: “/geojson”): Prefix for relayed per-sourcefoxglove.GeoJSONtopics -
laser_scan_prefix(string, default: “/scan”): Prefix for relayed per-sourcefoxglove.LaserScantopics -
scene_prefix(string, default: “/scene”): Prefix for relayed per-sourcefoxglove.SceneUpdatetopics -
transform_prefix(string, default: “/transforms”): Prefix for relayed per-sourcefoxglove.FrameTransformtopics
Supported Relay Types:
| ROS topic type | Foxglove schema | Default prefix | Typical panel |
|---|---|---|---|
data_tamer_msgs/msg/Snapshot |
Raw channel (JSON Schema or Protobuf descriptors) | original channel name | Raw Messages / Plot |
sensor_msgs/msg/NavSatFix |
foxglove.LocationFix |
/locations |
Map |
geographic_msgs/msg/GeoPath |
foxglove.GeoJSON |
/geojson |
Map |
sensor_msgs/msg/LaserScan |
foxglove.LaserScan |
/scan |
3D |
visualization_msgs/msg/MarkerArray |
foxglove.SceneUpdate |
/scene |
3D |
tf2_msgs/msg/TFMessage |
foxglove.FrameTransform |
/transforms |
3D |
MarkerArray Notes:
-
visualization_msgs/msg/Marker::ADD,DELETE, andDELETEALLare relayed - Supported marker geometries are
ARROW,CUBE,SPHERE,CYLINDER,LINE_STRIP,LINE_LIST, andTEXT_VIEW_FACING
Topic Mapping:
File truncated at 100 lines see the full file
CONTRIBUTING
Repository Summary
| Description | |
| Checkout URI | https://gitlab.com/jlack/data_tamer_tools.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-04-18 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| data_tamer_tools | 0.7.0 |
README
Data Tamer Tools
Tools for working with DataTamer data in ROS2, providing Foxglove integration and MCAP data storage capabilities.
Overview
This package provides five main tools:
- Foxglove Relay: Real-time visualization of DataTamer data and selected ROS message types through Foxglove Studio
- MCAP Sink: Store DataTamer data in MCAP (MessagePack) format for efficient storage and playback, with rotation hooks for regular and lifecycle ROS nodes
- MCAP Converter: Convert DataTamer-encoded MCAP files to Protobuf-encoded MCAP files for Foxglove compatibility
-
Rosout Logger: Record ROS log messages (
/rosout) to MCAP files with Foxglove Log schema - Log Rotation Coordinator: Synchronize log directory rotation across multiple MCAP loggers
Tools
1. Foxglove Relay (foxglove_relay)
A ROS2 component that bridges DataTamer data to Foxglove Studio for real-time visualization.
Features:
- Automatically discovers DataTamer topics (
/data_tamer/schema,/data_tamer/schemas,/data_tamer/snapshot) - Automatically discovers
sensor_msgs/msg/NavSatFixtopics and relays each source as its ownfoxglove.LocationFixchannel (Map track) - Automatically discovers
geographic_msgs/msg/GeoPathtopics and relays each source asfoxglove.GeoJSON(Map overlay) - Automatically discovers
sensor_msgs/msg/LaserScantopics and relays each source asfoxglove.LaserScan - Automatically discovers
visualization_msgs/msg/MarkerArraytopics and relays each source asfoxglove.SceneUpdate - Automatically discovers
tf2_msgs/msg/TFMessagetopics and relays each source asfoxglove.FrameTransform - Optional MCAP recording of selected Foxglove schemas (
foxglove.LocationFix,foxglove.GeoJSON,foxglove.LaserScan,foxglove.SceneUpdate,foxglove.FrameTransform) for offline playback in Foxglove - Supports both JSON and Protocol Buffers encoding for Foxglove visualization
- Converts DataTamer schemas to JSON Schema or Protocol Buffers descriptor format
- Creates Foxglove WebSocket server for real-time data streaming
- Supports soft eviction of idle channels (closes channels but keeps schemas)
- Configurable eviction policies and discovery intervals
- Optional ROS log relaying to Foxglove
Prerequisites:
- Your DataTamer channels must use
DataTamer::ROS2PublisherSinkto publish data to ROS2 topics - The relay automatically discovers and subscribes to the standard DataTamer ROS2 topics
Usage:
# Launch as ROS2 component
ros2 run data_tamer_tools foxglove_relay
# Or with custom parameters
ros2 run data_tamer_tools foxglove_relay --ros-args \
-p host:=0.0.0.0 \
-p port:=8765 \
-p use_protobuf:=true \
-p eviction_ttl_sec:=900 \
-p eviction_period_sec:=30 \
-p discovery_sec:=5 \
-p enable_rosout:=true
Parameters:
WebSocket Server Configuration:
-
host(string, default: “0.0.0.0”): WebSocket server host address -
port(int, default: 8765): WebSocket server port number
Data Encoding:
-
use_protobuf(bool, default: true): Use Protocol Buffers encoding instead of JSON-
true: Data is serialized using Protocol Buffers for better performance and smaller payloads -
false: Data is serialized as JSON strings for human readability
-
Channel Management:
-
eviction_ttl_sec(int, default: 900): Time-to-live for idle channels in seconds- Channels that haven’t received data for this duration will be soft-evicted (closed but schema kept)
-
eviction_period_sec(int, default: 30): Interval in seconds for checking stale channels- How often the relay checks for channels that should be evicted
-
discovery_sec(int, default: 5): Interval in seconds for topic discovery- How often the relay scans for new DataTamer topics to subscribe to
-
navsat_ttl_sec(int, default: 30): Time-to-live for NavSatFix sources; stale sources are pruned from the relay’s discovered LocationFix tracks -
geopath_ttl_sec(int, default: 0): Time-to-live for GeoPath sources (0 disables pruning) -
laser_scan_ttl_sec(int, default: 0): Time-to-live for LaserScan sources (0 disables pruning) -
scene_ttl_sec(int, default: 0): Time-to-live for MarkerArray / SceneUpdate sources (0 disables pruning) -
tf_ttl_sec(int, default: 0): Time-to-live for TFMessage / FrameTransform sources (0 disables pruning) -
navsat_qos(string, default: “sensor”): QoS profile for NavSatFix subscriptions. Acceptssensor(orsensor_data),system_default(ordefault),best_effort, orreliable. -
location_fix_prefix(string, default: “/locations”): Prefix for relayed per-sourcefoxglove.LocationFixtopics -
geojson_prefix(string, default: “/geojson”): Prefix for relayed per-sourcefoxglove.GeoJSONtopics -
laser_scan_prefix(string, default: “/scan”): Prefix for relayed per-sourcefoxglove.LaserScantopics -
scene_prefix(string, default: “/scene”): Prefix for relayed per-sourcefoxglove.SceneUpdatetopics -
transform_prefix(string, default: “/transforms”): Prefix for relayed per-sourcefoxglove.FrameTransformtopics
Supported Relay Types:
| ROS topic type | Foxglove schema | Default prefix | Typical panel |
|---|---|---|---|
data_tamer_msgs/msg/Snapshot |
Raw channel (JSON Schema or Protobuf descriptors) | original channel name | Raw Messages / Plot |
sensor_msgs/msg/NavSatFix |
foxglove.LocationFix |
/locations |
Map |
geographic_msgs/msg/GeoPath |
foxglove.GeoJSON |
/geojson |
Map |
sensor_msgs/msg/LaserScan |
foxglove.LaserScan |
/scan |
3D |
visualization_msgs/msg/MarkerArray |
foxglove.SceneUpdate |
/scene |
3D |
tf2_msgs/msg/TFMessage |
foxglove.FrameTransform |
/transforms |
3D |
MarkerArray Notes:
-
visualization_msgs/msg/Marker::ADD,DELETE, andDELETEALLare relayed - Supported marker geometries are
ARROW,CUBE,SPHERE,CYLINDER,LINE_STRIP,LINE_LIST, andTEXT_VIEW_FACING
Topic Mapping:
File truncated at 100 lines see the full file
CONTRIBUTING
Repository Summary
| Description | |
| Checkout URI | https://gitlab.com/jlack/data_tamer_tools.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-04-18 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| data_tamer_tools | 0.7.0 |
README
Data Tamer Tools
Tools for working with DataTamer data in ROS2, providing Foxglove integration and MCAP data storage capabilities.
Overview
This package provides five main tools:
- Foxglove Relay: Real-time visualization of DataTamer data and selected ROS message types through Foxglove Studio
- MCAP Sink: Store DataTamer data in MCAP (MessagePack) format for efficient storage and playback, with rotation hooks for regular and lifecycle ROS nodes
- MCAP Converter: Convert DataTamer-encoded MCAP files to Protobuf-encoded MCAP files for Foxglove compatibility
-
Rosout Logger: Record ROS log messages (
/rosout) to MCAP files with Foxglove Log schema - Log Rotation Coordinator: Synchronize log directory rotation across multiple MCAP loggers
Tools
1. Foxglove Relay (foxglove_relay)
A ROS2 component that bridges DataTamer data to Foxglove Studio for real-time visualization.
Features:
- Automatically discovers DataTamer topics (
/data_tamer/schema,/data_tamer/schemas,/data_tamer/snapshot) - Automatically discovers
sensor_msgs/msg/NavSatFixtopics and relays each source as its ownfoxglove.LocationFixchannel (Map track) - Automatically discovers
geographic_msgs/msg/GeoPathtopics and relays each source asfoxglove.GeoJSON(Map overlay) - Automatically discovers
sensor_msgs/msg/LaserScantopics and relays each source asfoxglove.LaserScan - Automatically discovers
visualization_msgs/msg/MarkerArraytopics and relays each source asfoxglove.SceneUpdate - Automatically discovers
tf2_msgs/msg/TFMessagetopics and relays each source asfoxglove.FrameTransform - Optional MCAP recording of selected Foxglove schemas (
foxglove.LocationFix,foxglove.GeoJSON,foxglove.LaserScan,foxglove.SceneUpdate,foxglove.FrameTransform) for offline playback in Foxglove - Supports both JSON and Protocol Buffers encoding for Foxglove visualization
- Converts DataTamer schemas to JSON Schema or Protocol Buffers descriptor format
- Creates Foxglove WebSocket server for real-time data streaming
- Supports soft eviction of idle channels (closes channels but keeps schemas)
- Configurable eviction policies and discovery intervals
- Optional ROS log relaying to Foxglove
Prerequisites:
- Your DataTamer channels must use
DataTamer::ROS2PublisherSinkto publish data to ROS2 topics - The relay automatically discovers and subscribes to the standard DataTamer ROS2 topics
Usage:
# Launch as ROS2 component
ros2 run data_tamer_tools foxglove_relay
# Or with custom parameters
ros2 run data_tamer_tools foxglove_relay --ros-args \
-p host:=0.0.0.0 \
-p port:=8765 \
-p use_protobuf:=true \
-p eviction_ttl_sec:=900 \
-p eviction_period_sec:=30 \
-p discovery_sec:=5 \
-p enable_rosout:=true
Parameters:
WebSocket Server Configuration:
-
host(string, default: “0.0.0.0”): WebSocket server host address -
port(int, default: 8765): WebSocket server port number
Data Encoding:
-
use_protobuf(bool, default: true): Use Protocol Buffers encoding instead of JSON-
true: Data is serialized using Protocol Buffers for better performance and smaller payloads -
false: Data is serialized as JSON strings for human readability
-
Channel Management:
-
eviction_ttl_sec(int, default: 900): Time-to-live for idle channels in seconds- Channels that haven’t received data for this duration will be soft-evicted (closed but schema kept)
-
eviction_period_sec(int, default: 30): Interval in seconds for checking stale channels- How often the relay checks for channels that should be evicted
-
discovery_sec(int, default: 5): Interval in seconds for topic discovery- How often the relay scans for new DataTamer topics to subscribe to
-
navsat_ttl_sec(int, default: 30): Time-to-live for NavSatFix sources; stale sources are pruned from the relay’s discovered LocationFix tracks -
geopath_ttl_sec(int, default: 0): Time-to-live for GeoPath sources (0 disables pruning) -
laser_scan_ttl_sec(int, default: 0): Time-to-live for LaserScan sources (0 disables pruning) -
scene_ttl_sec(int, default: 0): Time-to-live for MarkerArray / SceneUpdate sources (0 disables pruning) -
tf_ttl_sec(int, default: 0): Time-to-live for TFMessage / FrameTransform sources (0 disables pruning) -
navsat_qos(string, default: “sensor”): QoS profile for NavSatFix subscriptions. Acceptssensor(orsensor_data),system_default(ordefault),best_effort, orreliable. -
location_fix_prefix(string, default: “/locations”): Prefix for relayed per-sourcefoxglove.LocationFixtopics -
geojson_prefix(string, default: “/geojson”): Prefix for relayed per-sourcefoxglove.GeoJSONtopics -
laser_scan_prefix(string, default: “/scan”): Prefix for relayed per-sourcefoxglove.LaserScantopics -
scene_prefix(string, default: “/scene”): Prefix for relayed per-sourcefoxglove.SceneUpdatetopics -
transform_prefix(string, default: “/transforms”): Prefix for relayed per-sourcefoxglove.FrameTransformtopics
Supported Relay Types:
| ROS topic type | Foxglove schema | Default prefix | Typical panel |
|---|---|---|---|
data_tamer_msgs/msg/Snapshot |
Raw channel (JSON Schema or Protobuf descriptors) | original channel name | Raw Messages / Plot |
sensor_msgs/msg/NavSatFix |
foxglove.LocationFix |
/locations |
Map |
geographic_msgs/msg/GeoPath |
foxglove.GeoJSON |
/geojson |
Map |
sensor_msgs/msg/LaserScan |
foxglove.LaserScan |
/scan |
3D |
visualization_msgs/msg/MarkerArray |
foxglove.SceneUpdate |
/scene |
3D |
tf2_msgs/msg/TFMessage |
foxglove.FrameTransform |
/transforms |
3D |
MarkerArray Notes:
-
visualization_msgs/msg/Marker::ADD,DELETE, andDELETEALLare relayed - Supported marker geometries are
ARROW,CUBE,SPHERE,CYLINDER,LINE_STRIP,LINE_LIST, andTEXT_VIEW_FACING
Topic Mapping:
File truncated at 100 lines see the full file
CONTRIBUTING
Repository Summary
| Description | |
| Checkout URI | https://gitlab.com/jlack/data_tamer_tools.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-04-18 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| data_tamer_tools | 0.7.0 |
README
Data Tamer Tools
Tools for working with DataTamer data in ROS2, providing Foxglove integration and MCAP data storage capabilities.
Overview
This package provides five main tools:
- Foxglove Relay: Real-time visualization of DataTamer data and selected ROS message types through Foxglove Studio
- MCAP Sink: Store DataTamer data in MCAP (MessagePack) format for efficient storage and playback, with rotation hooks for regular and lifecycle ROS nodes
- MCAP Converter: Convert DataTamer-encoded MCAP files to Protobuf-encoded MCAP files for Foxglove compatibility
-
Rosout Logger: Record ROS log messages (
/rosout) to MCAP files with Foxglove Log schema - Log Rotation Coordinator: Synchronize log directory rotation across multiple MCAP loggers
Tools
1. Foxglove Relay (foxglove_relay)
A ROS2 component that bridges DataTamer data to Foxglove Studio for real-time visualization.
Features:
- Automatically discovers DataTamer topics (
/data_tamer/schema,/data_tamer/schemas,/data_tamer/snapshot) - Automatically discovers
sensor_msgs/msg/NavSatFixtopics and relays each source as its ownfoxglove.LocationFixchannel (Map track) - Automatically discovers
geographic_msgs/msg/GeoPathtopics and relays each source asfoxglove.GeoJSON(Map overlay) - Automatically discovers
sensor_msgs/msg/LaserScantopics and relays each source asfoxglove.LaserScan - Automatically discovers
visualization_msgs/msg/MarkerArraytopics and relays each source asfoxglove.SceneUpdate - Automatically discovers
tf2_msgs/msg/TFMessagetopics and relays each source asfoxglove.FrameTransform - Optional MCAP recording of selected Foxglove schemas (
foxglove.LocationFix,foxglove.GeoJSON,foxglove.LaserScan,foxglove.SceneUpdate,foxglove.FrameTransform) for offline playback in Foxglove - Supports both JSON and Protocol Buffers encoding for Foxglove visualization
- Converts DataTamer schemas to JSON Schema or Protocol Buffers descriptor format
- Creates Foxglove WebSocket server for real-time data streaming
- Supports soft eviction of idle channels (closes channels but keeps schemas)
- Configurable eviction policies and discovery intervals
- Optional ROS log relaying to Foxglove
Prerequisites:
- Your DataTamer channels must use
DataTamer::ROS2PublisherSinkto publish data to ROS2 topics - The relay automatically discovers and subscribes to the standard DataTamer ROS2 topics
Usage:
# Launch as ROS2 component
ros2 run data_tamer_tools foxglove_relay
# Or with custom parameters
ros2 run data_tamer_tools foxglove_relay --ros-args \
-p host:=0.0.0.0 \
-p port:=8765 \
-p use_protobuf:=true \
-p eviction_ttl_sec:=900 \
-p eviction_period_sec:=30 \
-p discovery_sec:=5 \
-p enable_rosout:=true
Parameters:
WebSocket Server Configuration:
-
host(string, default: “0.0.0.0”): WebSocket server host address -
port(int, default: 8765): WebSocket server port number
Data Encoding:
-
use_protobuf(bool, default: true): Use Protocol Buffers encoding instead of JSON-
true: Data is serialized using Protocol Buffers for better performance and smaller payloads -
false: Data is serialized as JSON strings for human readability
-
Channel Management:
-
eviction_ttl_sec(int, default: 900): Time-to-live for idle channels in seconds- Channels that haven’t received data for this duration will be soft-evicted (closed but schema kept)
-
eviction_period_sec(int, default: 30): Interval in seconds for checking stale channels- How often the relay checks for channels that should be evicted
-
discovery_sec(int, default: 5): Interval in seconds for topic discovery- How often the relay scans for new DataTamer topics to subscribe to
-
navsat_ttl_sec(int, default: 30): Time-to-live for NavSatFix sources; stale sources are pruned from the relay’s discovered LocationFix tracks -
geopath_ttl_sec(int, default: 0): Time-to-live for GeoPath sources (0 disables pruning) -
laser_scan_ttl_sec(int, default: 0): Time-to-live for LaserScan sources (0 disables pruning) -
scene_ttl_sec(int, default: 0): Time-to-live for MarkerArray / SceneUpdate sources (0 disables pruning) -
tf_ttl_sec(int, default: 0): Time-to-live for TFMessage / FrameTransform sources (0 disables pruning) -
navsat_qos(string, default: “sensor”): QoS profile for NavSatFix subscriptions. Acceptssensor(orsensor_data),system_default(ordefault),best_effort, orreliable. -
location_fix_prefix(string, default: “/locations”): Prefix for relayed per-sourcefoxglove.LocationFixtopics -
geojson_prefix(string, default: “/geojson”): Prefix for relayed per-sourcefoxglove.GeoJSONtopics -
laser_scan_prefix(string, default: “/scan”): Prefix for relayed per-sourcefoxglove.LaserScantopics -
scene_prefix(string, default: “/scene”): Prefix for relayed per-sourcefoxglove.SceneUpdatetopics -
transform_prefix(string, default: “/transforms”): Prefix for relayed per-sourcefoxglove.FrameTransformtopics
Supported Relay Types:
| ROS topic type | Foxglove schema | Default prefix | Typical panel |
|---|---|---|---|
data_tamer_msgs/msg/Snapshot |
Raw channel (JSON Schema or Protobuf descriptors) | original channel name | Raw Messages / Plot |
sensor_msgs/msg/NavSatFix |
foxglove.LocationFix |
/locations |
Map |
geographic_msgs/msg/GeoPath |
foxglove.GeoJSON |
/geojson |
Map |
sensor_msgs/msg/LaserScan |
foxglove.LaserScan |
/scan |
3D |
visualization_msgs/msg/MarkerArray |
foxglove.SceneUpdate |
/scene |
3D |
tf2_msgs/msg/TFMessage |
foxglove.FrameTransform |
/transforms |
3D |
MarkerArray Notes:
-
visualization_msgs/msg/Marker::ADD,DELETE, andDELETEALLare relayed - Supported marker geometries are
ARROW,CUBE,SPHERE,CYLINDER,LINE_STRIP,LINE_LIST, andTEXT_VIEW_FACING
Topic Mapping:
File truncated at 100 lines see the full file
CONTRIBUTING
Repository Summary
| Description | |
| Checkout URI | https://gitlab.com/jlack/data_tamer_tools.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-04-18 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| data_tamer_tools | 0.7.0 |
README
Data Tamer Tools
Tools for working with DataTamer data in ROS2, providing Foxglove integration and MCAP data storage capabilities.
Overview
This package provides five main tools:
- Foxglove Relay: Real-time visualization of DataTamer data and selected ROS message types through Foxglove Studio
- MCAP Sink: Store DataTamer data in MCAP (MessagePack) format for efficient storage and playback, with rotation hooks for regular and lifecycle ROS nodes
- MCAP Converter: Convert DataTamer-encoded MCAP files to Protobuf-encoded MCAP files for Foxglove compatibility
-
Rosout Logger: Record ROS log messages (
/rosout) to MCAP files with Foxglove Log schema - Log Rotation Coordinator: Synchronize log directory rotation across multiple MCAP loggers
Tools
1. Foxglove Relay (foxglove_relay)
A ROS2 component that bridges DataTamer data to Foxglove Studio for real-time visualization.
Features:
- Automatically discovers DataTamer topics (
/data_tamer/schema,/data_tamer/schemas,/data_tamer/snapshot) - Automatically discovers
sensor_msgs/msg/NavSatFixtopics and relays each source as its ownfoxglove.LocationFixchannel (Map track) - Automatically discovers
geographic_msgs/msg/GeoPathtopics and relays each source asfoxglove.GeoJSON(Map overlay) - Automatically discovers
sensor_msgs/msg/LaserScantopics and relays each source asfoxglove.LaserScan - Automatically discovers
visualization_msgs/msg/MarkerArraytopics and relays each source asfoxglove.SceneUpdate - Automatically discovers
tf2_msgs/msg/TFMessagetopics and relays each source asfoxglove.FrameTransform - Optional MCAP recording of selected Foxglove schemas (
foxglove.LocationFix,foxglove.GeoJSON,foxglove.LaserScan,foxglove.SceneUpdate,foxglove.FrameTransform) for offline playback in Foxglove - Supports both JSON and Protocol Buffers encoding for Foxglove visualization
- Converts DataTamer schemas to JSON Schema or Protocol Buffers descriptor format
- Creates Foxglove WebSocket server for real-time data streaming
- Supports soft eviction of idle channels (closes channels but keeps schemas)
- Configurable eviction policies and discovery intervals
- Optional ROS log relaying to Foxglove
Prerequisites:
- Your DataTamer channels must use
DataTamer::ROS2PublisherSinkto publish data to ROS2 topics - The relay automatically discovers and subscribes to the standard DataTamer ROS2 topics
Usage:
# Launch as ROS2 component
ros2 run data_tamer_tools foxglove_relay
# Or with custom parameters
ros2 run data_tamer_tools foxglove_relay --ros-args \
-p host:=0.0.0.0 \
-p port:=8765 \
-p use_protobuf:=true \
-p eviction_ttl_sec:=900 \
-p eviction_period_sec:=30 \
-p discovery_sec:=5 \
-p enable_rosout:=true
Parameters:
WebSocket Server Configuration:
-
host(string, default: “0.0.0.0”): WebSocket server host address -
port(int, default: 8765): WebSocket server port number
Data Encoding:
-
use_protobuf(bool, default: true): Use Protocol Buffers encoding instead of JSON-
true: Data is serialized using Protocol Buffers for better performance and smaller payloads -
false: Data is serialized as JSON strings for human readability
-
Channel Management:
-
eviction_ttl_sec(int, default: 900): Time-to-live for idle channels in seconds- Channels that haven’t received data for this duration will be soft-evicted (closed but schema kept)
-
eviction_period_sec(int, default: 30): Interval in seconds for checking stale channels- How often the relay checks for channels that should be evicted
-
discovery_sec(int, default: 5): Interval in seconds for topic discovery- How often the relay scans for new DataTamer topics to subscribe to
-
navsat_ttl_sec(int, default: 30): Time-to-live for NavSatFix sources; stale sources are pruned from the relay’s discovered LocationFix tracks -
geopath_ttl_sec(int, default: 0): Time-to-live for GeoPath sources (0 disables pruning) -
laser_scan_ttl_sec(int, default: 0): Time-to-live for LaserScan sources (0 disables pruning) -
scene_ttl_sec(int, default: 0): Time-to-live for MarkerArray / SceneUpdate sources (0 disables pruning) -
tf_ttl_sec(int, default: 0): Time-to-live for TFMessage / FrameTransform sources (0 disables pruning) -
navsat_qos(string, default: “sensor”): QoS profile for NavSatFix subscriptions. Acceptssensor(orsensor_data),system_default(ordefault),best_effort, orreliable. -
location_fix_prefix(string, default: “/locations”): Prefix for relayed per-sourcefoxglove.LocationFixtopics -
geojson_prefix(string, default: “/geojson”): Prefix for relayed per-sourcefoxglove.GeoJSONtopics -
laser_scan_prefix(string, default: “/scan”): Prefix for relayed per-sourcefoxglove.LaserScantopics -
scene_prefix(string, default: “/scene”): Prefix for relayed per-sourcefoxglove.SceneUpdatetopics -
transform_prefix(string, default: “/transforms”): Prefix for relayed per-sourcefoxglove.FrameTransformtopics
Supported Relay Types:
| ROS topic type | Foxglove schema | Default prefix | Typical panel |
|---|---|---|---|
data_tamer_msgs/msg/Snapshot |
Raw channel (JSON Schema or Protobuf descriptors) | original channel name | Raw Messages / Plot |
sensor_msgs/msg/NavSatFix |
foxglove.LocationFix |
/locations |
Map |
geographic_msgs/msg/GeoPath |
foxglove.GeoJSON |
/geojson |
Map |
sensor_msgs/msg/LaserScan |
foxglove.LaserScan |
/scan |
3D |
visualization_msgs/msg/MarkerArray |
foxglove.SceneUpdate |
/scene |
3D |
tf2_msgs/msg/TFMessage |
foxglove.FrameTransform |
/transforms |
3D |
MarkerArray Notes:
-
visualization_msgs/msg/Marker::ADD,DELETE, andDELETEALLare relayed - Supported marker geometries are
ARROW,CUBE,SPHERE,CYLINDER,LINE_STRIP,LINE_LIST, andTEXT_VIEW_FACING
Topic Mapping:
File truncated at 100 lines see the full file
CONTRIBUTING
Repository Summary
| Description | |
| Checkout URI | https://gitlab.com/jlack/data_tamer_tools.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-04-18 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| data_tamer_tools | 0.7.0 |
README
Data Tamer Tools
Tools for working with DataTamer data in ROS2, providing Foxglove integration and MCAP data storage capabilities.
Overview
This package provides five main tools:
- Foxglove Relay: Real-time visualization of DataTamer data and selected ROS message types through Foxglove Studio
- MCAP Sink: Store DataTamer data in MCAP (MessagePack) format for efficient storage and playback, with rotation hooks for regular and lifecycle ROS nodes
- MCAP Converter: Convert DataTamer-encoded MCAP files to Protobuf-encoded MCAP files for Foxglove compatibility
-
Rosout Logger: Record ROS log messages (
/rosout) to MCAP files with Foxglove Log schema - Log Rotation Coordinator: Synchronize log directory rotation across multiple MCAP loggers
Tools
1. Foxglove Relay (foxglove_relay)
A ROS2 component that bridges DataTamer data to Foxglove Studio for real-time visualization.
Features:
- Automatically discovers DataTamer topics (
/data_tamer/schema,/data_tamer/schemas,/data_tamer/snapshot) - Automatically discovers
sensor_msgs/msg/NavSatFixtopics and relays each source as its ownfoxglove.LocationFixchannel (Map track) - Automatically discovers
geographic_msgs/msg/GeoPathtopics and relays each source asfoxglove.GeoJSON(Map overlay) - Automatically discovers
sensor_msgs/msg/LaserScantopics and relays each source asfoxglove.LaserScan - Automatically discovers
visualization_msgs/msg/MarkerArraytopics and relays each source asfoxglove.SceneUpdate - Automatically discovers
tf2_msgs/msg/TFMessagetopics and relays each source asfoxglove.FrameTransform - Optional MCAP recording of selected Foxglove schemas (
foxglove.LocationFix,foxglove.GeoJSON,foxglove.LaserScan,foxglove.SceneUpdate,foxglove.FrameTransform) for offline playback in Foxglove - Supports both JSON and Protocol Buffers encoding for Foxglove visualization
- Converts DataTamer schemas to JSON Schema or Protocol Buffers descriptor format
- Creates Foxglove WebSocket server for real-time data streaming
- Supports soft eviction of idle channels (closes channels but keeps schemas)
- Configurable eviction policies and discovery intervals
- Optional ROS log relaying to Foxglove
Prerequisites:
- Your DataTamer channels must use
DataTamer::ROS2PublisherSinkto publish data to ROS2 topics - The relay automatically discovers and subscribes to the standard DataTamer ROS2 topics
Usage:
# Launch as ROS2 component
ros2 run data_tamer_tools foxglove_relay
# Or with custom parameters
ros2 run data_tamer_tools foxglove_relay --ros-args \
-p host:=0.0.0.0 \
-p port:=8765 \
-p use_protobuf:=true \
-p eviction_ttl_sec:=900 \
-p eviction_period_sec:=30 \
-p discovery_sec:=5 \
-p enable_rosout:=true
Parameters:
WebSocket Server Configuration:
-
host(string, default: “0.0.0.0”): WebSocket server host address -
port(int, default: 8765): WebSocket server port number
Data Encoding:
-
use_protobuf(bool, default: true): Use Protocol Buffers encoding instead of JSON-
true: Data is serialized using Protocol Buffers for better performance and smaller payloads -
false: Data is serialized as JSON strings for human readability
-
Channel Management:
-
eviction_ttl_sec(int, default: 900): Time-to-live for idle channels in seconds- Channels that haven’t received data for this duration will be soft-evicted (closed but schema kept)
-
eviction_period_sec(int, default: 30): Interval in seconds for checking stale channels- How often the relay checks for channels that should be evicted
-
discovery_sec(int, default: 5): Interval in seconds for topic discovery- How often the relay scans for new DataTamer topics to subscribe to
-
navsat_ttl_sec(int, default: 30): Time-to-live for NavSatFix sources; stale sources are pruned from the relay’s discovered LocationFix tracks -
geopath_ttl_sec(int, default: 0): Time-to-live for GeoPath sources (0 disables pruning) -
laser_scan_ttl_sec(int, default: 0): Time-to-live for LaserScan sources (0 disables pruning) -
scene_ttl_sec(int, default: 0): Time-to-live for MarkerArray / SceneUpdate sources (0 disables pruning) -
tf_ttl_sec(int, default: 0): Time-to-live for TFMessage / FrameTransform sources (0 disables pruning) -
navsat_qos(string, default: “sensor”): QoS profile for NavSatFix subscriptions. Acceptssensor(orsensor_data),system_default(ordefault),best_effort, orreliable. -
location_fix_prefix(string, default: “/locations”): Prefix for relayed per-sourcefoxglove.LocationFixtopics -
geojson_prefix(string, default: “/geojson”): Prefix for relayed per-sourcefoxglove.GeoJSONtopics -
laser_scan_prefix(string, default: “/scan”): Prefix for relayed per-sourcefoxglove.LaserScantopics -
scene_prefix(string, default: “/scene”): Prefix for relayed per-sourcefoxglove.SceneUpdatetopics -
transform_prefix(string, default: “/transforms”): Prefix for relayed per-sourcefoxglove.FrameTransformtopics
Supported Relay Types:
| ROS topic type | Foxglove schema | Default prefix | Typical panel |
|---|---|---|---|
data_tamer_msgs/msg/Snapshot |
Raw channel (JSON Schema or Protobuf descriptors) | original channel name | Raw Messages / Plot |
sensor_msgs/msg/NavSatFix |
foxglove.LocationFix |
/locations |
Map |
geographic_msgs/msg/GeoPath |
foxglove.GeoJSON |
/geojson |
Map |
sensor_msgs/msg/LaserScan |
foxglove.LaserScan |
/scan |
3D |
visualization_msgs/msg/MarkerArray |
foxglove.SceneUpdate |
/scene |
3D |
tf2_msgs/msg/TFMessage |
foxglove.FrameTransform |
/transforms |
3D |
MarkerArray Notes:
-
visualization_msgs/msg/Marker::ADD,DELETE, andDELETEALLare relayed - Supported marker geometries are
ARROW,CUBE,SPHERE,CYLINDER,LINE_STRIP,LINE_LIST, andTEXT_VIEW_FACING
Topic Mapping:
File truncated at 100 lines see the full file
CONTRIBUTING
Repository Summary
| Description | |
| Checkout URI | https://gitlab.com/jlack/data_tamer_tools.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-04-18 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| data_tamer_tools | 0.7.0 |
README
Data Tamer Tools
Tools for working with DataTamer data in ROS2, providing Foxglove integration and MCAP data storage capabilities.
Overview
This package provides five main tools:
- Foxglove Relay: Real-time visualization of DataTamer data and selected ROS message types through Foxglove Studio
- MCAP Sink: Store DataTamer data in MCAP (MessagePack) format for efficient storage and playback, with rotation hooks for regular and lifecycle ROS nodes
- MCAP Converter: Convert DataTamer-encoded MCAP files to Protobuf-encoded MCAP files for Foxglove compatibility
-
Rosout Logger: Record ROS log messages (
/rosout) to MCAP files with Foxglove Log schema - Log Rotation Coordinator: Synchronize log directory rotation across multiple MCAP loggers
Tools
1. Foxglove Relay (foxglove_relay)
A ROS2 component that bridges DataTamer data to Foxglove Studio for real-time visualization.
Features:
- Automatically discovers DataTamer topics (
/data_tamer/schema,/data_tamer/schemas,/data_tamer/snapshot) - Automatically discovers
sensor_msgs/msg/NavSatFixtopics and relays each source as its ownfoxglove.LocationFixchannel (Map track) - Automatically discovers
geographic_msgs/msg/GeoPathtopics and relays each source asfoxglove.GeoJSON(Map overlay) - Automatically discovers
sensor_msgs/msg/LaserScantopics and relays each source asfoxglove.LaserScan - Automatically discovers
visualization_msgs/msg/MarkerArraytopics and relays each source asfoxglove.SceneUpdate - Automatically discovers
tf2_msgs/msg/TFMessagetopics and relays each source asfoxglove.FrameTransform - Optional MCAP recording of selected Foxglove schemas (
foxglove.LocationFix,foxglove.GeoJSON,foxglove.LaserScan,foxglove.SceneUpdate,foxglove.FrameTransform) for offline playback in Foxglove - Supports both JSON and Protocol Buffers encoding for Foxglove visualization
- Converts DataTamer schemas to JSON Schema or Protocol Buffers descriptor format
- Creates Foxglove WebSocket server for real-time data streaming
- Supports soft eviction of idle channels (closes channels but keeps schemas)
- Configurable eviction policies and discovery intervals
- Optional ROS log relaying to Foxglove
Prerequisites:
- Your DataTamer channels must use
DataTamer::ROS2PublisherSinkto publish data to ROS2 topics - The relay automatically discovers and subscribes to the standard DataTamer ROS2 topics
Usage:
# Launch as ROS2 component
ros2 run data_tamer_tools foxglove_relay
# Or with custom parameters
ros2 run data_tamer_tools foxglove_relay --ros-args \
-p host:=0.0.0.0 \
-p port:=8765 \
-p use_protobuf:=true \
-p eviction_ttl_sec:=900 \
-p eviction_period_sec:=30 \
-p discovery_sec:=5 \
-p enable_rosout:=true
Parameters:
WebSocket Server Configuration:
-
host(string, default: “0.0.0.0”): WebSocket server host address -
port(int, default: 8765): WebSocket server port number
Data Encoding:
-
use_protobuf(bool, default: true): Use Protocol Buffers encoding instead of JSON-
true: Data is serialized using Protocol Buffers for better performance and smaller payloads -
false: Data is serialized as JSON strings for human readability
-
Channel Management:
-
eviction_ttl_sec(int, default: 900): Time-to-live for idle channels in seconds- Channels that haven’t received data for this duration will be soft-evicted (closed but schema kept)
-
eviction_period_sec(int, default: 30): Interval in seconds for checking stale channels- How often the relay checks for channels that should be evicted
-
discovery_sec(int, default: 5): Interval in seconds for topic discovery- How often the relay scans for new DataTamer topics to subscribe to
-
navsat_ttl_sec(int, default: 30): Time-to-live for NavSatFix sources; stale sources are pruned from the relay’s discovered LocationFix tracks -
geopath_ttl_sec(int, default: 0): Time-to-live for GeoPath sources (0 disables pruning) -
laser_scan_ttl_sec(int, default: 0): Time-to-live for LaserScan sources (0 disables pruning) -
scene_ttl_sec(int, default: 0): Time-to-live for MarkerArray / SceneUpdate sources (0 disables pruning) -
tf_ttl_sec(int, default: 0): Time-to-live for TFMessage / FrameTransform sources (0 disables pruning) -
navsat_qos(string, default: “sensor”): QoS profile for NavSatFix subscriptions. Acceptssensor(orsensor_data),system_default(ordefault),best_effort, orreliable. -
location_fix_prefix(string, default: “/locations”): Prefix for relayed per-sourcefoxglove.LocationFixtopics -
geojson_prefix(string, default: “/geojson”): Prefix for relayed per-sourcefoxglove.GeoJSONtopics -
laser_scan_prefix(string, default: “/scan”): Prefix for relayed per-sourcefoxglove.LaserScantopics -
scene_prefix(string, default: “/scene”): Prefix for relayed per-sourcefoxglove.SceneUpdatetopics -
transform_prefix(string, default: “/transforms”): Prefix for relayed per-sourcefoxglove.FrameTransformtopics
Supported Relay Types:
| ROS topic type | Foxglove schema | Default prefix | Typical panel |
|---|---|---|---|
data_tamer_msgs/msg/Snapshot |
Raw channel (JSON Schema or Protobuf descriptors) | original channel name | Raw Messages / Plot |
sensor_msgs/msg/NavSatFix |
foxglove.LocationFix |
/locations |
Map |
geographic_msgs/msg/GeoPath |
foxglove.GeoJSON |
/geojson |
Map |
sensor_msgs/msg/LaserScan |
foxglove.LaserScan |
/scan |
3D |
visualization_msgs/msg/MarkerArray |
foxglove.SceneUpdate |
/scene |
3D |
tf2_msgs/msg/TFMessage |
foxglove.FrameTransform |
/transforms |
3D |
MarkerArray Notes:
-
visualization_msgs/msg/Marker::ADD,DELETE, andDELETEALLare relayed - Supported marker geometries are
ARROW,CUBE,SPHERE,CYLINDER,LINE_STRIP,LINE_LIST, andTEXT_VIEW_FACING
Topic Mapping:
File truncated at 100 lines see the full file
CONTRIBUTING
Repository Summary
| Description | |
| Checkout URI | https://gitlab.com/jlack/data_tamer_tools.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-04-18 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| data_tamer_tools | 0.7.0 |
README
Data Tamer Tools
Tools for working with DataTamer data in ROS2, providing Foxglove integration and MCAP data storage capabilities.
Overview
This package provides five main tools:
- Foxglove Relay: Real-time visualization of DataTamer data and selected ROS message types through Foxglove Studio
- MCAP Sink: Store DataTamer data in MCAP (MessagePack) format for efficient storage and playback, with rotation hooks for regular and lifecycle ROS nodes
- MCAP Converter: Convert DataTamer-encoded MCAP files to Protobuf-encoded MCAP files for Foxglove compatibility
-
Rosout Logger: Record ROS log messages (
/rosout) to MCAP files with Foxglove Log schema - Log Rotation Coordinator: Synchronize log directory rotation across multiple MCAP loggers
Tools
1. Foxglove Relay (foxglove_relay)
A ROS2 component that bridges DataTamer data to Foxglove Studio for real-time visualization.
Features:
- Automatically discovers DataTamer topics (
/data_tamer/schema,/data_tamer/schemas,/data_tamer/snapshot) - Automatically discovers
sensor_msgs/msg/NavSatFixtopics and relays each source as its ownfoxglove.LocationFixchannel (Map track) - Automatically discovers
geographic_msgs/msg/GeoPathtopics and relays each source asfoxglove.GeoJSON(Map overlay) - Automatically discovers
sensor_msgs/msg/LaserScantopics and relays each source asfoxglove.LaserScan - Automatically discovers
visualization_msgs/msg/MarkerArraytopics and relays each source asfoxglove.SceneUpdate - Automatically discovers
tf2_msgs/msg/TFMessagetopics and relays each source asfoxglove.FrameTransform - Optional MCAP recording of selected Foxglove schemas (
foxglove.LocationFix,foxglove.GeoJSON,foxglove.LaserScan,foxglove.SceneUpdate,foxglove.FrameTransform) for offline playback in Foxglove - Supports both JSON and Protocol Buffers encoding for Foxglove visualization
- Converts DataTamer schemas to JSON Schema or Protocol Buffers descriptor format
- Creates Foxglove WebSocket server for real-time data streaming
- Supports soft eviction of idle channels (closes channels but keeps schemas)
- Configurable eviction policies and discovery intervals
- Optional ROS log relaying to Foxglove
Prerequisites:
- Your DataTamer channels must use
DataTamer::ROS2PublisherSinkto publish data to ROS2 topics - The relay automatically discovers and subscribes to the standard DataTamer ROS2 topics
Usage:
# Launch as ROS2 component
ros2 run data_tamer_tools foxglove_relay
# Or with custom parameters
ros2 run data_tamer_tools foxglove_relay --ros-args \
-p host:=0.0.0.0 \
-p port:=8765 \
-p use_protobuf:=true \
-p eviction_ttl_sec:=900 \
-p eviction_period_sec:=30 \
-p discovery_sec:=5 \
-p enable_rosout:=true
Parameters:
WebSocket Server Configuration:
-
host(string, default: “0.0.0.0”): WebSocket server host address -
port(int, default: 8765): WebSocket server port number
Data Encoding:
-
use_protobuf(bool, default: true): Use Protocol Buffers encoding instead of JSON-
true: Data is serialized using Protocol Buffers for better performance and smaller payloads -
false: Data is serialized as JSON strings for human readability
-
Channel Management:
-
eviction_ttl_sec(int, default: 900): Time-to-live for idle channels in seconds- Channels that haven’t received data for this duration will be soft-evicted (closed but schema kept)
-
eviction_period_sec(int, default: 30): Interval in seconds for checking stale channels- How often the relay checks for channels that should be evicted
-
discovery_sec(int, default: 5): Interval in seconds for topic discovery- How often the relay scans for new DataTamer topics to subscribe to
-
navsat_ttl_sec(int, default: 30): Time-to-live for NavSatFix sources; stale sources are pruned from the relay’s discovered LocationFix tracks -
geopath_ttl_sec(int, default: 0): Time-to-live for GeoPath sources (0 disables pruning) -
laser_scan_ttl_sec(int, default: 0): Time-to-live for LaserScan sources (0 disables pruning) -
scene_ttl_sec(int, default: 0): Time-to-live for MarkerArray / SceneUpdate sources (0 disables pruning) -
tf_ttl_sec(int, default: 0): Time-to-live for TFMessage / FrameTransform sources (0 disables pruning) -
navsat_qos(string, default: “sensor”): QoS profile for NavSatFix subscriptions. Acceptssensor(orsensor_data),system_default(ordefault),best_effort, orreliable. -
location_fix_prefix(string, default: “/locations”): Prefix for relayed per-sourcefoxglove.LocationFixtopics -
geojson_prefix(string, default: “/geojson”): Prefix for relayed per-sourcefoxglove.GeoJSONtopics -
laser_scan_prefix(string, default: “/scan”): Prefix for relayed per-sourcefoxglove.LaserScantopics -
scene_prefix(string, default: “/scene”): Prefix for relayed per-sourcefoxglove.SceneUpdatetopics -
transform_prefix(string, default: “/transforms”): Prefix for relayed per-sourcefoxglove.FrameTransformtopics
Supported Relay Types:
| ROS topic type | Foxglove schema | Default prefix | Typical panel |
|---|---|---|---|
data_tamer_msgs/msg/Snapshot |
Raw channel (JSON Schema or Protobuf descriptors) | original channel name | Raw Messages / Plot |
sensor_msgs/msg/NavSatFix |
foxglove.LocationFix |
/locations |
Map |
geographic_msgs/msg/GeoPath |
foxglove.GeoJSON |
/geojson |
Map |
sensor_msgs/msg/LaserScan |
foxglove.LaserScan |
/scan |
3D |
visualization_msgs/msg/MarkerArray |
foxglove.SceneUpdate |
/scene |
3D |
tf2_msgs/msg/TFMessage |
foxglove.FrameTransform |
/transforms |
3D |
MarkerArray Notes:
-
visualization_msgs/msg/Marker::ADD,DELETE, andDELETEALLare relayed - Supported marker geometries are
ARROW,CUBE,SPHERE,CYLINDER,LINE_STRIP,LINE_LIST, andTEXT_VIEW_FACING
Topic Mapping:
File truncated at 100 lines see the full file