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(())
# }