import{s as zt,n as Gt,o as Rt}from"../chunks/scheduler.eb244325.js";import{S as Vt,i as jt,e as n,s as i,c as m,h as At,a as o,d as l,b as s,f as Wt,g as p,j as r,k as It,l as St,m as a,n as d,t as u,o as c,p as f}from"../chunks/index.3fe63ad3.js";import{C as Et}from"../chunks/CopyLLMTxtMenu.08242e11.js";import{C as wt}from"../chunks/CodeBlock.91baa5b4.js";import{H as E,E as Ht}from"../chunks/MermaidChart.svelte_svelte_type_style_lang.234c3f85.js";function Xt(yt){let h,q,H,B,w,Q,y,N,M,Mt="Meta-World is a well-designed, open-source simulation benchmark for multi-task and meta reinforcement learning in continuous-control robotic manipulation. It gives researchers a shared, realistic playground to test whether algorithms can <em>learn many different tasks</em> and <em>generalize quickly to new ones</em> — two central challenges for real-world robotics.",F,g,gt='<li>📄 <a href="https://arxiv.org/pdf/1910.10897" rel="nofollow">MetaWorld paper</a></li> <li>💻 <a href="https://github.com/Farama-Foundation/Metaworld" rel="nofollow">Original MetaWorld repo</a></li>',D,v,vt='<img src="https://meta-world.github.io/figures/ml45.gif" alt="MetaWorld MT10 demo"/>',P,$,Z,T,$t="<li><strong>Diverse, realistic tasks.</strong> Meta-World bundles a large suite of simulated manipulation tasks (50 in the MT50 suite) using everyday objects and a common tabletop Sawyer arm. This diversity exposes algorithms to a wide variety of dynamics, contacts and goal specifications while keeping a consistent control and observation structure.</li> <li><strong>Focus on generalization and multi-task learning.</strong> By evaluating across task distributions that share structure but differ in goals and objects, Meta-World reveals whether an agent truly learns transferable skills rather than overfitting to a narrow task.</li> <li><strong>Standardized evaluation protocol.</strong> It provides clear evaluation modes and difficulty splits, so different methods can be compared fairly across easy, medium, hard and very-hard regimes.</li> <li><strong>Empirical insight.</strong> Past evaluations on Meta-World show impressive progress on some fronts, but also highlight that current multi-task and meta-RL methods still struggle with large, diverse task sets. That gap points to important research directions.</li>",Y,b,O,J,Tt="In LeRobot, you can evaluate any policy or vision-language-action (VLA) model on Meta-World tasks and get a clear success-rate measure. The integration is designed to be straightforward:",K,k,bt="<li><p>We provide a LeRobot-ready dataset for Meta-World (MT50) on the HF Hub: <code>https://huggingface.co/datasets/lerobot/metaworld_mt50</code>.</p> <ul><li>This dataset is formatted for the MT50 evaluation that uses all 50 tasks (the most challenging multi-task setting).</li> <li>MT50 gives the policy a one-hot task vector and uses fixed object/goal positions for consistency.</li></ul></li> <li><p>Task descriptions and the exact keys required for evaluation are available in the repo/dataset — use these to ensure your policy outputs the right success signals.</p></li>",tt,x,et,C,Jt="Example command to train a SmolVLA policy on a subset of tasks:",lt,L,at,U,kt="Notes:",it,_,xt=`<li><code>--env.task</code> accepts explicit task lists (comma separated) or difficulty groups (e.g., <code>env.task=&quot;hard&quot;</code>).</li> <li>Adjust <code>batch_size</code>, <code>steps</code>, and <code>eval_freq</code> to match your compute budget.</li> <li><strong>Gymnasium Assertion Error</strong>: if you encounter an error like
<code>AssertionError: [&#39;human&#39;, &#39;rgb_array&#39;, &#39;depth_array&#39;]</code> when running MetaWorld environments, this comes from a mismatch between MetaWorld and your Gymnasium version.
We recommend using:</li>`,st,W,nt,I,Ct="to ensure proper compatibility.",ot,z,rt,G,Lt="To evaluate a trained policy on the Meta-World medium difficulty split:",mt,R,pt,V,Ut="This will run episodes and return per-task success rates using the standard Meta-World evaluation keys.",dt,j,ut,A,_t="<li>If you care about generalization, run on the full MT50 suite — it’s intentionally challenging and reveals strengths/weaknesses better than a few narrow tasks.</li> <li>Use the one-hot task conditioning for multi-task training (MT10 / MT50 conventions) so policies have explicit task context.</li> <li>Inspect the dataset task descriptions and the <code>info[&quot;is_success&quot;]</code> keys when writing post-processing or logging so your success metrics line up with the benchmark.</li>",ct,S,ft,X,ht;return w=new Et({props:{containerStyle:"float: right; margin-left: 10px; display: inline-flex; position: relative; z-index: 10;"}}),y=new E({props:{title:"Meta-World",local:"meta-world",headingTag:"h1"}}),$=new E({props:{title:"Why Meta-World matters",local:"why-meta-world-matters",headingTag:"h2"}}),b=new E({props:{title:"What it enables in LeRobot",local:"what-it-enables-in-lerobot",headingTag:"h2"}}),x=new E({props:{title:"Quick start, train a SmolVLA policy on Meta-World",local:"quick-start-train-a-smolvla-policy-on-meta-world",headingTag:"h2"}}),L=new wt({props:{code:"bGVyb2JvdC10cmFpbiUyMCU1QyUwQSUyMCUyMC0tcG9saWN5LnR5cGUlM0RzbW9sdmxhJTIwJTVDJTBBJTIwJTIwLS1wb2xpY3kucmVwb19pZCUzRCUyNCU3QkhGX1VTRVIlN0QlMkZtZXRhd29ybGQtdGVzdCUyMCU1QyUwQSUyMCUyMC0tcG9saWN5LmxvYWRfdmxtX3dlaWdodHMlM0R0cnVlJTIwJTVDJTBBJTIwJTIwLS1kYXRhc2V0LnJlcG9faWQlM0RsZXJvYm90JTJGbWV0YXdvcmxkX210NTAlMjAlNUMlMEElMjAlMjAtLWVudi50eXBlJTNEbWV0YXdvcmxkJTIwJTVDJTBBJTIwJTIwLS1lbnYudGFzayUzRGFzc2VtYmx5LXYzJTJDZGlhbC10dXJuLXYzJTJDaGFuZGxlLXByZXNzLXNpZGUtdjMlMjAlNUMlMEElMjAlMjAtLW91dHB1dF9kaXIlM0QuJTJGb3V0cHV0cyUyRiUyMCU1QyUwQSUyMCUyMC0tc3RlcHMlM0QxMDAwMDAlMjAlNUMlMEElMjAlMjAtLWJhdGNoX3NpemUlM0Q0JTIwJTVDJTBBJTIwJTIwLS1ldmFsLmJhdGNoX3NpemUlM0QxJTIwJTVDJTBBJTIwJTIwLS1ldmFsLm5fZXBpc29kZXMlM0QxJTIwJTVDJTBBJTIwJTIwLS1ldmFsX2ZyZXElM0QxMDAw",highlighted:`lerobot-train \\
  --policy.type=smolvla \\
  --policy.repo_id=<span class="hljs-variable">\${HF_USER}</span>/metaworld-test \\
  --policy.load_vlm_weights=<span class="hljs-literal">true</span> \\
  --dataset.repo_id=lerobot/metaworld_mt50 \\
  --env.type=metaworld \\
  --env.task=assembly-v3,dial-turn-v3,handle-press-side-v3 \\
  --output_dir=./outputs/ \\
  --steps=100000 \\
  --batch_size=4 \\
  --eval.batch_size=1 \\
  --eval.n_episodes=1 \\
  --eval_freq=1000`,wrap:!1}}),W=new wt({props:{code:"JTIwJTIwcGlwJTIwaW5zdGFsbCUyMCUyMmd5bW5hc2l1bSUzRCUzRDEuMS4wJTIy",highlighted:'  pip install <span class="hljs-string">&quot;gymnasium==1.1.0&quot;</span>',wrap:!1}}),z=new E({props:{title:"Quick start — evaluate a trained policy",local:"quick-start--evaluate-a-trained-policy",headingTag:"h2"}}),R=new wt({props:{code:"bGVyb2JvdC1ldmFsJTIwJTVDJTBBJTIwJTIwLS1wb2xpY3kucGF0aCUzRCUyMnlvdXItcG9saWN5LWlkJTIyJTIwJTVDJTBBJTIwJTIwLS1lbnYudHlwZSUzRG1ldGF3b3JsZCUyMCU1QyUwQSUyMCUyMC0tZW52LnRhc2slM0RtZWRpdW0lMjAlNUMlMEElMjAlMjAtLWV2YWwuYmF0Y2hfc2l6ZSUzRDElMjAlNUMlMEElMjAlMjAtLWV2YWwubl9lcGlzb2RlcyUzRDI=",highlighted:`lerobot-eval \\
  --policy.path=<span class="hljs-string">&quot;your-policy-id&quot;</span> \\
  --env.type=metaworld \\
  --env.task=medium \\
  --eval.batch_size=1 \\
  --eval.n_episodes=2`,wrap:!1}}),j=new E({props:{title:"Practical tips",local:"practical-tips",headingTag:"h2"}}),S=new Ht({props:{source:"https://github.com/huggingface/lerobot/blob/main/docs/source/metaworld.mdx"}}),{c(){h=n("meta"),q=i(),H=n("p"),B=i(),m(w.$$.fragment),Q=i(),m(y.$$.fragment),N=i(),M=n("p"),M.innerHTML=Mt,F=i(),g=n("ul"),g.innerHTML=gt,D=i(),v=n("p"),v.innerHTML=vt,P=i(),m($.$$.fragment),Z=i(),T=n("ul"),T.innerHTML=$t,Y=i(),m(b.$$.fragment),O=i(),J=n("p"),J.textContent=Tt,K=i(),k=n("ul"),k.innerHTML=bt,tt=i(),m(x.$$.fragment),et=i(),C=n("p"),C.textContent=Jt,lt=i(),m(L.$$.fragment),at=i(),U=n("p"),U.textContent=kt,it=i(),_=n("ul"),_.innerHTML=xt,st=i(),m(W.$$.fragment),nt=i(),I=n("p"),I.textContent=Ct,ot=i(),m(z.$$.fragment),rt=i(),G=n("p"),G.textContent=Lt,mt=i(),m(R.$$.fragment),pt=i(),V=n("p"),V.textContent=Ut,dt=i(),m(j.$$.fragment),ut=i(),A=n("ul"),A.innerHTML=_t,ct=i(),m(S.$$.fragment),ft=i(),X=n("p"),this.h()},l(t){const e=At("svelte-u9bgzb",document.head);h=o(e,"META",{name:!0,content:!0}),e.forEach(l),q=s(t),H=o(t,"P",{}),Wt(H).forEach(l),B=s(t),p(w.$$.fragment,t),Q=s(t),p(y.$$.fragment,t),N=s(t),M=o(t,"P",{"data-svelte-h":!0}),r(M)!=="svelte-ds2uvp"&&(M.innerHTML=Mt),F=s(t),g=o(t,"UL",{"data-svelte-h":!0}),r(g)!=="svelte-152wamb"&&(g.innerHTML=gt),D=s(t),v=o(t,"P",{"data-svelte-h":!0}),r(v)!=="svelte-10mdef1"&&(v.innerHTML=vt),P=s(t),p($.$$.fragment,t),Z=s(t),T=o(t,"UL",{"data-svelte-h":!0}),r(T)!=="svelte-hsdcd0"&&(T.innerHTML=$t),Y=s(t),p(b.$$.fragment,t),O=s(t),J=o(t,"P",{"data-svelte-h":!0}),r(J)!=="svelte-q713mn"&&(J.textContent=Tt),K=s(t),k=o(t,"UL",{"data-svelte-h":!0}),r(k)!=="svelte-twux1s"&&(k.innerHTML=bt),tt=s(t),p(x.$$.fragment,t),et=s(t),C=o(t,"P",{"data-svelte-h":!0}),r(C)!=="svelte-a2qi4m"&&(C.textContent=Jt),lt=s(t),p(L.$$.fragment,t),at=s(t),U=o(t,"P",{"data-svelte-h":!0}),r(U)!=="svelte-1biq3pv"&&(U.textContent=kt),it=s(t),_=o(t,"UL",{"data-svelte-h":!0}),r(_)!=="svelte-fwtjlz"&&(_.innerHTML=xt),st=s(t),p(W.$$.fragment,t),nt=s(t),I=o(t,"P",{"data-svelte-h":!0}),r(I)!=="svelte-1fq4zd9"&&(I.textContent=Ct),ot=s(t),p(z.$$.fragment,t),rt=s(t),G=o(t,"P",{"data-svelte-h":!0}),r(G)!=="svelte-1cupwiy"&&(G.textContent=Lt),mt=s(t),p(R.$$.fragment,t),pt=s(t),V=o(t,"P",{"data-svelte-h":!0}),r(V)!=="svelte-acq4dv"&&(V.textContent=Ut),dt=s(t),p(j.$$.fragment,t),ut=s(t),A=o(t,"UL",{"data-svelte-h":!0}),r(A)!=="svelte-yjhye8"&&(A.innerHTML=_t),ct=s(t),p(S.$$.fragment,t),ft=s(t),X=o(t,"P",{}),Wt(X).forEach(l),this.h()},h(){It(h,"name","hf:doc:metadata"),It(h,"content",qt)},m(t,e){St(document.head,h),a(t,q,e),a(t,H,e),a(t,B,e),d(w,t,e),a(t,Q,e),d(y,t,e),a(t,N,e),a(t,M,e),a(t,F,e),a(t,g,e),a(t,D,e),a(t,v,e),a(t,P,e),d($,t,e),a(t,Z,e),a(t,T,e),a(t,Y,e),d(b,t,e),a(t,O,e),a(t,J,e),a(t,K,e),a(t,k,e),a(t,tt,e),d(x,t,e),a(t,et,e),a(t,C,e),a(t,lt,e),d(L,t,e),a(t,at,e),a(t,U,e),a(t,it,e),a(t,_,e),a(t,st,e),d(W,t,e),a(t,nt,e),a(t,I,e),a(t,ot,e),d(z,t,e),a(t,rt,e),a(t,G,e),a(t,mt,e),d(R,t,e),a(t,pt,e),a(t,V,e),a(t,dt,e),d(j,t,e),a(t,ut,e),a(t,A,e),a(t,ct,e),d(S,t,e),a(t,ft,e),a(t,X,e),ht=!0},p:Gt,i(t){ht||(u(w.$$.fragment,t),u(y.$$.fragment,t),u($.$$.fragment,t),u(b.$$.fragment,t),u(x.$$.fragment,t),u(L.$$.fragment,t),u(W.$$.fragment,t),u(z.$$.fragment,t),u(R.$$.fragment,t),u(j.$$.fragment,t),u(S.$$.fragment,t),ht=!0)},o(t){c(w.$$.fragment,t),c(y.$$.fragment,t),c($.$$.fragment,t),c(b.$$.fragment,t),c(x.$$.fragment,t),c(L.$$.fragment,t),c(W.$$.fragment,t),c(z.$$.fragment,t),c(R.$$.fragment,t),c(j.$$.fragment,t),c(S.$$.fragment,t),ht=!1},d(t){t&&(l(q),l(H),l(B),l(Q),l(N),l(M),l(F),l(g),l(D),l(v),l(P),l(Z),l(T),l(Y),l(O),l(J),l(K),l(k),l(tt),l(et),l(C),l(lt),l(at),l(U),l(it),l(_),l(st),l(nt),l(I),l(ot),l(rt),l(G),l(mt),l(pt),l(V),l(dt),l(ut),l(A),l(ct),l(ft),l(X)),l(h),f(w,t),f(y,t),f($,t),f(b,t),f(x,t),f(L,t),f(W,t),f(z,t),f(R,t),f(j,t),f(S,t)}}}const qt='{"title":"Meta-World","local":"meta-world","sections":[{"title":"Why Meta-World matters","local":"why-meta-world-matters","sections":[],"depth":2},{"title":"What it enables in LeRobot","local":"what-it-enables-in-lerobot","sections":[],"depth":2},{"title":"Quick start, train a SmolVLA policy on Meta-World","local":"quick-start-train-a-smolvla-policy-on-meta-world","sections":[],"depth":2},{"title":"Quick start — evaluate a trained policy","local":"quick-start--evaluate-a-trained-policy","sections":[],"depth":2},{"title":"Practical tips","local":"practical-tips","sections":[],"depth":2}],"depth":1}';function Bt(yt){return Rt(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class Zt extends Vt{constructor(h){super(),jt(this,h,Bt,Xt,zt,{})}}export{Zt as component};
