Agent v1.4.0
Agent
This release of the agent features a new TLS implementation and a statically-linked binary.
Changed
- Switched from OpenSSL to rustls.
- Removed the runtime dependency on glibc by statically linking the agent binary against musl.
Docs: About, Install | Debian Packages: amd64, arm64 | Binary Files: amd64, arm64
Foxglove 2.27.1
This release contains minor feature and performance improvements.
New & Improved
- Renaming a previously deleted and then restored extension is now allowed
- The measurement tools now show distance for all path-based plots, not just those with a 1:1 axis scale
Performance
- Improved 3D panel performance for scene entity arrows when there are many scene entities
Downloads: Linux: deb amd64 arm64, snap amd64 | Windows: Universal | Mac: Universal
Foxglove 2.27.0
⛰️ Support for Grid Maps in 3D
We've added support for visualizing grid_map_msgs/GridMap
messages in Foxglove. Grid Maps can be used to represent and visualize 2.5D height map information as well as other layers in the 3D panel. Common data layers stored in GridMap
include elevation, variance, color, friction coefficient, foothold quality, surface normal, traversability, and more.
For visualizing surfaces in the 3D panel, Foxglove currently supports two interpolation methods between points:
- Nearest neighbour: Creates cube volumes at the nearest grid point containing the elevation data (faster, less accurate representation of the surface).
- Linear: The value of any point (x, y) on the surface is estimated using bilinear interpolation or the four neighboring grid points (slower, more accurate representation of the surface).
📐 Inspect and measure points in the Plot panel
We've added inspect and measurement tools to the Plot panel. With the tool enabled, you can click on any point to highlight its x and y-values. Select a second point to view the x and y-delta between the points. Additionally, when viewing a path-based XY plot (as opposed to a time-series plot), the tool will also display the Euclidean distance between the two points.
🔬 Easier zooming in the Plot panel
We've updated how you zoom in the Plot panel for a faster and more intuitive experience. When scrolling to zoom, hold Shift
to zoom in y-axis and Alt
/Option
to zoom in the x-axis modifiers. You can also scroll either axis by hovering over the respective axis area for the plot.
📜 Quickly scroll through State Transitions
If your State Transitions panel contains a large number of rows, you can now use Shift
+ Scroll
to quickly scroll through them.
New & Improved
- Topics from scripts or converters are labeled as "from Script" or "from Converter" for topics generated by User Scripts or Converters respectively
- Non-critical URDF issues now appear as warnings instead of errors
- Added support for automatic min, max, and range detection for plots and state transitions using custom timestamp sources
Performance
- Added a "Compute vertex normals" toggle in the 3D panel to improve performance for large meshes
- Reduced initial opening time for ULog files
- Improved support for larger ULog files, enabling review of longer flight logs
Fixes
- Fixed an issue in the Plot panel where points were not displayed as expected
- Copying bigint values in the Raw Messages panel now copies them as numbers, not quoted strings
- Fixed a bug where certain paths would crash the Raw Messages panel
- Fixed an issue where the 3D panel transform tree frame list could get shuffled during looped playback
- Reduced flickering while streaming plot data
- Fixed a point cloud bug where some points would linger when in cube mode
- Fixed an issue where schemaless topics would not load from a streaming source
- Fixed an issue where holding down
z
rapidly toggled the zoom tool - Fixed the "Retry" button after a network interruption
- Fixed an issue where Plot and State Transitions panels would get stuck at deep zoom levels
- Fixed an issue in the Image panel where large images could fail to synchronize with their annotations
Downloads: Linux: deb amd64 arm64, snap amd64 | Windows: Universal | Mac: Universal
SDK v0.7.1
Foxglove SDK
Python
Context
is now available for associating channels and sinks.
Rust
- Some handler types on WebSocket
FetchAsset
andService
have changed. - The
log!
macro properly re-uses matching channels.
C++
Context
is now available for associating channels and sinks.
Fixed
- Fix log! macro to reuse matching channels by @gasmith in https://github.com/foxglove/foxglove-sdk/pull/400
Changed
- Expose logging context by @bryfox in https://github.com/foxglove/foxglove-sdk/pull/399
- Minor breaking: Changed websocket FetchAsset and Service handler types by @gasmith in https://github.com/foxglove/foxglove-sdk/pull/395
- Add context to C and C++ by @eloff in https://github.com/foxglove/foxglove-sdk/pull/364
Docs: Introduction | Reference: Rust, Python, C++ | Source: github | C++ Artifacts: github
Primary Site v0.0.67
Added
- inbox-listener: added
MAX_FINALIZATION_WORKER_COUNT
environment variable to configure the maximum worker count used to write files to the lake. This defaults to 40 and can be reduced to mitigate rate-limiting API errors from the lake bucket. When set to 0, the inbox listener uses one worker per topic in the input file.
Foxglove 2.26.0
🎨 Set URDF opacity and toggle outlines
You can now adjust the opacity of URDF models and toggle their outlines in the 3D panel. This gives you more control over how your robot models are displayed.
🔍 Marquee zoom for Plot and State Transitions panels
The Plot and State Transitions panels now support marquee zooming. Click and drag to select an area to zoom into.
⌨️ Keyboard shortcuts on desktop
The desktop app now supports keyboard shortcuts for common actions:
Action | Shortcut |
---|---|
Open a new window | ⌘ + n / Ctrl + n |
Open a recording | ⌘ + o / Ctrl + o |
Open a live connection | ⌘ + Shift + o / Ctrl + Shift + o |
New & Improved
- Replaced the floating "Reset View" button with a panel toolbar button in the Image panel
- Improved handling of improperly encoded data fields in JSON schema messages
Performance
- Improved performance in the Raw Messages panel
- Improved performance in the State Transitions panel
- Improved seeking behavior in the Image panel when viewing compressed video topics by caching keyframes
Fixes
- Fixed jitter in the Plot panel legend when hovering over plot series
- Fixed line flicker on overlapping poses in the 3D panel
- Fixed textures of COLLADA meshes not loading in certain situations
- Fixed an issue where selecting all visible items in the recordings page would show an error with open-ended date ranges
- Fixed spurious errors in 3D panel topic settings during playback loops
- Fixed inability to view and set prismatic URDF joints
- Fixed textures of URDF OBJ/GLTF meshes not loading
- Fixed a bug where state transition panels could cause misalignment with timeseries plots
- Fixed jitter when panning and zooming large path-based plots with 1:1 scales enabled
- Fixed an issue where the 3D panel would not show the selected marker when scrubbing
- Fixed an issue where the desktop app would not persist the current path on refresh
Downloads: Linux: deb amd64 arm64, snap amd64 | Windows: Universal | Mac: Universal
Agent v1.3.3
SDK v0.7.0
🥳 Initial public release of the Foxglove SDK
We're excited to introduce the Foxglove SDK, a unified toolkit that simplifies integrating your robotics stack with Foxglove. The SDK provides a single, idiomatic API for live visualization, logging, and remote monitoring.
Today, we're releasing the initial version of the Foxglove SDK for C++, Python, and Rust. Built on a shared Rust core, it ensures consistency and reduces feature drift. You can:
- Log structured data to MCAP files for offline analysis
- Stream live data to Foxglove via the WebSocket protocol
- Use high-level logging APIs for common Foxglove schemas like
CompressedImage
andSceneUpdate
- Define and log custom message types with minimal boilerplate
- Switch between live streaming and file logging using the same instrumentation
Get started
Get started in a few lines using the SDK to log your data to MCAP files, stream live data directly to the Foxglove app, or both simultaneously:
import foxglove as fg
from foxglove.schemas import Pose, PoseInFrame, Quaternion, Timestamp, Vector3
fg.start_server()
with fg.open_mcap("foo.mcap"):
fg.log("/example", PoseInFrame(
timestamp=Timestamp(sec=0),
frame_id="ego",
pose=Pose(
position=Vector3(x=1.0, y=2.0, z=3.0),
orientation=Quaternion(x=0.0, y=0.0, z=0.0, w=1.0),
),
))
Read the docs to get started.
Key features
The Foxglove SDK addresses challenges in integrating custom robotics frameworks and tooling:
- Unified Logging Interface: Record to disk or stream live data using a consistent API
- High-Level and Low-Level APIs: Choose between high-level APIs for common schemas or low-level APIs for custom serialization
- Live Visualization Support: Stream live data to Foxglove for real-time visualization
- Cross-Language Consistency: Shared Rust core ensures consistent behavior across Rust, Python, and C++
The C++ SDK is not yet feature-complete, but all languages are available for use, and we welcome your feedback.
Docs: Introduction | Reference: Rust, Python, C++ | Source: github
Primary Site v0.0.66
Fixes
-
Fixed an issue where the stream server would sometimes yield messages from earlier than expected when using the
lastPerChannel
replay policy. -
Fixed an issue where too many concurrent connections to the underlying object store would result in resource exhaustion. There is now a default limit of 1024 concurrent connections.