rvl-depth-decoder
v1.0.0
Published
Foxglove schema converter that turns RVL compressed depth images into sensor_msgs/Image depth frames.
Readme
RVL Depth Decoder
This Foxglove extension registers a schema message converter that turns
sensor_msgs/CompressedImage messages published with
<encoding>; compressedDepth rvl payloads into standard sensor_msgs/Image
frames. Only the RVL codec described in
compressed_depth_image_transport is
handled today.
Features
- Detects compressed depth messages that advertise the RVL codec.
- Mirrors the RVL bitstream decoder from the ROS encoder, supporting
16UC1and32FC1output encodings (32F output is reconstructed from the quantized inverse-depth fields embedded in the compressed payload). - Registers converters for both ROS 1 (
sensor_msgs/…) and ROS 2 (sensor_msgs/msg/…) schema names so either dialect can be decompressed.
Usage
Install and build the extension:
npm install npm run local-installRestart or reload Foxglove so it picks up the new extension bundle.
Load a bag or live connection that publishes RVL
CompressedImagemessages, e.g./camera/aligned_depth_to_color/image_raw/compressedDepth.When subscribing to the topic inside a panel, choose Convert to →
sensor_msgs/Image(orsensor_msgs/msg/Image). Foxglove will invoke the converter and surface a regular depth image topic that downstream panels can consume.
The converter validates the RVL header (quantization parameters, rows, and
columns) before decoding. If the payload is too small, malformed, or does not
declare compressedDepth rvl, the converter returns undefined and Foxglove
falls back to the original message.
Developing & Packaging
Standard extension workflows still apply:
npm run buildbundles the code.npm run local-installcopies the build into~/.foxglove-studio/extensions.npm run packagecreates a distributable.foxearchive (set thename,publisher,version, anddescriptionfields inpackage.jsonbefore shipping).
