alt.freeweights.minicpm / MiniCPM-RobotTrack
From: openbmb <huggingface.co/openbmb>Newsgroups: alt.freeweights.minicpmSubject:

MiniCPM-RobotTrack

Date: 2026-11-15Commit: 80d32d0Signed: 2DC28CC7B26A283B ✓

Robotics model with 450M parameters. Safetensors weights, 981 MB in all. Published by openbmb under Apache-2.0.

450M params981MBMiniCPM-RobotTracksafetensorspermissive
FactsParams450MSize981 MBFormatssafetensorsTaskroboticsLicenseApache-2.0From sourcepermissive
$ fw get openbmb/MiniCPM-RobotTrack
# manifest sha256 7f8fcd779e02… · 981 MB · 28 files
$ fw verify ./MiniCPM-RobotTrack openbmb/MiniCPM-RobotTrack
From sourceHosted (signed)openbmb/MiniCPM-RobotTrackLast check: 2026-11-15 03:56 UTC

Get help: custom fine-tune or private deploy. We review your setup before we quote.

Works with

Runs with

Ranked by fit to this model (safetensors), then by GitHub stars.

Overview

Size
981 MB
Weights
931 MB (safetensors)
Parameters
450M
Formats
safetensors
Task
robotics
License
Apache-2.0 (permissive)
Files
28, each with a sha256
Publisher
openbmb
Added
2026-11-15
Section
alt.freeweights.minicpm
Lineage

Original release from the publisher.

Where these bytes come from
Publisher at the pinned commit→You

Sources are tried in order. A file counts only when its size and sha256 match the manifest. Sources are checked when you ask for them, not on a timer.

Sources
BadgeHostLast checkResult
From sourcehuggingface.co2026-11-15 03:56 UTCpassed

Model card

From the publisher at commit 80d32d0. Shown as plain text with links; images open at the publisher.

MiniCPM-RobotTrack

A Compact Vision-Language-Action Policy for Embodied target Tracking

Image: github Github &nbsp;|

Image: X X &nbsp;|

Image: Discord Discord &nbsp;|

MiniCPM-RobotTrack is a compact vision-language-action model built on MiniCPM4-0.5B for target tracking with the following highlights:

Language-conditioned target tracking: The model combines natural-language instructions with fused DINOv3 and SigLIP visual features, then directly predicts eight future [x, y, yaw] waypoints for embodied person following.

Quality-driven Self-evolving Data: Automated checks and manual review remove abnormal trajectories, incorrect actions, and invalid interactions. DAgger-style model-environment interaction continually adds difficult samples involving target crossings, rapid turns, short occlusions, and multi-person intersections.

Efficient On-device Inference: Joint optimization of visual capture, input encoding, model inference, action generation, command transmission, and execution delivers a stable 5+ FPS with approximately 180 ms end-to-end latency on the Unitree Go2's native onboard compute.

| Image: Outdoor obstacle-aware person-tracking demo

| Image: Elevator person-tracking demo

| Image: Underground parking person-tracking demo

| Outdoor Obstacle-aware Tracking | Elevator Tracking | Underground Parking Tracking

Benchmark Results#

Image: MiniCPM-RobotTrack benchmark results

Inference Example#

Please ensure transformers>=4.56,<5.

from __future__ import annotations

from pathlib import Path

import torch from transformers import AutoModel, AutoTokenizer

VISION_FEATURE_DIM = 1536 HISTORY_FRAMES = 31 COARSE_TOKENS_PER_FRAME = 4 FINE_TOKENS_CURRENT_FRAME = 64

class MiniCPMRobotTrackInference: """Tokenizer and model wrapper for MiniCPM-RobotTrack inference."""

def __init__( self, checkpoint_path: str | Path = "openbmb/MiniCPM-RobotTrack", device: str | torch.device | None = None, ): if device is None: device = "cuda" if torch.cuda.is_available() else "cpu" self.device = torch.device(device) checkpoint = str(checkpoint_path)

