import { usePolicyCameraTensors, useAfterPhysicsStep } from "mujoco-react";
import * as ort from "onnxruntime-web";
function PolicyLoop({ session }: { session: ort.InferenceSession }) {
const cams = usePolicyCameraTensors({
streams: [
{ key: "wrist", cameraName: "wrist_cam", width: 96, height: 96, layout: "CHW" },
{ key: "front", cameraName: "front", width: 96, height: 96, layout: "CHW" },
],
});
useAfterPhysicsStep(async () => {
const { tensors } = cams.capture();
const wrist = new ort.Tensor("float32", tensors.wrist.data, [1, ...tensors.wrist.shape]);
const front = new ort.Tensor("float32", tensors.front.data, [1, ...tensors.front.shape]);
const out = await session.run({ "observation.images.wrist": wrist, "observation.images.front": front });
// apply out to controls...
});
return null;
}