Introducing Foxglove Studio: A New Way to Visualize and Debug Robots
At Foxglove, our team is intimately familiar with the challenges that come with robotics development. Existing tools – like data inspection applications, visualization programs, or debugging utilities – are often difficult to extend, clunky to use, and unsuitable for team collaboration, making for a painfully slow development workflow. We knew there was a better way to develop and debug our robots.
Our vision for Foxglove Studio is to ease these workflow pains and to accelerate robotics development for everyone. During our time working at Cruise, we experienced firsthand the problems that a fully integrated data visualization app could solve for a self-driving car company. We started Foxglove when we recognized the opportunity to build on top of this work and bring the same benefits to the wider robotics community.
Whether you’re building an autonomous car, a warehouse robot, or a self-driving rubber duck, we hope Foxglove Studio can help you spend less time fighting your tools, and more time focusing on what your robots are doing.
Why Foxglove Studio?
With Studio, our goal is to empower the robotics community to more easily make sense of their complex and noisy real-world data. We’ve taken the dizzying array of tools that robotics development usually requires, and integrated them into a single seamless developer experience.
Foxglove Studio is conveniently packaged as a desktop app for Linux, Windows, and macOS. Making Studio a desktop application has unlocked some unique benefits. Because Studio is no longer limited by a sandboxed browser environment, it can connect directly to your ROS 1 stack via the native ROS connection. It also remains unconstrained by the performance restrictions that come with running huge amounts of robotics data through a browser.
Most ROS tools are only supported on Linux, but Foxglove Studio works cross-platform – even if your ROS stack is running on a different operating system, Foxglove Studio can communicate with your robot out-of-the-box.
Modular and extensible
Every view in Foxglove Studio is a customizable layout, made up of configurable data exploration tools called panels. Our panels can do everything from rendering interactive charts and 3D scenes, to displaying camera images and diagnostic logs. Using these modular panels, you can effectively build a custom robot control center from scratch to support your every possible workflow.
Here are some of our most commonly used panels:
- 3D panel – Display visualization markers (e.g. point clouds, bounding boxes, classification labels) in a 3D scene
- Image panel – View images from your robot’s cameras
- Plot panel – Plot values from incoming data in interactive charts
- Raw Messages panel – Drill down into your incoming data
Most recently, we’ve added the following panels to tackle common robotics tasks:
- Map panel – Display
sensor_msgs/NavSatFixmessages as points on a map.
- Parameters panel – Read and set rosparams from your connected ROS source.
- Topic Graph panel – Render a graph showing the current ROS node and topic topology.
- URDF Viewer panel – Use a Unified Robot Description Format (URDF) file to visualize your robot model.
Studio also provides a flexible Node Playground panel, where users can write custom data transformations in a code editor sandbox – to test out experimental outputs, or to create visualizations on the fly.
We’re partnering with our most important collaborators – our users – to build the future of Foxglove Studio.
Even with our best efforts to release and maintain tools that help every roboticist, we know a one-size-fit-all approach doesn’t cover every possible use case or meet every specific need. We don’t want Studio to limit your workflow options, or otherwise constrain how you can leverage our tools in the future.
That is why we’ll be implementing a public API for roboticists to build their own panels that encapsulate the project-specific functionality they need. This will go hand-in-hand with our extensions library, also in the works: in the same way Visual Studio Code has a rich ecosystem of plugins, we want Studio users to be able to browse a library of user-contributed extensions build to customize every aspect of the in-app experience. These changes will empower roboticists with any niche development needs to contribute their own custom tools that plug and play within the Studio ecosystem.
We’re also looking to integrate with new data formats beyond ROS 1. Please reach out with any data protocols or serialization formats you would like Studio to support.
Stay in touch
We hope this post helped introduce you to the world of Foxglove Studio. At Foxglove, our North Star is to streamline how you explore and extract insights from your robotics data. We hope Studio helps lower the barrier to entry for understanding your robot – on your journey from prototype to polished product.
We’re thrilled you’ve stumbled upon our community, and we hope you get involved! Let us know what you think is worth building next. Our codebase is written in TypeScript for easy contributing – feel free to open a pull request, or share your feature requests via our Slack concierge.
We know Foxglove Studio could not exist without the hard work of our colleagues at Cruise, especially those building Webviz. We stand on the shoulders of giants, and we hope our own open source contributions help the robotics community rush towards the bleeding edge of our field.
Get blog posts sent directly to your inbox.