article
visualization

Introducing Foxglove: A New Way to Visualize and Debug Robots

Inspect your robotics data with our web and desktop apps

article
visualization

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 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 can help you spend less time fighting your tools, and more time focusing on what your robots are doing.

Why Foxglove?

With Foxglove, 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.

Cross-platform

Foxglove is conveniently packaged as a desktop app for Linux, Windows, and macOS. Making Foxglove a desktop application has unlocked some unique benefits. Because Foxglove 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 works cross-platform – even if your ROS stack is running on a different operating system, Foxglove can communicate with your robot out-of-the-box.

Modular and extensible

Every view in Foxglove 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
common panels

Most recently, we’ve added the following panels to tackle common robotics tasks:

new panels

Foxglove also provides a flexible User Scripts 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.

Public API

We’re partnering with our most important collaborators – our users – to build the future of Foxglove.

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 Foxglove 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 Foxglove 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 Foxglove ecosystem.

We’re also looking to integrate with new data formats beyond ROS 1. Please reach out in Discord with any data protocols or serialization formats you would like Foxglove to support.

Stay in touch

We hope this post helped introduce you to the world of Foxglove. At Foxglove, our North Star is to streamline how you explore and extract insights from your robotics data. We hope Foxglove 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 - you can share your feature requests in our Discord community.

To see Foxglove in action, download the app and start tinkering!

Special thanks

We know Foxglove 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.

Read more

Start building with Foxglove.

Get started for free