Skip to main content

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.

Downloads: Linux: deb amd64 arm64, snap amd64 | Windows: Universal | Mac: Universal