PX4 ULog file reader
npm install @foxglove/ulog> _PX4 ULog file reader_
A web and node.js TypeScript library for reading PX4 ULog files, from the PX4 Autopilot system for drones and other autonomous vehicles.
``typescript
import { MessageType, ULog } from "@foxglove/ulog";
import { FileReader } from "@foxglove/ulog/node";
async function main() {
const ulog = new ULog(new FileReader("../path/to/file.ulg"));
await ulog.open(); // required before any other operations
console.log(ulog.messageCount()); // ex: 64599
console.log(ulog.timeRange()); // ex: [ 0n, 181493506n ]
// build a map of subscription ids to message counts
// NOTE: readMessages() iterates over DATA section messages in timestamp order
const msgIdCounts = new Map
for await (const msg of ulog.readMessages()) {
if (msg.type === MessageType.Data) {
// NOTE: msg.value holds the deserialized message
msgIdCounts.set(msg.msgId, (msgIdCounts.get(msg.msgId) ?? 0) + 1);
}
}
// convert the subscription ids to message names
const msgCounts = Array.from(msgIdCounts.entries()).map(([id, count]) => [
ulog.subscriptions.get(id)?.name ?? unknown msg_id ${id},
count,
]);
console.log(msgCounts);
// ex: [ [ 'vehicle_attitude', 6461 ], [ 'actuator_outputs', 1311 ], ... ]
}
void main();
`
@foxglove/ulog is licensed under the MIT License.
1. Run yarn version --[major|minor|patch] to bump versiongit push && git push --tags` to push new tag
2. Run
3. GitHub Actions will take care of the rest
Join our Discord to ask questions, share feedback, and stay up to date on what our team is working on.