At last year’s ROSCon in New Orleans, we introduced a developer preview of Roboto during our talk, Surviving the Flood (of Rosbags). We were inspired by the challenges we faced while working with log data at Amazon Robotics—and took cues from tools like GitHub Actions to create a streamlined way for robotics engineers to process log data at scale. The positive reception and feedback from the community energized us, and we’ve spent the past year collaborating with early users and customers to refine and expand the platform.
Now, a year later at ROSCon in Denmark, we’re thrilled to announce that Roboto is officially available, complete with full support for ROS 2 and PX4 log data. And if you’re using ROS 1 still, no problem! We can also plug in custom or proprietary log formats—reach out to us directly if you need this.
In the coming weeks, we’ll dive deeper into specific feature spotlights right here on the blog. But for now, here’s a quick tour of the core features:
When you upload supported log file formats to a dataset (e.g., .bag, .mcap, .ulg, .db3, etc.), Roboto automatically detects them and initiates the appropriate ingestion process. In Roboto, ingestion refers to indexing and statistical summarization of your log data. This allows for rapid access to the data you need for visualization and analysis through our SDK.
For example, if you upload a 50 GB rosbag file containing images, point clouds, and numerical time-series data, but only need the IMU data, you can extract just that—without downloading the entire file. Additionally, our statistical summaries enable efficient searching and filtering of your data, eliminating the need to ingest every data point into an expensive time-series database. This is crucial given the high frequency and volume of robotics data.
In collaboration with early users, we found that robotics engineers often need to generate custom artifacts after uploading logs. These artifacts can include tailored analyses in HTML or PDF formats, as well as results from models evaluated on individual frames of image topic data. However, these scripts are often confined to specific teams, with only a few team members knowing how to run them.
Roboto Actions address this challenge by making it easy to standardize and orchestrate custom scripts that run on your uploaded log data. This ensures that all team members can access and utilize them while providing clear provenance for any downstream artifacts produced.
Roboto features a powerful search engine designed to help you find and retrieve log data with ease. It combines traditional tag-based querying (using tags and metadata) with signal-level statistics, enabling you to build complex queries. For example, you can search for all flights where the software version was 3.4, the mean CPU load exceeded 80%, and the altitude went above 400 ft. We’ve developed a simple query language called RoboQL to make constructing these queries straightforward.
The true strength of a good search engine lies in its ability to aggregate results. Roboto allows you to compute statistical measures across all topics, making it simple to aggregate data into meaningful metrics. For instance, if you want to compare the average CPU load of your flight controller running version 3.4 against version 3.3, you can write a query to fetch the relevant results and reduce them into comparable metrics. We’ll be releasing notebooks that demonstrate this functionality soon.
Robotics data is highly visual and multimodal, and many issues can only be understood by seeing the data firsthand. Roboto includes a built-in data visualizer that makes it easy to view raw log data or search results. You can playback and inspect data using various panels, such as plots, videos, maps, and tables. Additionally, you can create dynamic links to share visualizer workspaces with your team, enabling collaborative debugging.
Over the past year, we’ve been excited to see growing momentum in robotics data visualization - from companies and open source communities alike. If you already have a preferred tool—such as RViz, PlotJuggler, or others—you can always open your log data in those visualizers. As the ecosystem matures, we’re hoping to add simple one-click buttons to facilitate this process.
Robotics data often contains long periods where nothing significant happens, but when something noteworthy occurs, it should be easy to mark and retrieve later. These “needles in the haystack” are usually significant and often missed. Roboto offers first-class support for events, making it simple to highlight key moments in your data.
In the visualizer, you can manually create events at various levels of granularity—whether it’s at the dataset, file, topic, or message path level. For instance, you can open plots showing battery current from a recent run, select a time range, and mark an unusual battery current.
Roboto also supports programmatic event creation. For example, when a log is uploaded, you can configure actions to automatically generate events for different phases of a state machine. In a drone log, you could generate events for vertical takeoff, forward flight, and vertical landing etc. This functionality simplifies data review and extraction of relevant parts later.
When you capture an event, the next question often becomes: Have we seen something like this before? We’ve been researching efficient ways to extract and compare patterns in log data to answer that. Check out our other blog post on Using Similarity Search in Drone Racing Logs for more details.
We have a comprehensive SDK & CLI, providing you with multiple ways to access and interact with your data. We’re particularly excited about the recent enhancements to our SDK, which now allow for more intuitive data retrieval. You can easily request specific slices of data, and if desired, the SDK can serve this data in Pandas dataframes, making it simple to manipulate and analyze within Python environments.
For instance, you can use the SDK within a Jupyter notebook to run a query that finds all grasping events in your dataset. You can retrieve the relevant image frames and IMU sequences and then run custom analyses on this data without any hassle. Crucially, you don’t need to download all the raw log data in its original form.
Whether you prefer working on the command line, or leveraging the SDK for in-depth analysis, Roboto makes it easier to get the data you need. We also have a REST API if you want to interact with Roboto from other applications too.
Sign up for a free account to explore all the features mentioned above. During registration, you’ll have access to sample datasets to help you get started. We have user guides for Working with ROS logs and Working with PX4 logs too.
If you have any questions or need assistance, don’t hesitate to reach out via email or join our Discord community for real-time support and discussion. We’re eager to get your feedback and hear how you’re using Roboto.
Stay tuned for more updates and features coming soon!
Sample data is © nuScenes.