self.tokenizer = AutoTokenizer.from_pretrained(checkpoint) if self.tokenizer.pad_token_id is None: self.tokenizer.pad_token = self.tokenizer.eos_token

self.model = AutoModel.from_pretrained( checkpoint, trust_remote_code=True, ) self.model.to(self.device).eval()

@staticmethod def _prepare_visual_tokens( tokens: torch.Tensor, time_indices: torch.Tensor, name: str, ) -> tuple[torch.Tensor, torch.Tensor]: tokens = torch.as_tensor(tokens, dtype=torch.float32) time_indices = torch.as_tensor(time_indices, dtype=torch.long)

if tokens.ndim == 2: tokens = tokens.unsqueeze(0) if time_indices.ndim == 1: time_indices = time_indices.unsqueeze(0) if tokens.ndim != 3 or tokens.shape[-1] != VISION_FEATURE_DIM: raise ValueError( f"{name}_tokens must have shape [B, N, {VISION_FEATURE_DIM}]" ) if time_indices.shape != tokens.shape[:2]: raise ValueError( f"{name}_time_indices must match the first two dimensions of " f"{name}_tokens" ) return tokens, time_indices

@torch.inference_mode() def predict( self, instruction: str, coarse_tokens: torch.Tensor, coarse_time_indices: torch.Tensor, fine_tokens: torch.Tensor, fine_time_indices: torch.Tensor, ) -> torch.Tensor: """Return eight [x, y, yaw] waypoints for each batch item.""" coarse_tokens, coarse_time_indices = self._prepare_visual_tokens( coarse_tokens, coarse_time_indices, "coarse", ) fine_tokens, fine_time_indices = self._prepare_visual_tokens( fine_tokens, fine_time_indices, "fine", )

batch_size = coarse_tokens.shape[0] if fine_tokens.shape[0] != batch_size: raise ValueError("coarse and fine feature batch sizes must match")

text = self.tokenizer( [instruction] * batch_size, return_tensors="pt", padding=True, truncation=True, max_length=self.model.config.max_text_tokens, ) outputs = self.model( input_ids=text.input_ids.to(self.device), attention_mask=text.attention_mask.to(self.device), coarse_tokens=coarse_tokens.to(self.device), coarse_time_indices=coarse_time_indices.to(self.device), fine_tokens=fine_tokens.to(self.device), fine_time_indices=fine_time_indices.to(self.device), ) return outputs.trajectories.float().cpu()

if __name__ == "__main__": infer_runner = MiniCPMRobotTrackInference()

# Replace these placeholders with fused DINOv3 + SigLIP features produced # by the project preprocessing pipeline. coarse_tokens = torch.zeros( HISTORY_FRAMES * COARSE_TOKENS_PER_FRAME, VISION_FEATURE_DIM, ) coarse_time_indices = torch.arange(HISTORY_FRAMES).repeat_interleave( COARSE_TOKENS_PER_FRAME ) fine_tokens = torch.zeros( FINE_TOKENS_CURRENT_FRAME, VISION_FEATURE_DIM, ) fine_time_indices = torch.full( (FINE_TOKENS_CURRENT_FRAME,), HISTORY_FRAMES, dtype=torch.long, )

trajectory = infer_runner.predict( instruction="Follow the person in the red shirt.", coarse_tokens=coarse_tokens, coarse_time_indices=coarse_time_indices, fine_tokens=fine_tokens, fine_time_indices=fine_time_indices, ) print(trajectory) # [1, 8, 3]

Acknowledgement#

This project builds on and references MiniCPM, DINOv3, SigLIP, Habitat-Lab, Habitat-Sim, EVT-Bench, and TrackVLA. We thank the authors for their open-source contributions.

License#

Model weights and code are open-sourced under the Apache-2.0 license.

Files

