wifi-densepose-worldmodel 0.3.0

ADR-147 — OccWorld thin-client bridge: WorldGraph PersonTrack history → OccWorld Python subprocess → TrajectoryPrior
Documentation

wifi-densepose-worldmodel — OccWorld thin-client bridge (ADR-147).

Bridges [wifi_densepose_worldgraph] PersonTrack history to the OccWorld Python inference subprocess and returns [TrajectoryPrior]s that can be injected into the Kalman pose tracker.

Quick start

use wifi_densepose_worldmodel::{
    OccWorldBridge, OccupancyWorldModelRequest, OccupancyGrid3D,
    SceneBoundsJson, worldgraph_to_occupancy,
};
use wifi_densepose_worldmodel::occupancy::{PersonPosition, SceneBounds};

# async fn example() -> Result<(), wifi_densepose_worldmodel::WorldModelError> {
let bridge = OccWorldBridge::new("/tmp/occworld.sock");

let bounds = SceneBounds { min_e: -10.0, min_n: -10.0, max_e: 10.0, max_n: 10.0 };
let persons = vec![
    PersonPosition { track_id: 1, east_m: 2.0, north_m: 3.0, up_m: 1.0 },
];
let frame = worldgraph_to_occupancy(&persons, &bounds, 0.1);

let request = OccupancyWorldModelRequest {
    past_frames: vec![frame],
    voxel_resolution_m: 0.1,
    scene_bounds: SceneBoundsJson {
        min_e: bounds.min_e, min_n: bounds.min_n,
        max_e: bounds.max_e, max_n: bounds.max_n,
    },
    prediction_steps: 15,
};

let response = bridge.predict(request).await?;
println!("confidence={:.2}", response.confidence);
for prior in &response.trajectory_priors {
    println!("track {} has {} waypoints", prior.track_id, prior.waypoints.len());
}
# Ok(())
# }