Foxglove is an observability tool for robotics. It provides a rich suite of configurable tools to quickly and easily understand what your robot is doing in real-time – all in one seamless development environment.
Foxglove is both fully integrated and flexible – it combines a host of common native ROS tools (and others) as modular panels in one easy-to-use desktop or web app, but allows users to determine what tools they want to leverage.
Foxglove is available for download as a desktop app on Linux, Windows, and macOS.
- Maintainer status: maintained
Maintainer: Foxglove <contact AT foxglove.dev>
Issue tracker: https://github.com/orgs/foxglove/discussions
Documentation: https://docs.foxglove.dev/
Features
Foxglove can inspect your robotics data via a running ROS connection (i.e. a live robot, simulation, etc.) or from a recorded ROS .bag file.
Most ROS tools are only supported on Linux, but Foxglove works cross-platform on Linux, Windows, and macOS. Even if your ROS stack is running on a different operating system, Foxglove can communicate with your robot without a hitch.
Arrange and configure any of the available data visualization tools, called panels, into customizable layouts that you can then share with your teammates.
While Foxglove offers a suite of general-purpose tools for robotics data visualization & debugging, many users have domain-specific needs that our out-of-the-box offering does not address. To empower users to develop tools customized to their specific needs, Foxglove provides an extension API for building & installing your own panels. These custom extensions can then be loaded and executed in the Foxglove app.
Foxglove also provides User Scripts, a code editor sandbox that allows you to publish pseudo-ROS topics internally to Foxglove. Manipulate, reduce, and filter existing ROS messages in a way that is useful for visualization in the rest of the app.
With our flexible panels and powerful extension API, there's no limit to how you can use Foxglove to gain insight into your robotics data.
Open Source Software
Open source software has played a huge role in helping us develop Foxglove, and we're committed to contributing software back to the community.
We've published several npm packages to facilitate common development tasks – like serializing / deserializing data, parsing message definitions, and exposing helper methods for data manipulation. While these packages were originally developed for Foxglove, they can be included in any TypeScript or JavaScript project.
For ROS:
@foxglove/ros1 - TypeScript implementation of ROS 1 protocol with a pluggable transport layer
@foxglove/rosbag - ROS 1 bag reader and writer abstract implementation
@foxglove/rosbag2 - ROS 2 bag reader and writer abstract implementation
@foxglove/rosbag2-node - ROS 2 bag reader and writer for Node.js
@foxglove/rosbag2-web - ROS 2 bag reader and writer for the browser
@foxglove/rosmsg - ROS 1 and 2 message definition parser
@foxglove/rosmsg-msgs-common - Common ROS message definitions using @foxglove/rosmsg
@foxglove/rosmsg-msgs-foxglove - Foxglove ROS message definitions using @foxglove/rosmsg
@foxglove/rosmsg-serialization - ROS 1 message serialization for reading and writing bags and network messages
@foxglove/rosmsg2-serialization - ROS 2 message serialization for reading and writing bags and network messages
@foxglove/rostime - Primitives and helper methods for ROS Time and Duration
Resources
To learn more, review the following resources:
You can also join us on the following platforms to ask questions, share feedback, and stay up-to-date on what our team is working on:
NOTE: Foxglove began as a fork of Webviz, an open source project developed by Cruise.