28 files · 981 MBWeights 931 MB (safetensors). Sizes and sha256 from the signed manifest.
Show all 28 files with their sha256
FileSizesha256
.gitattributes220 Bb460ced7f9592f32b0b2d3df37c908d56c2a2306e763630ccc917074ed0c024c
LICENSE11.4 KBcfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30
LICENSE_MINICPM11.4 KBcfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30
LICENSE_MIT1.09 KB8491c51c019560ff648f6f8d50aec5e6b7b8ce33842152d1f1b4bcc4565ab25e
README.md8.31 KB6f54c275437d00fb69cafc117c6c5040ff6006d92e0e68f66f4270a32a015566
THIRD_PARTY_NOTICES.md812 B1465d014cb05eef1aa71cff96cb37feb326e8bff0e4dd52bb284436cf1033fa9
added_tokens.json216 B4760fcbf90bc193f33827ffe02f2e7ba1af1ec43644cc02ac22fdd611f6cca15
assets/discord.jpg99.2 KBf9e1ff687c640827320d7acd4cde532e6f2af416c2b6347955d1a81e20b76ddc
assets/discord.png272 B43a6549949cfd02dec4221b8e59f3ab582729da2dffa91cca116777b88b3edd2
assets/github.png509 B303e9a1849c3780bb483955093d1e3f2537ef39d923ec0e8dea87d45e0951f36
assets/hf.png85.0 KBb7324cda4e3b05ada9a305bfffc72b1ebd92c9c255f8d6f475737f9e5b01c481
assets/metric.png71.6 KBe356f63ec6b1a35cdc001b6c78e28af469876afbded7b402ae40a0c9ee64afac
assets/track1.gif13.0 MBdfbde8c1f126c0073d6e75385009eb3ba07286f62894e9131684b830a675021d
assets/track2.gif15.1 MBc5ed133e862183e2142f775e5a5d9d91a35d09fb2a07d72357f607ee9fda9a81
assets/track3.gif12.8 MBd2dfcfc1f6e7f3b91c254b4df6224754bdf0617697e6a5b9342f8400cffef907
assets/x.jpg5.46 KBb52adc61484a7e61fc1ff433f5176e90505831bc3c9708133bb4811927ad2af5
assets/x.png72.8 KBf9b731e0a8d42acfbf4201a8f54e567f7a1010adb81765d6f4c5d082b7a7b1d7
config.json3.10 KB5afa7d676c379adb9c934efb198c526ee6b87be01c2f533bcc500d36586530fc
configuration_minicpm.py9.66 KB1e289912fdc0608ccad3983f4ff8b381ec8f161f45c85be4d694f92f17596b0a
configuration_robottrack.py3.02 KB9aa634ec523f8c0606236d8eff4cffdf87287c847399e91337a31ba4ee2b7e25
model.safetensors931 MB27cc7e58fd0797ea2dfa03b250847a7142eeedc7babbadd7bc63401d051ec7f3
modeling_minicpm.py70.0 KBc646022c44d0e1cc1d149fb80422a5d5f1ba6de66dd0f525f2be1e18d99994bf
modeling_robottrack.py12.5 KBd0c3818827df3035657919755b6581aa8e1d03ccfb5037464949cbf38b9376b3
requirements.txt73 Be5d752743d3abd7ebfe3526ceb62e7d17fff8f7f760f3a35a65e36c86e68d42c
special_tokens_map.json773 B56fa22bfc8a129ceb6b44853e6c0d314394dcc435b29f7e7e7be6319a151181d
tokenizer.json6.70 MBadf7208af154a5ca065d2eda4e5419e02aac58c2c00627874748b75ec6769094
tokenizer.model1.18 MBbb74d51116831c3bf65db812c553f94ab0c88dcf97a5bbb37e3504f6d359c530
tokenizer_config.json2.84 KB140bf50cbb152bf9e239699472806559fad45ad99a972b8722b6a58a529e9cf2
VersionsEach time the pinned upstream commit or file list changed in this repo. Newest first.
Upstream commitDateContents
80d32d0b09 pinned now2026-11-15 03:56 UTC28 files · 981 MB

