カメラも力覚センサーもなく関節の感覚だけで部品をはめる:MITのブラインド組立、実機成功率73%
視覚や指先のセンサーなしに、自らの関節の微細な反応だけで組立の最後の1mmをこなせることを示したプレプリントだ。センサーコストを下げたい組立ラインと協働ロボット業界に直結する。
四脚ロボットやヒューマノイドは関節信号だけで目隠し歩行ができる。穴や歯車の歯、ねじ山を探す精密組立のように接触が軽く見逃しやすい作業でも、同じ信号で足りるのか。
産業用の挿入作業は、部品の位置を正確に把握して決まった探索動作を回すか、手首の力覚センサーや手首カメラ、触覚指先といった追加ハードウェアに頼る。いずれもコストと校正の手間がかかり、画像ベースの方策は見た目が違う部品で崩れやすい。学習型の代替には、サブミリのすき間を保った組立体を数千種類シミュレーションする必要があるが、MuJoCoで凹形状の穴を表す従来手法は穴の内側に材料を残すか、遅い。
古典的なペグ挿入はコンプライアンスとらせん、ラスター、傾け探索を部品ごとに調整し、把持状態は既知とする。学習型の挿入方策は力覚や手首画像、またはその両方を加えるか、認識から数mmの誤差を含む目標姿勢を受け取る。関節信号だけの方策はこれまで歩行や手の中での物体回転など、接触力が大きいかcm単位の公差の作業にとどまっていた。
チームは、関節の位置と速度の0.6秒分の履歴、そこから計算したグリッパー姿勢、自身の直前の動作だけを入力とするブラインド方策を強化学習(PPO)で訓練した。穴の位置、部品形状、把持状態は与えず大きくランダム化した。学習中は接触デコーダーが方策の記憶から実際の接触状態を当てるよう学び、学習を速める一方、実機で動く方策には特権情報を一切渡さない。さらに任意輪郭のペグと穴、歯車、ねじ付きナットを正確な凸ピースで生成するオープンソースのmjfitを公開し、1万2288の並列学習環境がそれぞれ異なる組立体を持てるようにした。
Flexiv(フレキシブ)のRizon 4SとRobotiq 2F-85グリッパー(50Hz)で、1つの固定方策が8種のペグを237回中173回(73%)挿入した。学習分布内の5種はそれぞれ73~80%、分布外の3種(すき間0.5mmに狭めたもの、断面を大きくしたもの、持ち手を高くしたもの)は66%、66%、72%だった。シミュレーションでは学習部品で手首カメラ方策と同等、未知の形状と寸法では低下幅がはるかに小さかったが、ペグ挿入の速さは画像方策が上回った。同じ開始点からの移動距離の中央値は37mmで、有利な条件を与えたらせん探索の95mmより、MEKAWIRE算出で61%短い。方策の記憶から接触モードを読む線形プローブの精度は61~73%で、現在の観測だけ(41~64%)や偶然の水準(14%)を上回った。mjfitは角穴をCPU1スレッドで実時間の93倍で計算し、MuJoCoのメッシュSDF(2.2~2.9倍)よりMEKAWIRE算出で約32~42倍速く、20マイクロメートルのすき間で誤差は0.2マイクロメートルだった。
著者自身が最後の区間の技能と位置づける。どの試行もペグがすでに穴から数cmの位置で治具に触れた状態から始まり、そこまで運ぶ別の仕組みが要る。探索は局所的で、部品が手から滑って遠くに落ちる事態には対応しない。実機結果は1種類の持ち手の3Dプリントペグ、アーム1台、作業者の判定に基づき、歯車とナットは実機試験がない。実機では方策内部の接触推定がシミュレーションより弱かった(内部状態の正答率62%対100%)。失敗率27%と画像方策より遅い速度は、ライン技術者が力覚センサーを外す水準にはまだ遠い。査読前のプレプリントである。
手首の力覚センサーや触覚ハンドは組立セルで無視できない原価項目だ。どのアームにもあるエンコーダーで最後の1mmを解く方策は、試験機を提供したFlexivのような協働ロボットメーカーや、らせん探索を手作業で調整するSIerに直接関わる。日本の力覚センサーや組立装置のメーカーにとっては、ソフトウェアがセンサーの一部を置き換える可能性を示す一方、自動車や電子部品の組立で求められる成功率には遠く、当面は競合より補完に近い。オープンソースのmjfitはMuJoCoやGoogle DeepMindとNVIDIAのMuJoCo Warpで挿入を学習するチームに先に使われるだろう。工場での採用は、カメラが部品を近くまで運ぶ低リスクの挿入から数年かけて進む可能性が高い。
論文全文
Blind Precise Assembly: Proprioceptive Sim-to-Real Peg-in-Hole for Diverse Parts
CC BY 4.0 のもとで公開された論文です。出典を明記して転載しています。原文は arXiv:2610.23849(PDF)。
Abstract
Every robot already carries high-resolution contact sensors: its own joints. Legged robots and humanoids exploit them to walk, run, and track whole-body motions without vision, but there the contacts are large and forceful. Is joint sensing also enough for precise, contact-rich assembly, where the robot must find a millimeter-scale opening, mesh gear teeth, or catch a thread through light contact? We study this question by training blind assembly policies that observe only a short history of joint positions, velocities, and their own actions, without visual, force, torque, or tactile sensing. The poses of both the fixture and the part are unknown to the policy, and the grasp is randomized substantially. The policy must therefore assemble the parts through contact, sensed exclusively through its own proprioception. Trained with reinforcement learning entirely in simulation over randomized parts, grasps, and contacts, such policies learn peg insertion, gear meshing, and nut threading. The peg insertion policy transfers zero-shot to the real world and inserts pegs of different shapes and sizes in 73% of trials. Controlled comparisons with matched visual policies in simulation show that blind policies generalize far better to unseen part shapes and sizes, though they can be slower. Training such policies needs thousands of different assemblies, each simulated with its clearance intact, so we also release an open-source generator that builds them procedurally from exact convex pieces for MuJoCo; it is more accurate and faster than convex decomposition or MuJoCo’s signed-distance collision. Videos and interactive simulations are at younghyopark.me/blind-proprioceptive-assembly/.
1 Introduction
A force applied anywhere on a robot’s body travels through its links to the joints, which then move differently from what their commands alone would produce. The encoders record that difference, so the joints of every arm and leg double as contact sensors. Legged robots exploit this proprioceptive signal to walk, run, and climb stairs blind (Lee et al., 2020; Siekmann et al., 2021a; Siekmann et al., 2021b; Kumar et al., 2021), and humanoids to walk and track whole-body motions (Radosavovic et al., 2024; Cheng et al., 2024; He et al., 2024). In these settings, however, contacts are large and forceful, and joints often comply meaningfully while recording measurable deviations. Can robots exploit the same signal for precise, contact-rich assembly?
Precise assembly with a robotic arm occupies the opposite regime: the robot must find an opening with a millimeter or less of clearance, bring gear teeth into mesh, or catch a thread, through light contact whose effect on the joints is easy to miss. We study this question by training blind assembly policies that have no information outside of their own joint sensing, and verify that proprioception contains enough information for three such tasks: peg insertion, gear meshing, and nut threading (figure 2). In the real world, our peg insertion policy inserts eight pegs of different cross-sections, three of them outside its training distribution, with 0.5–1.5 mm of clearance per side, in 73% of 237 trials, without being given the hole’s location, the peg’s pose in its grasp, the part’s size, or its clearance (section 3.4). To our knowledge, this is the first such demonstration.
We train our policies entirely in simulation with reinforcement learning and deploy the peg insertion policy in the real world without fine-tuning (figure 1). Training randomizes part geometry, contact properties, fixture poses, and grasps, which can hold the part off-center on the finger pads and tilted in the grasp. The policy observes a 0.6 s history of joint positions and velocities, the gripper pose and twist computed from them, and its own previous actions. It receives no image and no force signal, so it can perceive contact and find the hole, shaft, or bolt only through its own motion (section 2).
On all three tasks, probing the blind policies’ learned representations and comparing them with matched visual policies revealed two interesting properties of visually blind behaviors:
- Visually blind yet intelligent. The learned behavior is not an open-loop pattern: its learned representation encoding its own proprioceptive inputs contains meaningful task-relevant information that the policy itself heavily relies on to adjust its behavior (section 3.2).
- Proprioception generalizes better. Because a blind policy depends on the part only through its contacts, it degrades far less than vision on part shapes and sizes it has not seen during training (section 3.3).
Training for this robustness requires diverse parts: thousands of different assemblies, generated procedurally and simulated in parallel, each with its millimeter clearance intact. In MuJoCo (Todorov et al., 2012), building holes from convex primitives by hand does not scale to random shapes, and the automatic alternatives, convex decomposition and signed-distance-field (SDF) collision, are less accurate and slower at these clearances. We therefore built mjfit, which procedurally generates pegs and holes from any planar outline, as well as threads and gears, out of exact convex prisms. To summarize, our contributions are:
- Blind policies, trained purely in simulation, that learn peg insertion, gear meshing, and nut threading from proprioception alone, given no fixture pose, grasp, or part model (section 3.1), with analyses showing that on all three tasks they search reactively, acting on the contact state their joint histories encode rather than following a fixed pattern (section 3.2), and that they generalize to unseen part shapes and sizes better than matched visual policies (section 3.3);
- The first sim-to-real policy for precise insertion from proprioception alone: trained only in simulation, the peg insertion policy transfers zero-shot to a real robot and inserts pegs of different cross-sections, including pegs outside its training distribution (section 3.4);
- mjfit, an open-source procedural generator of assemblies for MuJoCo (pegs and holes, threads, and gears) with exact convex collision geometry, which supplies the thousands of different training assemblies, and a benchmark against analytic ground truth in which it is more accurate and faster than convex decomposition and MuJoCo’s SDF collision (section 2.2).
2 Learning blind assembly
We train blind policies for three assemblies that mjfit generates: peg insertion, gear meshing, and nut threading. We describe the tasks (section 2.1); how mjfit, our open-source procedural generator for MuJoCo, supplies thousands of different assemblies with exact convex collision geometry that preserves their clearances (section 2.2); and the policy, whose auxiliary contact supervision makes learning faster without giving the actor any privileged information (section 2.3; figure 14).
2.1 Tasks
In all three tasks (figure 2), a 7-DOF robot arm equipped with a parallel jaw gripper holds a part and must assemble it with a fixture that can sit almost anywhere in its workspace, and tilted (figure 3a). The part’s geometry, its pose in the grasp (figure 3b), and the contact properties are randomized and not observed by policy (Table 1). Episodes start with the part touching the fixture but misaligned, and succeed once it is fully assembled. This requires the policy to both search for alignment through contact, and then perform the assembly, based on its joint position feedback alone.
- Peg insertion: the pegs are prisms with varying cross-section, size, aspect ratio, mass, and length, with 1.0–1.5 mm of clearance per side (Appendix A). Pegs start typically around 2 cm from the hole, tilted far more than the clearance admits, and succeed when the peg is seated in the hole.
- Gear meshing: spur gears of varying size and tooth count must slide down a shaft into mesh with one or two anchor gears that turn on their own axles, with 0.2–0.6 mm of backlash. Episodes start with the gear in contact with the shaft tip, but misaligned and with its teeth out of phase with the anchors’, and succeed when the gear is seated on the shaft with teeth meshed.
- Nut threading: metric nuts from M24 to M42 must thread onto a bolt with 0.05–0.2 mm of thread clearance. Episodes start with the nut resting on the bolt’s tip, off its axis and tilted, and succeed a quarter turn after the thread catches.
2.2 Simulating tight insertion at scale
Training on this distribution means simulating thousands of parallel worlds that each hold a different, randomly generated assembly, with per-side clearances down to 0.5 mm. MuJoCo collides meshes through their convex hulls, so a concave hole must be given an SDF or built from convex pieces, which simulation benchmarks assemble from boxes by hand (Zhu et al., 2020; Tao et al., 2024; Zakka et al., 2025).
Exact convex decomposition.
mjfit automates the hand-built hole and generalizes it to arbitrary outlines. Given the planar outline of a hole, optionally with islands such as connector pins, it emits a ready-to-simulate MJCF model in which every contact surface is a MuJoCo primitive or a convex prism (figure 4). The plate around the hole is split into convex polygons and extruded; the peg is the hole outline offset inward by the clearance, so every peg edge sits exactly the clearance from its hole edge, and islands become pockets in a hollow peg. Curves are tessellated by a circumscribed polygon, so the wall never intrudes into the true hole, as it does in rings of boxes that inscribe the circle (Zhu et al., 2020); the only error is extra play at the corners, c\,(1/\cos(\pi/n)-1) for a circle of n sides at radial clearance c. Because the construction knows which region must stay empty, the user specifies the clearance directly rather than tuning a concavity tolerance and checking the result. Companion generators apply the same idea to bolt–nut pairs and spur gears, and a sampler draws random outlines, islands, and dimensions, so one training run can hold thousands of different assemblies.
Benchmark.
We compare against the three automatic ways to give MuJoCo a concave hole: CoACD (Wei et al., 2022), V-HACD (Mamou & Ghorbel, 2009), and MuJoCo’s native mesh SDF, each swept over its granularity setting. The test is a 16 mm round or square hole with clearance down to 20 µm; we measure each method’s error against its time per step, on CPU and on GPU with MuJoCo Warp (Google DeepMind and NVIDIA, 2025) (figure 6; Appendix B). Approximate decomposition tolerates concavity far larger than an assembly’s clearance, so it leaves wall material inside the hole (figure 5); refining it narrows the error but never closes it (figure 6a). Mesh SDF misses contacts and rounds the rim. These errors change outcomes: a centered peg stops on the rim or jams on every baseline’s default plate, but falls cleanly through ours (figure 6c). mjfit is also an order of magnitude faster than mesh SDF on CPU at equal or better accuracy (Table 4), and has the best speed–accuracy trade-off on GPU (figure 6b). Each assembly is only a few dozen convex pieces, so every one of our 12,288 parallel training worlds (Zakka et al., 2026) can hold a different one.
2.3 Policy and training
Policy.
At each step, the actor (figure 7) observes its joint positions and velocities, the gripper pose and twist computed from them by forward kinematics, and its previous action. It never receives the hole pose, the part geometry, a wrench estimate, or an image. A temporal convolutional encoder compresses the last 0.6 s of observations into a latent, and an MLP maps the latent and the current observation to joint-position increments. A joint impedance controller tracks them on an arm model whose armature, damping, and friction were identified from real-world measurements. Additional training details in Appendix A.
Training.
We use PPO (Schulman et al., 2017) with a sparse reward: a bonus on success and one-time bonuses for intermediate milestones, such as the peg’s first capture by the opening (Appendix A.1 gives the gear’s and nut’s). Two training-only signals speed up learning from the sparse reward without giving the actor privileged information: an asymmetric critic (Pinto et al., 2018) that also sees the part’s pose relative to the fixture and the true contact labels, and the contact supervision described next. Randomizing dynamics and geometry (Tobin et al., 2017; Peng et al., 2018) covers the ranges of Table 1.
H=30 proprioceptive observations o_{t} (joint positions q and velocities \dot{q}, gripper pose x and twist \dot{x}, and the previous action a_{t-1}) into a latent z_{t}, and an MLP maps z_{t} and the current observation o_{t} to joint targets q_{d} for a joint impedance controller. During training, we provide contact supervision from privileged simulator state. A contact decoder (amber) predicts the contact state (\hat{c}_{t}) from z_{t}. Its cross-entropy \mathcal{L}_{\mathrm{contact}} with the simulator’s labels c_{t} (left, near half of the fixture cut away) trains the encoder, but \hat{c}_{t} never reaches the policy.Contact supervision.
A blind policy has to infer contact from how the arm moves. To give that inference a dense training signal, we supervise the actor’s latent with the contact state it cannot observe. At every step, the simulator labels points sampled on the mating features of the part and fixture, as free, touching but misaligned, or aligned (figure 7, top; Appendix A details each task’s labels). A small contact decoder predicts these labels from the latent z_{t}, and its class-weighted cross-entropy is added to the PPO loss (Jaderberg et al., 2017). The gradient of this loss trains the encoder, but the prediction never enters the policy, so nothing privileged reaches the actor and the decoder is dropped at deployment.
Visual policies.
To isolate the sensing modality, we train visual policies with the same task, resets, randomization, reward, actions, and success check. A camera rigidly mounted on the wrist renders a 64\times64 RGB image of the held part and the fixture. The visual policy sees only images, over the same 0.6 s history, through a compact CNN.
3 Results
We design experiments to answer the following questions:
- (section 3.1) Can a policy that senses only its own joints learn precise assembly tasks including peg insertion, gear meshing, and nut threading?
- (section 3.2) Do blind policies learn intelligent, contact-reactive search, or is it learning scripted patterns?
- (section 3.3) Do blind policies generalize better than visual policies to part geometries outside the training distribution?
- (section 3.4) Can blind policies that rely on contact-rich search be transferred zero shot with high fidelity to the real world?
3.1 Proprioception is sufficient
All three tasks achieve near-perfect success on in-distribution geometries (figure 11, left). The joint history alone therefore carries enough information about contact to find an opening, bring teeth into mesh, and engage a thread.
Compared with visual policies, which can typically observe the poses of the grasped and mating parts directly, blind policies may be slower. On peg insertion, the blind policy has to search for the opening through contact, so it takes a less direct path and seats later (figure 9a, b) than a visual policy. The gap is smaller on the other two tasks (Appendix C), plausibly because the grasped part occludes more of the mating part from the camera’s view, so the visual policy, too, has to search to some extent.
3.2 Visually blind but intelligent
If blind policies search reactively rather than follow a script, their history latent z_{t}, through which everything the actor knows about the past passes (figure 7), must encode the state of contact. To test this, we roll out each policy in simulation and label every state with one of seven modes of its task, computed from the privileged part pose. For the peg, these are lifted, beside the plate, searching far from the opening or near it, partly engaged, and fully inside, either moving or stuck; the gear’s and nut’s modes follow similar stages of their tasks (Appendix C). We then fit a linear probe that predicts the mode from z_{t}.
On all three tasks, the probe separates modes that call for different actions, such as lifted, engaged, and stuck (figure 10), and does so more accurately from z_{t} than from the current observation alone (accuracy 61–73%, against 41–64%; chance 14%). Furthermore, the policy heavily relies on these inferred contact states to choose actions. Swapping in the latent of a state in another mode changes the action 1.3–3.0\times as much as a swap within the same mode (figure 15; Appendix C). Fitted only in simulation, the peg probe decodes the same sequence of modes on the real robot (figure 10a).
Reacting to contacts also makes a blind assembly efficient. A fixed pattern sweeps the same path regardless of what the arm feels, whereas a reactive policy can use the information gathered through contact, such as the peg catching the rim of the opening, to steer its search. We test this on peg insertion, where a scripted blind baseline is standard: spiral search, which moves the peg outward along a spiral until it drops into the hole, is a common strategy for insertion under position uncertainty in industrial assembly (Chhatpar & Branicky, 2001; Park et al., 2017; Marvel et al., 2018). From the same starts, the blind policy travels a median 37 mm before seating, against 95 mm for an optimistic spiral that starts flush with the hole opening, and is given the peg’s orientation and the best starting direction (figure 9c).
3.3 Generalization to unseen parts
On all three tasks, both blind policies and visual policies are reliable on the parts they were trained on. However, the blind policy is more reliable on assemblies sampled from outside the training distribution (figure 11). The visual policy is particularly vulnerable to geometry changes that significantly change how the parts look; it consistently underperforms the blind policy across tasks when evaluated on parts that are of a different shape, or extremely different size, than the training distribution. The visual policy learns to align visual features which may not appear in held-out assemblies. The blind policy, on the other hand, learns a searching strategy that is much more transferable.
3.4 Zero-shot transfer to the real world
Setup.
We deploy the frozen blind policy on a Flexiv Rizon 4S with a Robotiq 2F-85 at 50 Hz, with no real-world data or fine-tuning. It receives only encoder-derived joint and gripper state; no camera, force/torque sensor, or hole pose enters the policy. The deployed policy is a policy trained on random convex, smooth, and mixed cross-sections under a handle (Table 2). We test eight 3D-printed pegs (figure 12): five in-distribution objects, and three that are drawn from outside the training distribution, a tighter clearance (0.5 mm per side), a larger cross-section, and a taller handle. Each trial starts from a start state drawn from the simulated reset distribution, with the peg grasped at a randomized position and tilt and touching the fixture near the hole. An operator marks a trial as successful once the peg is seated.
Results.
One policy, with no parameter changes, succeeds in 173 of 237 trials (73%; figure 12), pressing onto the surface, sweeping, and dropping in once the opening is under the peg, as in simulation (figure 1). It succeeds in 73–80% of trials on each in-distribution peg, and in 66%, 66%, and 72% on the tighter, larger, and taller-handled pegs, respectively.
4 Related work
Robotic insertion.
Classical peg-in-hole assembly combines compliance with search patterns such as spirals, rasters, and tilting (Whitney, 1982; Chhatpar & Branicky, 2001; Marvel et al., 2018), in some cases without force feedback (Park et al., 2017); these strategies assume a known grasp and a hole within the pattern and are tuned for each part. Learned insertion policies usually add force/torque sensing (Inoue et al., 2017; Beltran-Hernandez et al., 2020), wrist vision (Schoettler et al., 2020; Bogunowicz et al., 2020; Spector & Di Castro, 2021; Haugaard et al., 2021; Seo et al., 2025), or both (Lee et al., 2019; Luo et al., 2021; Watson et al., 2020). Wrist force/torque sensing combined with a soft wrist has allowed policies to tolerate 10 mm of hole-position error and an unseen peg shape (Fuchioka et al., 2024), while a blind dexterous policy relying on fingertip tactile sensing (Pan et al., ) was demonstrated for precise insertion. Others (Tang et al., 2023; Tang et al., 2024; Noseworthy et al., 2025; Narang et al., 2022) observe joint state and a direct goal pose from perception or calibration with a few millimeters of error. Our policy instead uses proprioception alone: it is given no hole pose, part model, or force signal, and must locate the hole through contact while the peg’s pose in its grasp is unknown.
Proprioceptive policies.
Legged robots traverse rough terrain with policies built on histories of onboard state (Hwangbo et al., 2019; Lee et al., 2020; Siekmann et al., 2021b; Kumar et al., 2021; Radosavovic et al., 2024). In manipulation, proprioceptive policies reorient unseen objects in hand (Chen et al., 2021; Qi et al., 2022), and Blind Dexterity treats joint and action histories as a whole-body tactile channel (Bhatt et al., 2026). These tasks involve forceful contact or centimeter tolerances; insertion needs neither. In imitation learning, robot state can hurt (Team et al., 2024) by suppressing visual learning (Lu et al., 2026).
Simulating tight contact.
Approximate convex decomposition (Mamou & Ghorbel, 2009; Wei et al., 2022) tolerates concavity relative to the mesh size, which can exceed an assembly’s clearance. Exact polygon partitions are classical (Keil, 1985), and simulation benchmarks build holes from primitives by hand (Zhu et al., 2020; Tao et al., 2024; Zakka et al., 2025); mjfit automates this for arbitrary outlines and generates assemblies in bulk. SDFs handle concavity directly and underlie GPU assembly simulation in Factory and its successors (Narang et al., 2022; Macklin et al., 2020; Tang et al., 2023), whose assets obtain their clearance approximately, by displacing mesh vertices or eroding voxels (Tang et al., 2024; Wang et al., 2025); SDF accuracy depends on field resolution and contact search. Newton combines SDFs with hydroelastic contact (The Newton developers, 2025), and barrier methods simulate threads and gear trains without interpenetration (Ferguson et al., 2021; Lan et al., 2022). Our benchmark (section 2.2) follows the simulator comparisons of Erez et al. (2015) and Le Lidec et al. (2024). CRISP (Lee et al., 2026) recently compared engines on tight insertion and threading; we instead keep MuJoCo’s solver fixed and vary only the collision geometry, using passive probes with analytic answers and speed–accuracy Pareto fronts.
5 Limitations and conclusion
We trained blind policies that insert pegs, mesh gears, and thread nuts from proprioception alone, with no fixture pose, grasp, or part model, on thousands of assemblies that mjfit generates with exact collision geometry. The peg insertion policy transfers zero-shot to the real world, and in simulation, blind policies generalize to unseen parts far better than matched visual policies. The peg insertion policy is, however, a last-mile manipulation skill, and its limits are those of one. First, it assumes it starts in contact: every training episode begins with the peg already touching the fixture a few centimeters from the hole, so another motion, scripted or visual, must bring it there. Second, its behavior is local. It searches the surface around where it starts and corrects the misalignments it met in training, but it cannot handle events that call for more than a local correction, such as a peg that slides out from the grasp and lands far from the hole.
Acknowledgments
This research was financially supported by the Ministry of Trade, Industry, and Energy (MOTIE), Korea, under the “Global Industrial Technology Cooperation Center program” supervised by the Korea Institute for Advancement of Technology (KIAT). (Grant No. P0028435)
References
Appendix A Training details
Study and deployed policies.
To cover as much real-world variation as possible, the deployed peg policy (section 3.4) is trained on the full ranges of part geometry, physics parameters, and object pose that we can (limited by physics stability, geometric constraints like the gripper width, etc.). We also train similarly diverse gear and nut policies for the latent probe (section 3.2; Appendix A.2). In order to test the policies’ capacity for generalizing out of the training distribution, we design study training ranges for all three tasks (section 3) that are more narrow (Table 1), so that we can systematically widen each property beyond training (section 3.3).
A.1 Study policies
- Part and fixture
- データなし
- データなし
- データなし
- Part
- stadium prism
- involute spur gear, held by an 18 mm boss; 1–2 anchor gears
- ISO metric nut and bolt, coarse and fine pitch
- Size
- scale 1.35–2.45; opening 38–91 \times 20–54 mm; length 50–60 mm \times scale
- module 2.375–3.125 mm; 16–24 teeth
- M36 and M42
- Shape
- aspect ratio 1.25–2.5 (log), area-preserving
- pressure angle 21.25–23.75∘; tooth width 0.45–0.47 pitch; face width 9.75–13.25 mm
- across flats and height 0.95–1.05 \times ISO 4032
- Clearance
- 1.0–1.5 mm per side
- backlash 0.4–0.6 mm per anchor; bore 0.75–1.0 mm
- flank 0.1–0.2 mm (log)
- Fixture
- hole 10 mm \times scale deep in an 80 mm \times scale square plate
- shaft radius 4.5–5.5 mm, 4.75–8.25 mm above the gear
- bolt stick-out 7.5–22.5 mm above its minimum
- Part mass
- 0.35–0.675 kg
- 128–202 g with boss
- 73–464 g
- Contact
- データなし
- データなし
- データなし
- Fixture friction (log)
- plate 0.5–2.0
- plate and shaft 0.5–2.0; anchor teeth 0.30–0.67
- thread 0.24–0.34
- Fixture contact time constant (log)
- 3.5–7.1 ms
- 3.5–7.1 ms
- thread 2 ms, fixed
- Anchor hinge (log)
- —
- damping 0.32–3.2 mN m s; friction loss 0.27–1.9 mN m
- —
- Finger friction scale (log)
- 1.41–2.0
- データなし
- データなし
- Finger contact time-constant scale (log)
- 0.78–1.34
- データなし
- データなし
- Gripper force cap scale (log)
- 1.41–2.83
- データなし
- データなし
- Poses
- データなし
- データなし
- データなし
- Fixture center from robot base
- x 0.54–0.76 m, y -0.29–0.17 m, z -0.20–0.29 m‡
- データなし
- データなし
- Fixture tilt
- roll, pitch, yaw \pm 5^{\circ}
- roll, pitch, yaw \pm 5^{\circ}
- roll, pitch \pm 5^{\circ}
- Gripper rotation, per axis
- \pm 5^{\circ}
- データなし
- データなし
- Initial part position, per axis
- \pm 12.5 mm from the hole center
- \pm 7.5 mm from the shaft axis
- \pm 0.42 bolt diameters from its axis
- Initial phase
- —
- anchors at random angles
- 87.5–142.5∘ of turning before the thread catches
- Grasp position
- \pm 5.5 mm along the pads
- \pm 2.5 mm along the pads; pad bottoms 6.75–10.25 mm above the gear
- \pm 1 mm across the pads; middle half of the pads’ height
- In-hand tilt about the finger axis
- \pm 10^{\circ}
- \pm 5^{\circ}
- \pm 10^{\circ}
- Control
- データなし
- データなし
- データなし
- Joint gains k_{p} / k_{d}; action scale
- 80 / 20; 0.02 rad
- 40 / 20; 0.04 rad
- 40 / 20; 0.04 rad (wrist joint: 0.2 rad)
- Joint speed and torque penalty
- none
- none
- none
Tasks.
Physics runs at 1 kHz under a 50 Hz policy, and each world holds one part and fixture drawn from mjfit’s generators. Peg insertion: each episode starts with the peg touching the fixture’s top face, a median 1 cm from the hole center. It succeeds when the entire peg bottom face is seated in the hole. Bonuses of +1 reward the peg’s first capture by the opening and success. Contact labels mark each of 64 points on the peg’s bottom edge as free (more than 1 mm above the fixture’s top face), in contact (on the rim or top face, within 1 mm), or inside the opening. An episode lasts at most 5 s. Gear meshing: each world holds a spur-gear set from mjfit’s gear generator, and the robot holds the gear by a printed boss. Each episode starts with the gear resting on the shaft tip, off the shaft axis, with its teeth out of phase with the anchors’. It succeeds when the bore surrounds the shaft and the gear sits within 1 mm of the shaft’s collar, which the anchors’ teeth allow only in mesh. Bonuses reward the first capture of the shaft, the first mesh with every anchor, and success; contact labels mark 64 points on the shaft’s rim (free, on the gear, or inside the bore) and 64 on the gear’s tooth tips (free, on an anchor, or in mesh); an episode lasts at most 10 s. Nut threading: each world holds an ISO metric nut and bolt pair from mjfit’s thread generator. Each episode starts with the nut resting on the bolt tip, tilted and off the bolt axis, short of the turn at which the thread catches it. It succeeds a quarter turn after the thread catches, with the nut within 1 mm of the bolt axis; bonuses reward seating, capture, each new extent of the turn, and success; contact labels mark 64 points on the rim of the nut’s bore (free, on the bolt’s tip, around the bolt, or caught by the thread, within a band of 0.29 pitch, 1 mm at M30\times3.5); an episode lasts at most 15 s. Every episode also ends when the part moves far from the fixture, and a nut episode when the nut leaves the grasp.
Architecture.
The actor observes 33 values per step: seven joint positions, seven joint velocities, the gripper pose and twist (twelve), and its previous action (seven). The nut policy’s actor encodes the gripper orientation by two columns of its rotation matrix rather than by Euler angles (36 values), since the wrist turns through half a revolution while threading. A temporal convolutional encoder maps the last 30 observations (0.6 s) to a 32-dimensional latent; an MLP (256, 256, 128 units) maps the latent and the current observation to seven joint-position increments, scaled by the action scale of Table 1 and added to the measured joint positions. The critic sees the part’s pose relative to the fixture, the contact labels, and, for the nut, the thread’s geometry (240, 434, and 317 inputs for the peg, gear, and nut).
PPO.
12,288 worlds, 32-step rollouts, 5 epochs of 20 minibatches (24 for the gear and nut), fixed learning rate 3\times 10^{-4}, clip 0.2, \gamma=0.98, \lambda=0.95, entropy coefficient 0.003, value-loss coefficient 1 with clipping, gradient norm clipped at 1, and initial action standard deviation 0.5. The contact decoder has two hidden layers of 128 units and class weights 0.25 (free), 3.0 (contact), and 2.0 (inside, in mesh, around the bolt, or caught). The visual policies see 64\times64 wrist RGB images over the same 30 steps.
A.2 Deployed and full-range policies
Deployed peg policy.
The policy we deploy (section 3.4) trains as the study peg policies do, on the ranges of Table 2: random convex cross-sections under a handle, and wider contact and pose ranges. Its starts lie a median 2 cm from the hole center. It uses the gear’s and nut’s controller and a staged safety penalty, which starts once the task has been learned without safety limits and penalizes joint speeds and commanded torques above one sixth of the hardware limits. PPO uses 24 minibatches and an exploration anneal, during which the learning rate adapts to a target KL of 0.01.
- Part and fixture
- データなし
- Cross-section
- random convex†
- Opening, long \times short side
- 39–91 \times 30–52 mm
- Peg length
- 25–35 mm, below the handle
- Hole depth
- 20 mm
- Plate
- convex, 5–70 mm margin
- Peg mass
- 0.12–0.29 kg with handle
- Contact
- データなし
- Plate sliding friction (log)
- 0.25–4.0
- Plate contact time constant (log)
- 2.5–10 ms
- Finger friction scale (log)
- 1.0–2.0
- Finger contact time-constant scale (log)
- 0.6–1.75
- Gripper force cap scale (log)
- 1.0–4.0
- Poses
- データなし
- Fixture center from robot base, x
- 0.39–0.83 m
- y / z
- -0.46–0.46 / -0.48–0.43 m
- Fixture roll, pitch, yaw
- \pm 10^{\circ}
- Gripper rotation, per axis
- \pm 10^{\circ}
- Initial peg position, per axis
- \pm 25 mm
- Grasp position along the pads
- \pm 7 mm, on the handle
- In-hand tilt about the finger axis
- \pm 20^{\circ}
- Control
- データなし
- Joint gains k_{p} / k_{d}; action scale
- 40 / 20; 0.04 rad
- Joint speed and torque penalty
- staged
Full-range gear and nut policies.
The gear and nut probes of section 3.2 use policies trained on the full ranges. Gears have a module of 2–3.5 mm and 12–28 teeth, pressure angles of 20–25∘, tooth widths of 0.44–0.48 of the pitch, face widths of 8–15 mm, 0.2–0.6 mm of backlash per anchor, and 0.5–1 mm of bore clearance, on 4–6 mm shafts 3–10 mm above the gear; with the boss they weigh 128–276 g, set by their geometry. Nuts are 870 ISO metric nut and bolt pairs, M24–M42 at coarse and fine pitch, with 0.05–0.2 mm of flank clearance, across flats and heights within 10% of ISO 4032, and steel masses of 73–855 g. Their contact and pose ranges are wider too: anchor-tooth friction 0.2–1.0, thread friction 0.2–0.4, and the deployed peg policy’s plate, finger, gripper, fixture, and gripper-rotation ranges. Gears start a median 12 mm off the shaft axis; nuts start a median 19 mm off the bolt axis and 60–170∘ of turning short of the thread catching. With deterministic actions, the gear policy succeeds in 98% of 8,192 episodes on 4,096 unseen gear sets drawn from its training distribution, and the nut policy in 93% of 8,192 episodes on 512 unseen nut and bolt pairs drawn likewise.
Appendix B Collision benchmark details
- Wall offset
- Rays from the hole axis at 720 angles and 11 heights; no solver
- Wall on the analytic outline
- S0 contact onset
- Aligned peg placed at known gaps; collision only
- Contact appears at gap 0
- S1 drop
- centered free peg dropped from 1 mm; c from +1 mm to -500 µm
- Passes with zero wall contact iff c>0
- S2 lateral play
- Planar slides; 0.1 N push in 24 directions
- Support of the feasible translation set
- S3 tilt play
- Slides and one hinge; 1.5 mN m torque
- Maximum tilt at which both faces fit
- S4 yaw play
- Slides and a vertical hinge (square hole)
- \arcsin(a/(s\sqrt{2}))-\pi/4
- mjfit, square hole
- 93\times
- 970\times
- 0.2 µm
- mjfit, circle, 7–32 sides
- 82–29\times
- 1120–1070\times
- \leq2.6 µm
- mjfit, circle, 63–281 sides
- 16–4.9\times
- 875–442\times
- \leq0.4 µm
- Mesh SDF, octree depth 5–8
- 2.9–2.2\times
- 590–840\times
- fills, or 23–79 µm
- CoACD, threshold 0.01 (839 hulls)
- 1.8\times
- 254\times
- fills
- Other CoACD and V-HACD settings
- 3.3–70\times
- 680–1900\times
- fills
All scenes use a 1 ms time step, the implicit-fast integrator, the Newton solver, \mathrm{solref}=(2\,\mathrm{ms},1), \mathrm{solimp}=(0.99,0.999,0.001), \mu=1, and zero margin. Baselines receive an exact, watertight plate mesh (the circle tessellated at 1,024 segments, 0.04 µm sagitta), and ground truth uses the analytic circle, so mjfit is charged for its own chord error. The peg is always an exact MuJoCo primitive, so every difference comes from the hole. Timings come from one idle machine (Intel i9-13900KS, NVIDIA RTX 5090). Warp contact and constraint buffers are calibrated per representation, and every GPU run is checked for buffer overflow, which would silently drop contacts. At a 2 ms contact time constant, frictionless drops let pegs up to 20 µm oversize slip in for every method, including exact geometry, so S1 cannot resolve geometric errors below about 20 µm; the play probes can.
Setup.
The round and square holes are 16 mm wide in a 15 mm plate, with radial clearance c from 20 to 200 µm; at c=20 µm, 2c/D=0.0025. The M10\times1.5 bolt and nut have flank clearance c of 20 and 100 µm and are probed for axial, radial, and tilt play and for screwing under load. CPU times use one environment on one thread; GPU times use 512 MuJoCo Warp worlds, except in figure 6b, which uses 256 and measures the error on Warp as well.
Appendix C Additional results
- Success (%)
- 99.4
- 97.2
- Time to seat (s)
- 0.80
- 0.44
- Insertions per minute
- 65
- 82
- Lateral travel before seating (mm)
- 37
- 20
- Time partly engaged (s)
- 0.38
- 0.22
- Tilt when partly engaged / seated (∘)
- 6.7 / 1.1
- 5.2 / 1.1
Behaviour.
The blind policy travels farther than the visual policy from 99% of matched starts (Table 5). On unseen random convex pegs, the blind policy succeeds in 36.2% of episodes and the visual policy in 3.9% (both seeds); these pegs have a median 53% of the matching stadium’s area.
Speed on gear meshing and nut threading.
On the in-distribution episodes of the study policies of figure 11 (8,192 per policy, one seed, deterministic actions), counting successful episodes only, the blind gear policy succeeds in a median 0.58 s against the visual policy’s 0.64 s, and takes longer on 43% of the 8,059 starts from which both succeed. Plausibly, the held gear hides the shaft from the wrist camera while it aligns, so visual policies also have to search. The blind nut policy succeeds in a median 0.76 s against 0.64 s, and takes longer on 98% of the 8,139 starts from which both succeed (by a median 0.10 s).
Contact supervision.
Without the contact loss (section 2.3), the blind policies still learn all three tasks, but need 2.7 (peg), 3.8 (gear), and 5.1 (nut) times as many environment steps to reach 90% training success (figure 14). The unsupervised peg policy reaches 97.8% after 486M steps; the supervised policies pass 99% by 242M.
z_{t} of a state in another mode; each cell is the mean change in action relative to a swap within the receiving state’s own mode.Probe details.
The search modes are split at 5 mm from the opening, and an inside peg is stuck when it progresses less than 0.5 mm in 0.2 s. The probe uses the deployed policy (section 3.4). We roll it out in 1,536 worlds of its training distribution (1.15M states), train the probes on even-numbered worlds, and test on odd ones. Balanced accuracy over the seven modes is 70% (chance 14%) from the history latent, against 56% from the current observation alone and 33% from a randomly initialized encoder. The history latent recognizes lifted, moving, and stuck pegs with 84–90% recall; it decodes far search as near 19% of the time, and near as far 26%. Swapping latents between a searching and an inside state changes the action 1.4–1.9\times as much as swapping between two states of the same mode; swapping between near and far changes it 0.99–1.11\times as much (figure 15a). On the robot, we run the policy in 30 further trials on peg I3 (figure 12); its actions recomputed from the logged observations match the logged ones to within 2\times 10^{-5}. At the end of successful trials, the peg pose estimated from the joint encoders and planned grasp is a median 6.6 mm (10th–90th percentile 2.6–17.4 mm) from the seated pose, as the peg slips and turns in the fingers, and places only 3% of their states fully inside the hole. Scored states have every point of the peg’s bottom edge at least 3 mm above the plate (lifted) or at least 3 mm inside the opening (inside). The estimate never places the peg clearly above the plate; the probe labels 62% of the inside states correctly, against 100% in simulation from the same start states, and labels the final state of 17 of the 24 successful trials as inside. In figure 10a, true and decoded modes of the start state shown agree in simulation on 74% of steps (median over the 30 start states: 65%).
The gear and nut probes use the full-range policies of Appendix A.2 (PPO updates 3,085 and 2,000) with the same recipe: one episode with deterministic actions in each of 1,536 worlds of held-out geometries from their training distributions (133k and 85k states), probes trained on even-numbered worlds and tested on odd ones. The modes come from the environments’ contact labels and the part’s pose: lifted; off the shaft (gear only; the nut leaves its bolt too rarely to probe); resting on the shaft or bolt tip and searching, far or near (split at the median start distance, 7.2 and 19.7 mm); entering, with the tip inside the bore but not yet captured; for the gear, descending the shaft before its teeth reach the anchors, then meshing, with its teeth on the anchors’ tops or in mesh; for the nut, seated on the bolt before the thread catches, then threading, or stuck when it advances less than 0.05 pitch in 0.2 s. Balanced accuracy over the seven modes is 61% for the gear and 73% for the nut (chance 14%), against 41% and 64% from the current observation and 29% and 46% from a randomly initialized encoder; near search is decoded as far 42% and 31% of the time. Swapping latents between a searching and an engaged state changes the action 1.3–1.6\times (gear) and 1.4–3.0\times (nut) as much as swapping between two states of the same mode; swapping between near and far changes it 0.97–1.04\times and 0.94–1.18\times as much (figure 15b, c). The start states shown come from a re-run of each rollout, decoded with the same probes and rendered from the same states. Among the episodes that end engaged and visit at least five modes, the nut’s agrees with the true modes on 74% of steps (the median), and the gear’s on 79% (the 75th percentile; median 69%).
Unseen parts.
Each unseen part of figure 11 widens one property of the part beyond its study training range (Table 1) while every other range stays at its study value. Table 6 lists the widened ranges for each task, grouped as in the figure: a tighter fit; a mild and a strong change of the part’s proportions; a mild and an extreme change of size, on both sides of the training range; and a new shape. Table 7 lists every bar.
- Clearance
- データなし
- データなし
- データなし
- Training
- 1.0–1.5 mm per side
- backlash 0.4–0.6 mm per anchor
- flank 0.1–0.2 mm
- Tighter
- 0.5–0.625 mm
- 0.2–0.25 mm
- 0.05–0.0625 mm
- Aspect / depth
- データなし
- データなし
- データなし
- Training
- aspect ratio 1.25–2.5
- tooth height 1.0 module above the pitch circle
- ISO thread depth
- Mild
- Slender: 3.54–4.20
- Taller teeth: 1.1–1.2 modules
- Deeper thread: 1.1–1.2\times, same flank angle
- Strong
- Very slender: 4.20–5.0
- Much taller: 1.2–1.3 modules
- Much deeper: 1.2–1.3\times
- Size
- データなし
- データなし
- データなし
- Training
- scale 1.35–2.45
- module 2.375–3.125 mm
- M36 and M42
- Mild
- 1.075–1.35 or 2.45–2.725
- 2.19–2.375 or 3.125–3.31 mm
- M30 or M48
- Extreme
- 0.8–1.075 or 2.725–3.0
- 2.0–2.19 or 3.31–3.5 mm
- M24 or M52, the largest the gripper holds
- Shape
- データなし
- データなし
- データなし
- Training
- stadium
- involute teeth
- hexagon
- Random
- Random convex: one vertex on each side of a matching stadium’s bounding box, same clearance (figure 13)
- Random tooth: each tooth a random quadrilateral inside the involute one
- Random nut: a convex outline of 5–8 sides with two parallel gripped faces, 0.75–1.35\times the hexagon’s area
- Senses
- In dist.
- Tighter
- Mild
- Strong
- Mild
- Extreme
- Random
- Peg insertion
- データなし
- データなし
- データなし
- データなし
- データなし
- データなし
- データなし
- Proprioception (blind)
- 99.4
- 93.8
- 97.1
- 93.3
- 97.1
- 91.9
- 36.2
- RGB (visual)
- 97.2
- 54.1
- 62.7
- 40.1
- 57.7
- 16.4
- 3.9
- Gear meshing
- データなし
- データなし
- データなし
- データなし
- データなし
- データなし
- データなし
- Proprioception (blind)
- >99.9
- >99.9
- >99.9
- >99.9
- >99.9
- >99.9
- >99.9
- RGB (visual)
- 98.4
- 98.0
- 98.6
- 98.5
- 96.5
- 90.2
- 87.9
- Nut threading
- データなし
- データなし
- データなし
- データなし
- データなし
- データなし
- データなし
- Proprioception (blind)
- 99.7
- 99.2
- 99.2
- 98.2
- 98.8
- 98.4
- 99.7
- RGB (visual)
- 99.7
- 98.7
- 99.1
- 98.8
- 25.5
- 1.6
- 57.1
Real-world pegs.
The pegs of figure 12 are 3D printed under an 80\times44 mm stadium handle 40 mm tall, except H, whose handle is 70 mm tall; they weigh 147–164 g, and every hole is 20 mm deep. I1–I5 are cross-sections drawn from the deployed policy’s training distribution (polygonal, smooth, and mixed outlines) with 1.11–1.49 mm of clearance per side. C is a polygonal peg with 0.5 mm of clearance; L enlarges a training outline by 1.28\times1.09 to a 101\times37 mm hole; H puts a mixed outline under the taller handle. Each peg has 30 planned resets, and each reset counts once, by its first attempt that reached a verdict: the operator’s success or failure, or the 20 s horizon, which counts as a failure. Each simulated rate is the same policy over 2,048 worlds of that peg’s geometry at the same 20 s horizon, with deterministic actions.