Foxglove vs. RViz

How Foxglove compares to the original ROS visualization tool.
Esther WeonEsther Weon ·
5 min read
Published
Foxglove vs. RViz

Note: This article has been updated as of 2024-04-11

When roboticists see Foxglove, they may be reminded of another popular data visualization tool: RViz. Many of our users used RViz to debug their data before switching to Foxglove, and many newcomers to Foxglove are unclear about these tools' unique strengths and weaknesses.

So let’s get into it – why should you use Foxglove, when you may already know how to visualize your robotics data with RViz?

Similarities

Let's start with what these tools have in common – namely, their goal to make robotics data debugging intuitive and accessible.

3D scene visualization

Iterating on a robot is difficult without understanding what it is currently seeing and thinking in 3D space. While debugging "two-dimensional data" may be easy enough with plots and logs, debugging 3D data purely by a stream of numeric outputs is nearly impossible. Instead of visualizing data like position coordinates and orientation in your mind’s eye, tools like RViz and Foxglove provide rich visualization environments to help you see the world in 3D like your robot does.

Foxglove's 3D panel

Both RViz and Foxglove can display sensor data (camera images, laser scans, point clouds), state information (tracked objects, planned trajectories, system health), and visualization markers to delineate information of interest (labels, bounding boxes, 3D models). Combined in one rich 3D scene, they paint a picture of what a robot perceives in its environment, how it predicts its environment to change, and how it plans to execute tasks within that environment. All this information allows roboticists to determine how effective their robots currently are, and how they can be improved.

Configurable

Both RViz and Foxglove allow you to determine exactly how you want your visualizations to look. You can toggle the appearance of various markers, or adjust their various attributes like size, shape, and color.

Foxglove's 3D panel settings Foxglove's 3D panel provides visualization settings per displayed topic.

Both apps also support user-contributed extensions. In RViz, you write plugins in C++ and compile them before installing. In Foxglove, you write custom panel extensions in HTML & JavaScript to install in your local instance of Foxglove. For both apps, this extensibility empowers robotics companies to meet their unique requirements with custom-built tools that share a common base platform.

Differences

While their goals and development philosophies may be similar, Foxglove and RViz are built to solve different problems.

Scope of visualization

Out of the box, RViz was primarily designed to help you see your robot’s environment via camera images and 3D markers. The ROS ecosystem offers other visualization tools like rqt_multiplot, rqt_runtime_monitor, and rqt_graph to solve other problems like logging outputs or plotting data in charts, but RViz focuses on the 3D view.

RViz with image and 3D view RViz displays your robot's camera images and an annotated 3D scene.

Foxglove, on the other hand, offers many different visualization tools, or panels, that you can arrange into a layout of your choice. These panels are conveniently integrated into one environment, so you only have to download one app, instead of searching for, installing, and learning how to use multiple tools.

In fact, Foxglove has two panels – the Image and 3D panel – that essentially encompass the scope of what RViz helps users visualize. The Image panel, as its name suggests, displays images recorded by your robot’s camera sensors, while the 3D panel displays all available sensor data and visualization markers in the context of an interactive 3D scene. The markers and message types supported by the 3D panel are listed in the docs.

Foxglove with Image, 3D, and other panels Foxglove also displays images and 3D scenes, alongside many other visualizations not included in RViz.

Foxglove does the legwork for you, collecting all the tools you need to debug your robotics data into one integrated workflow. Many of these tools have ROS equivalents – Foxglove’s Plot panel, for example, mirrors some of the functionality in ROS’s rqt_plot. As an added bonus, can preserve the layout of your panels, allowing you to switch between pre-designed workspaces with the click of a button, instead of manually rearranging different tools on your desktop every time you need them.

File playback

RViz does not have the built-in ability to play back .bag files. To view your ROS data in RViz, you will need to use a separate CLI tool like rosbag (ROS 1) or ros2 bag (ROS 2) to play back the desired file.

Foxglove, on the other hand, makes it exceptionally easy to load .bag, .db3, and .mcap files for playback. You can specify the file to load (ROS 1 or 2, local or remote) from the app’s Data sources tab, or simply drag and drop a local file into the app to start playing. Foxglove also offers interactive playback controls to adjust playback time, view the current timestamp in different formats, and scrub back and forth in time.