Use it

$ fw get openbmb/MiniCPM-RobotTrack
# manifest sha256 7f8fcd779e02… · 981 MB · 28 files
$ fw verify ./MiniCPM-RobotTrack openbmb/MiniCPM-RobotTrack
fw.pyChecks the signature and every sha256, tries each source in order, resumes.
$ python3 fw.py get https://freeweights.allternit.com/manifests/openbmb/MiniCPM-RobotTrack.json --dir ./MiniCPM-RobotTrack $ python3 fw.py verify ./MiniCPM-RobotTrack ./openbmb__MiniCPM-RobotTrack.json
hfThe Hugging Face CLI with one setting. Same repo id.
$ HF_ENDPOINT=https://freeweights.allternit.com hf download openbmb/MiniCPM-RobotTrack --revision 80d32d0b091c3b340a1e4a6c78d441e8af19590e --local-dir ./MiniCPM-RobotTrack

License

Name
Apache License 2.0
Id
Apache-2.0
Class
Permissive
Redistribution
yes
Listing
Hosted (signed)
Decided
License as declared by the publisher. No person read it. 2026-11-15
Text in
LICENSE
Text sha256
cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30
Terms gate
No extra terms beyond the license.

Read the license text

Licenses are checked against the license table. A custom license passes only after a person reads it.

Provenance

From: openbmb <huggingface.co/openbmb>Newsgroups: alt.freeweights.minicpmSubject: MiniCPM-RobotTrackDate: 2026-11-15Commit: 80d32d0Signed: 2DC28CC7B26A283B ✓
Upstream
openbmb/MiniCPM-RobotTrack
Pinned commit
80d32d0b091c3b340a1e4a6c78d441e8af19590e
Manifest
MiniCPM-RobotTrack.json · .minisig
Manifest sha256
7f8fcd779e02695052199d9cf52a86af2baed9a487386cddb9ea965bc2638518
Signature
minisign, Ed25519, key 2DC28CC7B26A283B
Created
2026-11-15 03:56 UTC
Generator
freeweights-manifest/0.1.0
Takedowns
None.

How to verify

$ curl -O https://freeweights.allternit.com/manifests/openbmb/MiniCPM-RobotTrack.json $ curl -O https://freeweights.allternit.com/manifests/openbmb/MiniCPM-RobotTrack.json.minisig $ minisign -Vm MiniCPM-RobotTrack.json -P RWQ7KGqyx4zCLXtUFOqvfv8L3g+8fpKJ1FsuxPyOYMF+4KufbUxKq1Oq $ shasum -a 256 <file> # compare with the Files tab

A manifest whose signature fails must be rejected. A file whose size or sha256 does not match must be discarded. Verify a download

Model tree

No related models in this catalog.Nothing here lists this model as its parent, and it names no parent.
Get it
Download
$ HF_ENDPOINT=https://freeweights.allternit.com hf download openbmb/MiniCPM-RobotTrack
Open in Freeweights Studio

Pull, verify and run it in the Allternit app on Desktop, web or phone.

Signed manifest
minisign, key 2DC28CC7B26A283B. MiniCPM-RobotTrack.json. Provenance. Takedown history: none.
From: openbmb <huggingface.co/openbmb>Subject: AgentCPM-Explore-GGUF
From: openbmb <huggingface.co/openbmb>Subject: AgentCPM-Report
From: openbmb <huggingface.co/openbmb>Subject: AgentCPM-Report-GGUF
From: openbmb <huggingface.co/openbmb>Subject: BitCPM-CANN-0.5B-gguf
From: openbmb <huggingface.co/openbmb>Subject: BitCPM-CANN-1B-gguf
From: openbmb <huggingface.co/openbmb>Subject: BitCPM-CANN-3B-gguf