Skip to content

Blog

The Evolving Landscape of ROS Visualization

When I first started working with ROS back in 2018, I was just getting my feet wet in the world of mobile robotics. ROS has been around since 2011. Since then, RViz was the de facto 3D visualization tool, and rqt_plot was the go-to option for visualizing time series data from ROS topics. These tools were essential, if somewhat limited.

Fast forward to 2025, and the ROS visualization ecosystem has come a long way. Over the years, we’ve seen several visualization tools enter the space—some enduring, some fading away. One notable effort was Webviz by Cruise Automation, an open-source web-based visualizer for ROS bag files. Although Webviz offered a modern interface and browser-based convenience, active development was discontinued after Cruise shifted focus around 2021–2022 (source). The GitHub repository remains available, but it is effectively unmaintained.

On the other hand, PlotJuggler has remained a reliable tool for introspecting ROS data. It supports dynamic message parsing, real-time plotting, and flexible drag-and-drop layouts for time series inspection. It's still under active development and often integrated into real-world robot debugging workflows.

Then came Foxglove Studio—a cross-platform, modern visualization tool inspired by Webviz. Released in 2021, Foxglove Studio supports live data streaming and ROS bag playback, and provides powerful extensibility via plugins and custom panels. It works with both ROS 1 and ROS 2, making it a popular choice in today’s hybrid robotic stacks (GitHub).

Tool Pros Cons
RViz Open source, ROS-native, 3D capable Requires roscore; not ideal for offline bag inspection
Webviz Browser-based, open-source, intuitive UI No longer actively maintained by Cruise
PlotJuggler Dynamic message parsing, flexible layouts UI can be overwhelming for new users
Foxglove Web-native, cross-platform, ROS 1 & 2 support Some features gated behind cloud services or setup overhead

Between 2018 and 2025, as someone working on real-world robotics systems, visualizing ROS bags at scale has remained a tough challenge. At the end of the day, do you have enough human hours to manually inspect 10, 100, or even 1,000 bag files?

Some may argue that automation is the answer: write code to flag issues programmatically. And while that’s partially true, the reality is that you often need to see the problem first before you can define it well enough to detect it automatically. This is where visualization remains indispensable.

You don't want your most skilled developers spending time manually reviewing every bag file. Investigating visual anomalies—like odd navigation behavior or sensor glitches—is something the human eye excels at. Sure, AI can help here, but training those models still requires significant human input.

While large language models benefit from vast, general-purpose datasets, robotics data is much more domain-specific. It often requires specialists to label and annotate correctly, especially for nuanced behaviors that only an experienced engineer would recognize.

To support my personal learning—and to help tackle this problem at scale—I decided to build a custom, static visualization using Bokeh, a Python-based interactive plotting library. For ground mobile robots, I’ve found that 2D visualization is often sufficient for trained specialists to review and interpret the data effectively.

While Bokeh doesn’t yet offer strong support for 3D visualization, its 2D rendering capabilities are both elegant and performant. It outputs pure HTML and JavaScript, enabling animations to run smoothly in-browser without requiring any backend. Even better, these HTML files are fully self-contained and portable—they can be hosted on any static web server or opened locally with just a double-click.

To be continued ...

College is a Stock Option

Recently I came across Professor Andrew Lo's MIT OCW videos on Finance theory on youtube. In the video talking about stock options, he used the analogy of thinking of higher education as a option, or a call option to be exact. You paid tuition as premium. At the end of the 4 years, the degree may earn you a job with a good starting salary, just as the value of the option become as the stock price hit the strike price. The most you can lose is the tuition aka option premium.

This is a pretty compelling point to counter the catch all "College is a scam" trend that is floating around social media nowadays. College is an option but not a guarantee, you can lose your premium if you don't pick the right stock. You will also need to put extra effort in college, as compare to an option.

Aspect Higher Education Stock Options
Investment Tuition, time, and effort to gain knowledge, skills, and credentials. The premium paid to acquire the option.
Potential Benefit Higher lifetime earnings, career mobility, and personal growth. Unlimited profit if the stock price moves favorably.
Risk Losing tuition and time if the education is not leveraged effectively. Loss of the premium if the stock price doesn’t move favorably.
Effort Required Active participation (studying, internships, networking) to realize the benefits. None after purchase; value depends solely on market movements.

toolbag

After putting this off for a while, I decide to combined all the frequently used tools in a single Command Line tool so I don't have to memorize the commands that I've developed.

i.e. type toolbag on the terminal then press Enter and it will remind me of what tools I have.

For example, downloading youtube videos

toolbag ytdl --url [Youtube URL]
More tools coming up:
- Stocks download and analysis
- ROS data visualization and analysis

Source: toolbag

Command Hub (cmdhub)

I always wanted to build a minimal workflow automation UI where you have some predefine buttons which execute certain commands that you define in a text files. There are existing tools such as Jenkins and Rundeck that offer similar capabilities. However I'd like something custom to my need in a compact format, i.e execute commands/python scripts, display the text output all in 1 page.

To get started I asked ChatGPT to give a directory structure of such application using Flask and HTML/Javascript. I gotta say it got very close to what I need after a few hours of iterations. I'm too knowledgable in HTML and Javascript, but ChatGPT help me tremendously by saving time to google search.

Source: cmdhub

Image title

After this, I feel the prospect of generative AI world is exciting yet scary. At this pace, when will machines replace human in white collar jobs ?

ML on the weather news channel

I came upon a news video talking about weather forecast and the effect of Machine Learning on the speed and accuracy of ML compared to traditional weather model (I'm guessing numerical physics model). I gotta say I'm quite impressed by how popular ML is getting especially getting a piece on the news.

Image title

The ML model is also found to outperform the conventional models. However ML model does require more data.

Image title

Source: How AI is chaning the game for weather forcasting

Github: Graphcast

Blogging start

I want to start logging what I've learned and observed over time. My future self looking back at this may be interesting. =)