Cross-platform

As a part of the ROS ecosystem, RViz requires ROS to be installed and set up properly. If your machine doesn’t fall into the category of the few Tier 1 platforms supported by ROS (Ubuntu and Windows 10), you will have to run your ROS environment inside a virtual machine, making it that much more difficult to connect to your robots and data.

Installing native ROS tools often requires hours of head-scratching and fine-tuning a very specific environment to get things working. Foxglove minimizes the friction of adopting a new tool by being accessible in two simple ways – as a stand-alone web app and desktop app, without a slew of other dependencies. To quickly view your robot's data without downloading a desktop app, simply navigate to app.foxglove.dev in a browser; to use the desktop app, download the appropriate installer for macOS, Windows, or Linux. It's important to note that some features – like native ROS connections and custom panel extensions – are only available on desktop. No matter your setup, you can get started with Foxglove in minutes, if not seconds.

Collaboration

RViz is great for visualizing your robotics data as a solo roboticist, but it doesn’t offer built-in features to facilitate sharing your work with a larger team. Apart from publishing plugins that other RViz users can download, you don’t have many options for sharing your RViz debugging setup with others.

Foxglove offers custom extensions, which are somewhat analogous to RViz’s plugins – these are also available in an extension marketplace where users can browse what custom visualizations they may need. It’s easy to write visualizations or display data however you like.

But Foxglove takes it a step further with two team-specific features. Team layouts allow you to create, edit, and share your layouts with the rest of your organization. Foxglove also allows any member of your team to upload, access, and explore team data in one central repository. Use Foxglove’s convenient web interface to locate events of interest, then stream them directly into a visualization for further analysis.

Foxglove's Files page

Foxglove provides one central data repository that allows you to upload, explore, and stream your robotics data.

Foxglove currently supports ingesting ROS 1, ROS 2, and MCAP data. Check out the docs for more information on importing data, as well as more details on integrating with custom data formats.

Open source and commercially available

RViz is open source and available to the public at no cost, with of course the exception of your organization's dedicated engineering and support time to keep it running efficiently. To use RViz, you must first have ROS 1 or ROS 2 installed and set up on your computer. As for ongoing development, RViz is an actively maintained project, with frequent contributions from maintainers and open source users alike.

Foxglove is a commercial offering with a generous free plan and is free to students, researchers, and educators. To use Foxglove, you can navigate to app.foxglove.dev in a browser, or download the desktop app for Windows, Linux, or macOS. Foxglove collaborates closely with everyone from professional robotics engineers and hobbyists in the open source community to our colleagues at Open Robotics. We discuss our development plans across GitHub, Slack, and Twitter, and post community announcements to our blog and newsletter.

Stay in touch

Whether you work in agriculture, aerospace, ocean exploration, autonomous driving, or any industry advancing robotics, we want Foxglove to help your team unlock new workflows and iterate more quickly on exciting new technologies. Foxglove’s integrated environment, cross-platform support, and rich visualization and collaboration features make it another powerful tool in your robotics development toolbelt.

We’re continuing to work with industry decision makers to shape the future of robotics development for everyone. If you have any feedback you’d like to share, join our Slack community or find us on GitHub and Twitter. To get started, download the app or head over to https://app.foxglove.dev/signup to see how you can accelerate your team’s robotics development.


Read more:

Using Protobuf Data with the Foxglove WebSocket Connection
tutorial
visualization
Using Protobuf Data with the Foxglove WebSocket Connection

Write a simple WebSocket server that loads Protobuf data into Foxglove Studio

Jacob Bandes-StorchJacob Bandes-StorchJacob Bandes-Storch
8 min read
Announcing the Foxglove WebSocket Protocol
article
visualization
Announcing the Foxglove WebSocket Protocol

Load JSON, Protobuf, or other custom data into Foxglove Studio

Jacob Bandes-StorchJacob Bandes-StorchJacob Bandes-Storch
5 min read

Get blog posts sent directly to your inbox.

Ready to try Foxglove?

Get started for free