#!/usr/bin/env python3 from __future__ import annotations import argparse import base64 import json import urllib.request from pathlib import Path def main() -> None: parser = argparse.ArgumentParser() parser.add_argument("--url", default="http://127.0.0.1:8080") parser.add_argument("--image", type=Path, required=True) parser.add_argument( "--state", type=Path, required=True, help="JSON file containing a 61-float array.", ) parser.add_argument("--instruction", required=True) parser.add_argument("--control-index", type=int, default=0) args = parser.parse_args() payload = { "image_jpeg_base64": base64.b64encode(args.image.read_bytes()).decode(), "state": json.loads(args.state.read_text()), "instruction": args.instruction, "control_index": args.control_index, "autonomous_recovery": True, } request = urllib.request.Request( f"{args.url.rstrip('/')}/predict", data=json.dumps(payload).encode(), headers={"Content-Type": "application/json"}, method="POST", ) with urllib.request.urlopen(request) as response: result = json.load(response) print(json.dumps(result, indent=2)) if __name__ == "__main__": main()