Skip to main content

13 posts tagged with "SDK"

Release notes for the Foxglove SDK.

View All Tags

SDK v0.8.0

Foxglove SDK

This release provides additional functionality for WebSocket services and examples for usage.

Python

Adds Message.get_schema() and various channel getters

Rust

Adds a foxglove::Encode derive macro to automatically serialize structs and enums.

Log timestamps may now be specified as u64, Timestamp, SystemTime, or DateTime.

C++

The C++ library now supports logging Foxglove-defined schemas.

It also provides more functionality for live visualization, including services, assets, websocket parameters, and parameter subscriptions.

Changed

Python

  • Add simple example of writing RawAudio messages to an MCAP
  • Add Message.get_schema() and various channel getters

Rust

  • Add shutdown handle for WebSocket server
  • Add foxglove::Encode derive macro
  • Add features for derive, lz4, schemars, zstd
  • Accept u64, Timestamp, SystemTime, and DateTime as log timestamps

C++

  • Catch callback exceptions
  • Provide an interface to set the level of SDK stderr logging
  • Add support for services, assets, websocket parameters, and parameter subscriptions
  • Add support for broadcasting time
  • Add WebSocket clear session and publish status
  • Add foxglove schemas with example

Docs: Introduction | Reference: Rust, Python, C++ | Source: github | C++ Artifacts: github

SDK v0.7.1

Foxglove SDK

Python

  • Context is now available for associating channels and sinks.

Rust

  • Some handler types on WebSocket FetchAsset and Service have changed.
  • The log! macro properly re-uses matching channels.

C++

  • Context is now available for associating channels and sinks.
Fixed
Changed

Docs: Introduction | Reference: Rust, Python, C++ | Source: github | C++ Artifacts: github

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 and SceneUpdate
  • 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()

# Close the mcap writer with close() or the with statement
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),
),
))
tip

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++
warning

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