Skip to main content

Foxglove v2.4.0

📞 Better ROS Service call integration

We’ve improved the Foxglove client integration with ROS Services to allow Foxglove to be aware if a service is unavailable and the service has failed. The Foxglove WebSocket protocol now has a serviceCallFailure operation that can communicate to custom panels or the Foxglove Service Call panel when a call fails.

📈 Resizable reference lines in the Plot panel

Did you know you can create reference lines in the Plot panel? Now you can adjust the size of reference lines to improve their visibility.

Resizable Reference Line GIF

New & Improved
  • Added helper text for escaping special characters when they show up in queries
  • Updated styling of plot tooltip to improve readability as data changes
  • Improved support for common ROS2 Iron datatypes when connecting live over Foxglove bridge
  • Added helper text to the Teleop panel when the publish rate is misconfigured
  • Extended OMG IDL support so mutable structs can now be decoded when non-optional fields are not present in the received message
Performance
  • Reduced the state transition panel’s memory use as part of our perpetual commitment to performance improvements
Fixes
  • Fixed an issue causing the app to crash on startup on Ubuntu 24.04
  • Fixed a bug causing ImageAnnotations points to disappear when zooming and panning
  • Fixed deep links not working in some instances
  • Restarting the app with ctrl/cmd+R now reconnects to live data sources
  • Fixed an issue where Safari autofill was blocking some dropdown lists
  • MCAP files with empty schema records no longer cause Edge Site uploads to get stuck
  • Fixed an issue where some data might be missed when visualizing ROS .bag files
  • Fixed a bug where non-ASCII strings would be truncated when publishing messages to a ROS 1 server
  • Fixed an issue where, in some cases, the state transition panel would reset its view after you zoomed in on live data
  • Added protections and a friendly error message when a race condition is triggered by uploading the same extension twice

Edge Site v0.0.24

This release contains some minor fixes.

Fixes
  • Fixed a bug where new recordings might trigger an internal conflict when they have the same topics as previous recordings

Docs: About | Install | Upgrade

Foxglove v2.3.0

📹 Low-latency multi-video playback

Buckle up for smoother video loading: We've made performance improvements to video playback so you get a low latency experience when visualizing multiple CompressedVideo topics at once.


Foxglove v2.2.0

3D

Have you ever wanted to get a 3D view of the entire world? One of our users did, but had some issues with z-fighting that kept the visualization within Foxglove from looking as sharp as it should. We think that outer-space fighting should be limited to intergalactic battles, so we added a new setting to enable a logarithmic depth buffer, which can improve rendering precision for large distance scales.

Using this feature may lead to a loss in rendering performance, but may be worth the price for users looking to visualize Earth-scale data, large maps, or just wanting to zoom in/out really, really far.

In this example below:

  • The left pane does not use logarithmic depth, and it has a near clipping plane of 1.0. The grids render smoothly, but objects close to the viewer are clipped.
  • The middle pane does not use logarithmic depth, and has a near plane of 0.01. The viewer can get closer to objects without clipping, but rendering artifacts (z-fighting) appear between multiple grids.
  • The right pane enables the new logarithmic depth setting. This avoids z-fighting by providing more depth precision for the grids, while still allowing a near plane value of 0.01 for reduced clipping.

Services

The Service Call panel now has an option to hide the request and response text fields. This allows you to configure a request once up front, then invoke the service call without any distractions. We love distractions, but only the kinds that have wet noses and wagging tails.

image

JSON data sources

  • When using a WebSocket connection, JSON channels and services with no schema are now supported (using an empty string for the schema name and data).
  • Added support for fixed-length arrays (specified with prefixItems).

Stability and usability

  • The web application no longer encounters errors when a new version is released while the app is already open.
  • Various usability enhancements to Recordings, General and Team settings, Webhooks, data playback while buffering, and deep linking.
  • Improvements to error messages for opening incompatible files and layouts, and for WebSocket connections that encounter unexpected server behavior.

Foxglove v2.1.0

User scripts

  • Improvements to user scripts to allow returning types that consist of  fields or fields with types:
type Output = {
field1: Message<"std_msgs/String">;
field2: Array<number>;
};

It is now possible to create elaborate return types, for example:

import { Input, Message, Time } from "./types";
import { subtractTimes } from "./time";

type InputType = Message<"geometry_msgs/PoseStamped">;
type Output = {
header: InputType["header"];
time_diff: Time;
translation: Message<"geometry_msgs/Vector3">;
random_array: Array<number>;
};

export const inputs = ["/pose_stamped"];
export const output = "/pose_difference";

let lastMessage: InputType | undefined;

// Calculates translation & time difference between two subsequent poses.
export default function script(event: Input<"/pose_stamped">): Output | undefined {
const message = event.message;

if (!lastMessage) {
lastMessage = message;
return undefined;
}

const output: Output = {
header: message.header,
time_diff: subtractTimes(message.header.stamp, lastMessage.header.stamp),
translation: {
x: message.pose.position.x - lastMessage.pose.position.x,
y: message.pose.position.y - lastMessage.pose.position.y,
z: message.pose.position.z - lastMessage.pose.position.z,
},
random_array: [Math.random(), Math.random()],
};

lastMessage = message;
return output;
}

Snap package

  • Added interface to support using Foxglove with gamepads via the Snap Store.

Performance

  • Playback performance improvements when buffering data.

Foxglove v2.0.0

For more information, see our Foxglove 2.0 Announcement.

Smoother navigation

  • You can now visualize your data and manage your Devices, Recordings, and Events all in the same app. This new workflow is available both in the desktop app and at https://app.foxglove.dev/. Click the Foxglove logo to access the new navigation from the visualization screen:

  • When opening the app, you will now be greeted with the Dashboard. The “Open local file”, “Open connection”, “Recently viewed”, and “Explore sample data” features are now part of the Dashboard.

Performance improvements

  • We’ve made performance improvements across plots, user scripts, 3D models, H.264 video, and general playback.
  • Fixed an issue where Windows 11 would put the app into “efficiency mode”, degrading app performance.

More panel actions

  • The panel actions overlay now has separate buttons to split right and split down, rather than a single split button that chooses a split direction automatically. Hold the backtick (`) key and hover over a panel to access the quick actions:

Playback and data sources

  • The playback speed setting is no longer saved per-layout; instead, the setting will persist for an individual user/browser.
  • Topics using OMG IDL schemas now support optional member fields on mutable structs.
  • Fixed an issue with loading glTF models via package:// URLs over a WebSocket connection.
  • The “Message rate” setting has been removed. Adjusting this setting did not always have the intended effect, and the application already adapts dynamically to system performance.

Plots

  • The Plot panel now displays more information about series errors and warnings in the legend.

  • Fixed some visual alignment issues in Plot and State Transitions.

3D

  • Fixed an issue in the 3D panel where the scene would not exactly track the mouse while panning in 2D mode.

Log

  • The Log panel now supports Message Converters with a toSchemaName that matches one of the panel’s supported schemas.

Extensions

  • Fixed a bug that caused a message converters to be run on allFrames when they should not have been.

Agent v1.1.1

This release contains minor fixes.

Fixes
  • Fixed a bug when using auto-import where the Agent would see 401 unauthorized errors when requesting device information

Docs: About, Install | Debian Packages: amd64, arm64 | Binary Files: amd64, arm64