import{s as Cl,n as Il,o as gl}from"../chunks/scheduler.eb244325.js";import{S as Rl,i as $l,e as i,s as a,c as p,h as Zl,a as o,d as l,b as n,f as Wt,g as r,j as U,k as fl,l as kt,m as s,n as M,t as c,o as y,p as J}from"../chunks/index.3fe63ad3.js";import{C as _l}from"../chunks/CopyLLMTxtMenu.08242e11.js";import{C as T}from"../chunks/CodeBlock.91baa5b4.js";import{H as h,E as vl}from"../chunks/MermaidChart.svelte_svelte_type_style_lang.234c3f85.js";function Vl(xt){let m,_e,$e,ve,d,Ve,u,Be,j,Ht=`Reachy 2 is an open-source humanoid robot made by Pollen Robotics, specifically designed for the development of embodied AI and real-world applications.
Check out <a href="https://www.pollen-robotics.com/reachy/" rel="nofollow">Pollen Robotics website</a>, or access <a href="https://docs.pollen-robotics.com/" rel="nofollow">Reachy 2 documentation</a> for more information on the platform!`,Se,b,Ge,f,Ft="Currently, there are two ways to teleoperate Reachy 2:",Xe,C,zt="<li>Pollen Robotics’ VR teleoperation (not included in LeRobot).</li> <li>Robot-to-robot teleoperation (use one Reachy 2 to control another).</li>",Le,I,Ye,g,qt='<strong>(Linux only)</strong> You can run Reachy 2 in simulation (Gazebo or MuJoCo) using the provided <a href="https://hub.docker.com/r/pollenrobotics/reachy2_core" rel="nofollow">Docker image</a>.',Ne,R,Dt='<li>Install <a href="https://docs.docker.com/engine/" rel="nofollow">Docker Engine</a>.</li> <li>Run (for MuJoCo):</li>',Ee,$,Ae,w,Re,Pt="If MuJoCo runs slowly (low simulation frequency), append <code>-e LD_LIBRARY_PATH=&quot;/opt/host-libs:$LD_LIBRARY_PATH&quot; \\</code> to the previous command to improve performance:",Qt,Z,Qe,_,We,v,ke,V,Ot=`<li>On your robot, check the <strong>service images</strong> meet the minimum versions:
<ul><li><strong>reachy2-core &gt;= 1.7.5.2</strong></li> <li><strong>webrtc &gt;= 2.0.1.1</strong></li></ul></li>`,xe,B,Kt="Then, if you want to use VR teleoperation:",He,S,el=`<li>Install the <a href="https://docs.pollen-robotics.com/teleoperation/teleoperation-introduction/discover-teleoperation/" rel="nofollow">Reachy 2 teleoperation application</a>.
Use version <strong>&gt;=v1.2.0</strong></li>`,Fe,G,tl="We recommend using two computers: one for teleoperation (Windows required) and another for recording with LeRobot.",ze,X,qe,L,ll='Follow the <a href="https://github.com/huggingface/lerobot#installation" rel="nofollow">installation instructions</a> to install LeRobot.',De,Y,sl="Install LeRobot with Reachy 2 dependencies:",Pe,N,Oe,E,Ke,A,al="How you manage Reachy 2 recording sessions is up to you, but the <strong>easiest</strong> way is to use this server so you can control sessions directly from the VR teleoperation app.",et,Q,nl="<p><strong>Note:</strong> Currently, only the VR teleoperation application works as a client for this server, so this step primarily targets teleoperation. You’re free to develop custom clients to manage sessions to your needs.</p>",tt,W,il="In your LeRobot environment, install the server from source:",lt,k,st,x,ol='Find the <a href="https://github.com/pollen-robotics/pollen_data_acquisition_server" rel="nofollow">pollen_data_acquisition_server documentation here</a>.',at,H,nt,F,it,z,pl=`Before starting teleoperation and data recording, find the <a href="https://docs.pollen-robotics.com/getting-started/setup-reachy2/connect-reachy2/" rel="nofollow">robot’s IP address</a>.
We strongly recommend connecting all devices (PC and robot) via <strong>Ethernet</strong>.`,ot,q,pt,D,rl="There are two ways to manage recording sessions when using the Reachy 2 VR teleoperation application:",rt,P,Ml="<li><strong>Using the data acquisition server (recommended for VR teleop)</strong>: The VR app orchestrates sessions (via the server it tells LeRobot when to create datasets, start/stop episodes) while also controlling the robot’s motions.</li> <li><strong>Using LeRobot’s record script</strong>: LeRobot owns session control and decides when to start/stop episodes. If you also use the VR teleop app, it’s only for motion control.</li>",Mt,O,ct,K,cl="Make sure you have installed pollen_data_acquisition_server, as explained in the Setup section.",yt,ee,yl="Launch the data acquisition server to be able to manage your session directly from the teleoperation application:",Jt,te,Ut,le,Jl=`Then get into the teleoperation application and choose “Data acquisition session”.
You can finally setup your session by following the screens displayed.`,ht,se,Ul="<p>Even without the VR app, you can use the <code>pollen_data_acquisition_server</code> with your own client implementation.</p>",Tt,ae,mt,ne,hl=`Reachy 2 is fully supported by LeRobot’s recording features.
If you choose this option but still want to use the VR teleoperation application, select “Standard session” in the app.`,wt,ie,Tl=`<strong>Example: start a recording without the mobile base:</strong>
First add reachy2 and reachy2_teleoperator to the imports of the record script. Then you can use the following command:`,dt,oe,ut,pe,jt,re,ml="<strong>Extended setup overview (all options included):</strong>",bt,Me,ft,ce,Ct,ye,wl=`Determine whether LeRobot robot.send_action() sends commands to the robot.
<strong>Must</strong> be set to false while using the VR teleoperation application, as the app already sends commands.`,It,Je,gt,Ue,dl=`Determine whether the teleoperator reads the goal or present position of the robot.
Must be set to true if a compliant Reachy 2 is used to control another one.`,Rt,he,$t,Te,ul=`From our initial tests, recording <strong>all</strong> joints when only some are moving can reduce model quality with certain policies.
To avoid this, you can exclude specific parts from recording and replay using:`,Zt,me,_t,we,jl="—teleop.with_<part>",vt,de,Vt,ue,bl=`—robot.with_left_teleop_camera=<true|false>
—robot.with_right_teleop_camera=<true|false>
—robot.with_torso_camera=<true|false>`,Bt,je,St,be,Gt,fe,Xt,Ce,Lt,Ie,Yt,ge,Nt,Ze,Et;return d=new _l({props:{containerStyle:"float: right; margin-left: 10px; display: inline-flex; position: relative; z-index: 10;"}}),u=new h({props:{title:"Reachy 2",local:"reachy-2",headingTag:"h1"}}),b=new h({props:{title:"Teleoperate Reachy 2",local:"teleoperate-reachy-2",headingTag:"h2"}}),I=new h({props:{title:"Reachy 2 Simulation",local:"reachy-2-simulation",headingTag:"h2"}}),$=new T({props:{code:"ZG9ja2VyJTIwcnVuJTIwLS1ybSUyMC1pdCUyMCU1QyUwQSUyMCUyMC0tbmFtZSUyMHJlYWNoeSUyMCU1QyUwQSUyMCUyMC0tcHJpdmlsZWdlZCUyMCU1QyUwQSUyMCUyMC0tbmV0d29yayUyMGhvc3QlMjAlNUMlMEElMjAlMjAtLWlwYyUyMGhvc3QlMjAlNUMlMEElMjAlMjAtLWRldmljZS1jZ3JvdXAtcnVsZSUzRCdjJTIwMTg5JTNBKiUyMHJ3bSclMjAlNUMlMEElMjAlMjAtLWdyb3VwLWFkZCUyMGF1ZGlvJTIwJTVDJTBBJTIwJTIwLWUlMjBST1NfRE9NQUlOX0lEJTNEJTIyJTI0Uk9TX0RPTUFJTl9JRCUyMiUyMCU1QyUwQSUyMCUyMC1lJTIwRElTUExBWSUzRCUyMiUyNERJU1BMQVklMjIlMjAlNUMlMEElMjAlMjAtZSUyMFJDVVRJTFNfQ09OU09MRV9PVVRQVVRfRk9STUFUJTNEJTIyJTVCJTdCc2V2ZXJpdHklN0QlNUQlM0ElMjAlN0JtZXNzYWdlJTdEJTIyJTIwJTVDJTBBJTIwJTIwLWUlMjBSRUFDSFkyX0NPUkVfU0VSVklDRV9GQUtFJTNEJTIyJTI0JTdCUkVBQ0hZMl9DT1JFX1NFUlZJQ0VfRkFLRSUzQS10cnVlJTdEJTIyJTIwJTVDJTBBJTIwJTIwLXYlMjAlMkZkZXYlM0ElMkZkZXYlMjAlNUMlMEElMjAlMjAtdiUyMCUyMiUyNEhPTUUlMkYucmVhY2h5X2NvbmZpZyUyMiUzQSUyRmhvbWUlMkZyZWFjaHklMkYucmVhY2h5X2NvbmZpZ19vdmVycmlkZSUyMCU1QyUwQSUyMCUyMC12JTIwJTIyJTI0SE9NRSUyRi5yZWFjaHkubG9nJTIyJTNBJTJGaG9tZSUyRnJlYWNoeSUyRi5yb3MlMkZsb2clMjAlNUMlMEElMjAlMjAtdiUyMCUyRnVzciUyRmxpYiUyRng4Nl82NC1saW51eC1nbnUlM0ElMkZvcHQlMkZob3N0LWxpYnMlMjAlNUMlMEElMjAlMjAtLWVudHJ5cG9pbnQlMjAlMkZwYWNrYWdlJTJGbGF1bmNoLnNoJTIwJTVDJTBBJTIwJTIwcG9sbGVucm9ib3RpY3MlMkZyZWFjaHkyX2NvcmUlM0ExLjcuNS45X2RlcGxveSUyMCU1QyUwQSUyMCUyMHN0YXJ0X3J2aXolM0ElM0R0cnVlJTIwc3RhcnRfc2RrX3NlcnZlciUzQSUzRHRydWUlMjBtdWpvY28lM0ElM0R0cnVl",highlighted:`docker run --rm -<span class="hljs-literal">it</span> <span class="hljs-string">\\</span>
  --name reachy <span class="hljs-string">\\</span>
  --privileged <span class="hljs-string">\\</span>
  --network host <span class="hljs-string">\\</span>
  --ipc host <span class="hljs-string">\\</span>
  --device-cgroup-rule=<span class="hljs-string">&#x27;c 189:* rwm&#x27;</span> <span class="hljs-string">\\</span>
  --group-add audio <span class="hljs-string">\\</span>
  -e ROS_DOMAIN_ID=<span class="hljs-string">&quot;$ROS_DOMAIN_ID&quot;</span> <span class="hljs-string">\\</span>
  -e DISPLAY=<span class="hljs-string">&quot;$DISPLAY&quot;</span> <span class="hljs-string">\\</span>
  -e RCUTILS_CONSOLE_OUTPUT_FORMAT=<span class="hljs-string">&quot;[{severity}]: {message}&quot;</span> <span class="hljs-string">\\</span>
  -e REACHY2_CORE_SERVICE_FAKE=<span class="hljs-string">&quot;\${REACHY2_CORE_SERVICE_FAKE:-true}&quot;</span> <span class="hljs-string">\\</span>
  -v /dev:/dev <span class="hljs-string">\\</span>
  -v <span class="hljs-string">&quot;$HOME/.reachy_config&quot;</span>:<span class="hljs-regexp">/home/reachy/</span>.reachy_config_override <span class="hljs-string">\\</span>
  -v <span class="hljs-string">&quot;$HOME/.reachy.log&quot;</span>:<span class="hljs-regexp">/home/reachy/</span>.ros/log <span class="hljs-string">\\</span>
  -v /usr/lib/x86_64-linux-gnu:/opt/host-libs <span class="hljs-string">\\</span>
  --entrypoint /package/launch.sh <span class="hljs-string">\\</span>
  pollenrobotics/reachy2_core:<span class="hljs-number">1.7</span>.<span class="hljs-number">5.9_deploy</span> <span class="hljs-string">\\</span>
  start_rviz:=<span class="hljs-literal">true</span> start_sdk_server:=<span class="hljs-literal">true</span> mujoco:=<span class="hljs-literal">true</span>`,wrap:!1}}),Z=new T({props:{code:"ZG9ja2VyJTIwcnVuJTIwLS1ybSUyMC1pdCUyMCU1QyUwQSUyMCUyMC0tbmFtZSUyMHJlYWNoeSUyMCU1QyUwQSUyMCUyMC0tcHJpdmlsZWdlZCUyMCU1QyUwQSUyMCUyMC0tbmV0d29yayUyMGhvc3QlMjAlNUMlMEElMjAlMjAtLWlwYyUyMGhvc3QlMjAlNUMlMEElMjAlMjAtLWRldmljZS1jZ3JvdXAtcnVsZSUzRCdjJTIwMTg5JTNBKiUyMHJ3bSclMjAlNUMlMEElMjAlMjAtLWdyb3VwLWFkZCUyMGF1ZGlvJTIwJTVDJTBBJTIwJTIwLWUlMjBST1NfRE9NQUlOX0lEJTNEJTIyJTI0Uk9TX0RPTUFJTl9JRCUyMiUyMCU1QyUwQSUyMCUyMC1lJTIwRElTUExBWSUzRCUyMiUyNERJU1BMQVklMjIlMjAlNUMlMEElMjAlMjAtZSUyMFJDVVRJTFNfQ09OU09MRV9PVVRQVVRfRk9STUFUJTNEJTIyJTVCJTdCc2V2ZXJpdHklN0QlNUQlM0ElMjAlN0JtZXNzYWdlJTdEJTIyJTIwJTVDJTBBJTIwJTIwLWUlMjBSRUFDSFkyX0NPUkVfU0VSVklDRV9GQUtFJTNEJTIyJTI0JTdCUkVBQ0hZMl9DT1JFX1NFUlZJQ0VfRkFLRSUzQS10cnVlJTdEJTIyJTIwJTVDJTBBJTIwJTIwLWUlMjBMRF9MSUJSQVJZX1BBVEglM0QlMjIlMkZvcHQlMkZob3N0LWxpYnMlM0ElMjRMRF9MSUJSQVJZX1BBVEglMjIlMjAlNUMlMEElMjAlMjAtdiUyMCUyRmRldiUzQSUyRmRldiUyMCU1QyUwQSUyMCUyMC12JTIwJTIyJTI0SE9NRSUyRi5yZWFjaHlfY29uZmlnJTIyJTNBJTJGaG9tZSUyRnJlYWNoeSUyRi5yZWFjaHlfY29uZmlnX292ZXJyaWRlJTIwJTVDJTBBJTIwJTIwLXYlMjAlMjIlMjRIT01FJTJGLnJlYWNoeS5sb2clMjIlM0ElMkZob21lJTJGcmVhY2h5JTJGLnJvcyUyRmxvZyUyMCU1QyUwQSUyMCUyMC12JTIwJTJGdXNyJTJGbGliJTJGeDg2XzY0LWxpbnV4LWdudSUzQSUyRm9wdCUyRmhvc3QtbGlicyUyMCU1QyUwQSUyMCUyMC0tZW50cnlwb2ludCUyMCUyRnBhY2thZ2UlMkZsYXVuY2guc2glMjAlNUMlMEElMjAlMjBwb2xsZW5yb2JvdGljcyUyRnJlYWNoeTJfY29yZSUzQTEuNy41LjlfZGVwbG95JTIwJTVDJTBBJTIwJTIwc3RhcnRfcnZpeiUzQSUzRHRydWUlMjBzdGFydF9zZGtfc2VydmVyJTNBJTNEdHJ1ZSUyMG11am9jbyUzQSUzRHRydWU=",highlighted:`docker run --rm -<span class="hljs-literal">it</span> <span class="hljs-string">\\</span>
  --name reachy <span class="hljs-string">\\</span>
  --privileged <span class="hljs-string">\\</span>
  --network host <span class="hljs-string">\\</span>
  --ipc host <span class="hljs-string">\\</span>
  --device-cgroup-rule=<span class="hljs-string">&#x27;c 189:* rwm&#x27;</span> <span class="hljs-string">\\</span>
  --group-add audio <span class="hljs-string">\\</span>
  -e ROS_DOMAIN_ID=<span class="hljs-string">&quot;$ROS_DOMAIN_ID&quot;</span> <span class="hljs-string">\\</span>
  -e DISPLAY=<span class="hljs-string">&quot;$DISPLAY&quot;</span> <span class="hljs-string">\\</span>
  -e RCUTILS_CONSOLE_OUTPUT_FORMAT=<span class="hljs-string">&quot;[{severity}]: {message}&quot;</span> <span class="hljs-string">\\</span>
  -e REACHY2_CORE_SERVICE_FAKE=<span class="hljs-string">&quot;\${REACHY2_CORE_SERVICE_FAKE:-true}&quot;</span> <span class="hljs-string">\\</span>
  -e LD_LIBRARY_PATH=<span class="hljs-string">&quot;/opt/host-libs:$LD_LIBRARY_PATH&quot;</span> <span class="hljs-string">\\</span>
  -v /dev:/dev <span class="hljs-string">\\</span>
  -v <span class="hljs-string">&quot;$HOME/.reachy_config&quot;</span>:<span class="hljs-regexp">/home/reachy/</span>.reachy_config_override <span class="hljs-string">\\</span>
  -v <span class="hljs-string">&quot;$HOME/.reachy.log&quot;</span>:<span class="hljs-regexp">/home/reachy/</span>.ros/log <span class="hljs-string">\\</span>
  -v /usr/lib/x86_64-linux-gnu:/opt/host-libs <span class="hljs-string">\\</span>
  --entrypoint /package/launch.sh <span class="hljs-string">\\</span>
  pollenrobotics/reachy2_core:<span class="hljs-number">1.7</span>.<span class="hljs-number">5.9_deploy</span> <span class="hljs-string">\\</span>
  start_rviz:=<span class="hljs-literal">true</span> start_sdk_server:=<span class="hljs-literal">true</span> mujoco:=<span class="hljs-literal">true</span>`,wrap:!1}}),_=new h({props:{title:"Setup",local:"setup",headingTag:"h2"}}),v=new h({props:{title:"Prerequisites",local:"prerequisites",headingTag:"h3"}}),X=new h({props:{title:"Install LeRobot",local:"install-lerobot",headingTag:"h3"}}),N=new T({props:{code:"cGlwJTIwaW5zdGFsbCUyMC1lJTIwJTIyLiU1QnJlYWNoeTIlNUQlMjI=",highlighted:'pip install -e <span class="hljs-string">&quot;.[reachy2]&quot;</span>',wrap:!1}}),E=new h({props:{title:"(Optional but recommended) Install pollen_data_acquisition_server",local:"optional-but-recommended-install-pollendataacquisitionserver",headingTag:"h3"}}),k=new T({props:{code:"Z2l0JTIwY2xvbmUlMjBodHRwcyUzQSUyRiUyRmdpdGh1Yi5jb20lMkZwb2xsZW4tcm9ib3RpY3MlMkZwb2xsZW5fZGF0YV9hY3F1aXNpdGlvbl9zZXJ2ZXIuZ2l0JTBBY2QlMjBwb2xsZW5fZGF0YV9hY3F1aXNpdGlvbl9zZXJ2ZXIlMEFwaXAlMjBpbnN0YWxsJTIwLWUlMjAu",highlighted:`git <span class="hljs-built_in">clone</span> https://github.com/pollen-robotics/pollen_data_acquisition_server.git
<span class="hljs-built_in">cd</span> pollen_data_acquisition_server
pip install -e .`,wrap:!1}}),H=new h({props:{title:"Step 1: Recording",local:"step-1-recording",headingTag:"h2"}}),F=new h({props:{title:"Get Reachy 2 IP address",local:"get-reachy-2-ip-address",headingTag:"h3"}}),q=new h({props:{title:"Launch recording",local:"launch-recording",headingTag:"h3"}}),O=new h({props:{title:"Option 1: Using Pollen data acquisition server (recommended for VR teleop)",local:"option-1-using-pollen-data-acquisition-server-recommended-for-vr-teleop",headingTag:"h3"}}),te=new T({props:{code:"cHl0aG9uJTIwLW0lMjBwb2xsZW5fZGF0YV9hY3F1aXNpdGlvbl9zZXJ2ZXIuc2VydmVy",highlighted:"python -m pollen_data_acquisition_server.server",wrap:!1}}),ae=new h({props:{title:"Option 2: Using lerobot.record",local:"option-2-using-lerobotrecord",headingTag:"h3"}}),oe=new T({props:{code:"cHl0aG9uJTIwLW0lMjBsZXJvYm90LnJlY29yZCUyMCU1QyUwQSUyMCUyMCUyMCUyMC0tcm9ib3QudHlwZSUzRHJlYWNoeTIlMjAlNUMlMEElMjAlMjAlMjAlMjAtLXJvYm90LmlwX2FkZHJlc3MlM0QxOTIuMTY4LjAuMjAwJTIwJTVDJTBBJTIwJTIwJTIwJTIwLS1yb2JvdC5pZCUzRHIyLTAwMDAlMjAlNUMlMEElMjAlMjAlMjAlMjAtLXJvYm90LnVzZV9leHRlcm5hbF9jb21tYW5kcyUzRHRydWUlMjAlNUMlMEElMjAlMjAlMjAlMjAtLXJvYm90LndpdGhfbW9iaWxlX2Jhc2UlM0RmYWxzZSUyMCU1QyUwQSUyMCUyMCUyMCUyMC0tdGVsZW9wLnR5cGUlM0RyZWFjaHkyX3RlbGVvcGVyYXRvciUyMCU1QyUwQSUyMCUyMCUyMCUyMC0tdGVsZW9wLmlwX2FkZHJlc3MlM0QxOTIuMTY4LjAuMjAwJTIwJTVDJTBBJTIwJTIwJTIwJTIwLS10ZWxlb3Aud2l0aF9tb2JpbGVfYmFzZSUzRGZhbHNlJTIwJTVDJTBBJTIwJTIwJTIwJTIwLS1kYXRhc2V0LnJlcG9faWQlM0Rwb2xsZW5fcm9ib3RpY3MlMkZyZWNvcmRfdGVzdCUyMCU1QyUwQSUyMCUyMCUyMCUyMC0tZGF0YXNldC5zaW5nbGVfdGFzayUzRCUyMlJlYWNoeSUyMDIlMjByZWNvcmRpbmclMjB0ZXN0JTIyJTIwJTVDJTBBJTIwJTIwJTIwJTIwLS1kYXRhc2V0Lm51bV9lcGlzb2RlcyUzRDElMjAlNUMlMEElMjAlMjAlMjAlMjAtLWRhdGFzZXQuZXBpc29kZV90aW1lX3MlM0Q1JTIwJTVDJTBBJTIwJTIwJTIwJTIwLS1kYXRhc2V0LmZwcyUzRDE1JTIwJTVDJTBBJTIwJTIwJTIwJTIwLS1kYXRhc2V0LnB1c2hfdG9faHViJTNEdHJ1ZSUyMCU1QyUwQSUyMCUyMCUyMCUyMC0tZGF0YXNldC5wcml2YXRlJTNEdHJ1ZSUyMCU1QyUwQSUyMCUyMCUyMCUyMC0tZGlzcGxheV9kYXRhJTNEdHJ1ZQ==",highlighted:`python -m lerobot.record \\
    --robot.type=reachy2 \\
    --robot.ip_address=192.168.0.200 \\
    --robot.id=r2-0000 \\
    --robot.use_external_commands=<span class="hljs-literal">true</span> \\
    --robot.with_mobile_base=<span class="hljs-literal">false</span> \\
    --teleop.type=reachy2_teleoperator \\
    --teleop.ip_address=192.168.0.200 \\
    --teleop.with_mobile_base=<span class="hljs-literal">false</span> \\
    --dataset.repo_id=pollen_robotics/record_test \\
    --dataset.single_task=<span class="hljs-string">&quot;Reachy 2 recording test&quot;</span> \\
    --dataset.num_episodes=1 \\
    --dataset.episode_time_s=5 \\
    --dataset.fps=15 \\
    --dataset.push_to_hub=<span class="hljs-literal">true</span> \\
    --dataset.private=<span class="hljs-literal">true</span> \\
    --display_data=<span class="hljs-literal">true</span>`,wrap:!1}}),pe=new h({props:{title:"Specific Options",local:"specific-options",headingTag:"h4"}}),Me=new T({props:{code:"cHl0aG9uJTIwLW0lMjBsZXJvYm90LnJlY29yZCUyMCU1QyUwQSUyMCUyMCUyMCUyMC0tcm9ib3QudHlwZSUzRHJlYWNoeTIlMjAlNUMlMEElMjAlMjAlMjAlMjAtLXJvYm90LmlwX2FkZHJlc3MlM0QxOTIuMTY4LjAuMjAwJTIwJTVDJTBBJTIwJTIwJTIwJTIwLS1yb2JvdC51c2VfZXh0ZXJuYWxfY29tbWFuZHMlM0R0cnVlJTIwJTVDJTBBJTIwJTIwJTIwJTIwLS1yb2JvdC53aXRoX21vYmlsZV9iYXNlJTNEdHJ1ZSUyMCU1QyUwQSUyMCUyMCUyMCUyMC0tcm9ib3Qud2l0aF9sX2FybSUzRHRydWUlMjAlNUMlMEElMjAlMjAlMjAlMjAtLXJvYm90LndpdGhfcl9hcm0lM0R0cnVlJTIwJTVDJTBBJTIwJTIwJTIwJTIwLS1yb2JvdC53aXRoX25lY2slM0R0cnVlJTIwJTVDJTBBJTIwJTIwJTIwJTIwLS1yb2JvdC53aXRoX2FudGVubmFzJTNEdHJ1ZSUyMCU1QyUwQSUyMCUyMCUyMCUyMC0tcm9ib3Qud2l0aF9sZWZ0X3RlbGVvcF9jYW1lcmElM0R0cnVlJTIwJTVDJTBBJTIwJTIwJTIwJTIwLS1yb2JvdC53aXRoX3JpZ2h0X3RlbGVvcF9jYW1lcmElM0R0cnVlJTIwJTVDJTBBJTIwJTIwJTIwJTIwLS1yb2JvdC53aXRoX3RvcnNvX2NhbWVyYSUzRGZhbHNlJTIwJTVDJTBBJTIwJTIwJTIwJTIwLS1yb2JvdC5kaXNhYmxlX3RvcnF1ZV9vbl9kaXNjb25uZWN0JTNEZmFsc2UlMjAlNUMlMEElMjAlMjAlMjAlMjAtLXJvYm90Lm1heF9yZWxhdGl2ZV90YXJnZXQlM0Q1LjAlMjAlNUMlMEElMjAlMjAlMjAlMjAtLXRlbGVvcC50eXBlJTNEcmVhY2h5Ml90ZWxlb3BlcmF0b3IlMjAlNUMlMEElMjAlMjAlMjAlMjAtLXRlbGVvcC5pcF9hZGRyZXNzJTNEMTkyLjE2OC4wLjIwMCUyMCU1QyUwQSUyMCUyMCUyMCUyMC0tdGVsZW9wLnVzZV9wcmVzZW50X3Bvc2l0aW9uJTNEZmFsc2UlMjAlNUMlMEElMjAlMjAlMjAlMjAtLXRlbGVvcC53aXRoX21vYmlsZV9iYXNlJTNEZmFsc2UlMjAlNUMlMEElMjAlMjAlMjAlMjAtLXRlbGVvcC53aXRoX2xfYXJtJTNEdHJ1ZSUyMCU1QyUwQSUyMCUyMCUyMCUyMC0tdGVsZW9wLndpdGhfcl9hcm0lM0R0cnVlJTIwJTVDJTBBJTIwJTIwJTIwJTIwLS10ZWxlb3Aud2l0aF9uZWNrJTNEdHJ1ZSUyMCU1QyUwQSUyMCUyMCUyMCUyMC0tdGVsZW9wLndpdGhfYW50ZW5uYXMlM0R0cnVlJTIwJTVDJTBBJTIwJTIwJTIwJTIwLS1kYXRhc2V0LnJlcG9faWQlM0Rwb2xsZW5fcm9ib3RpY3MlMkZyZWNvcmRfdGVzdCUyMCU1QyUwQSUyMCUyMCUyMCUyMC0tZGF0YXNldC5zaW5nbGVfdGFzayUzRCUyMlJlYWNoeSUyMDIlMjByZWNvcmRpbmclMjB0ZXN0JTIyJTIwJTVDJTBBJTIwJTIwJTIwJTIwLS1kYXRhc2V0Lm51bV9lcGlzb2RlcyUzRDElMjAlNUMlMEElMjAlMjAlMjAlMjAtLWRhdGFzZXQuZXBpc29kZV90aW1lX3MlM0Q1JTIwJTVDJTBBJTIwJTIwJTIwJTIwLS1kYXRhc2V0LmZwcyUzRDE1JTIwJTVDJTBBJTIwJTIwJTIwJTIwLS1kYXRhc2V0LnB1c2hfdG9faHViJTNEdHJ1ZSUyMCU1QyUwQSUyMCUyMCUyMCUyMC0tZGF0YXNldC5wcml2YXRlJTNEdHJ1ZSUyMCU1QyUwQSUyMCUyMCUyMCUyMC0tZGlzcGxheV9kYXRhJTNEdHJ1ZQ==",highlighted:`python -m lerobot.record \\
    --robot.type=reachy2 \\
    --robot.ip_address=192.168.0.200 \\
    --robot.use_external_commands=<span class="hljs-literal">true</span> \\
    --robot.with_mobile_base=<span class="hljs-literal">true</span> \\
    --robot.with_l_arm=<span class="hljs-literal">true</span> \\
    --robot.with_r_arm=<span class="hljs-literal">true</span> \\
    --robot.with_neck=<span class="hljs-literal">true</span> \\
    --robot.with_antennas=<span class="hljs-literal">true</span> \\
    --robot.with_left_teleop_camera=<span class="hljs-literal">true</span> \\
    --robot.with_right_teleop_camera=<span class="hljs-literal">true</span> \\
    --robot.with_torso_camera=<span class="hljs-literal">false</span> \\
    --robot.disable_torque_on_disconnect=<span class="hljs-literal">false</span> \\
    --robot.max_relative_target=5.0 \\
    --teleop.type=reachy2_teleoperator \\
    --teleop.ip_address=192.168.0.200 \\
    --teleop.use_present_position=<span class="hljs-literal">false</span> \\
    --teleop.with_mobile_base=<span class="hljs-literal">false</span> \\
    --teleop.with_l_arm=<span class="hljs-literal">true</span> \\
    --teleop.with_r_arm=<span class="hljs-literal">true</span> \\
    --teleop.with_neck=<span class="hljs-literal">true</span> \\
    --teleop.with_antennas=<span class="hljs-literal">true</span> \\
    --dataset.repo_id=pollen_robotics/record_test \\
    --dataset.single_task=<span class="hljs-string">&quot;Reachy 2 recording test&quot;</span> \\
    --dataset.num_episodes=1 \\
    --dataset.episode_time_s=5 \\
    --dataset.fps=15 \\
    --dataset.push_to_hub=<span class="hljs-literal">true</span> \\
    --dataset.private=<span class="hljs-literal">true</span> \\
    --display_data=<span class="hljs-literal">true</span>`,wrap:!1}}),ce=new h({props:{title:"--robot.use_external_commands",local:"--robotuseexternalcommands",headingTag:"h5"}}),Je=new h({props:{title:"--teleop.use_present_position",local:"--teleopusepresentposition",headingTag:"h5"}}),he=new h({props:{title:"Use the relevant parts",local:"use-the-relevant-parts",headingTag:"h5"}}),me=new T({props:{code:"LS1yb2JvdC53aXRoXyUzQ3BhcnQlM0UlM0RmYWxzZSUwQSU2MCU2MCU2MCUyQyUwQXdpdGglMjAlNjAlM0NwYXJ0JTNFJTYwJTIwYmVpbmclMjBvbmUlMjBvZiUyMCUzQSUyMCU2MG1vYmlsZV9iYXNlJTYwJTJDJTIwJTYwbF9hcm0lNjAlMkMlMjAlNjByX2FybSUyMiUyQyUyMCU2MG5lY2slNjAlMkMlMjAlNjBhbnRlbm5hcyU2MC4lMEFJdCUyMGRldGVybWluZSUyMHdoZXRoZXIlMjB0aGUlMjBjb3JyZXNwb25kaW5nJTIwcGFydCUyMGlzJTIwcmVjb3JkZWQlMjBpbiUyMHRoZSUyMG9ic2VydmF0aW9ucy4lMjBUcnVlJTIwaWYlMjBub3QlMjBzZXQuJTBBJTBBQnklMjBkZWZhdWx0JTJDJTIwKiphbGwlMjBwYXJ0cyUyMGFyZSUyMHJlY29yZGVkKiouJTBBJTBBVGhlJTIwc2FtZSUyMHBlci1wYXJ0JTIwbWVjaGFuaXNtJTIwaXMlMjBhdmFpbGFibGUlMjBpbiUyMCU2MHJlYWNoeTJfdGVsZW9wZXJhdG9yJTYwJTIwYXMlMjB3ZWxsLiUwQQ==",highlighted:'--robot.with_&lt;part&gt;=<span class="hljs-literal">false</span>\n```<span class="language-javascript">,\n<span class="hljs-keyword">with</span> <span class="hljs-string">`&lt;part&gt;`</span> being one <span class="hljs-keyword">of</span> : <span class="hljs-string">`mobile_base`</span>, <span class="hljs-string">`l_arm`</span>, <span class="hljs-string">`r_arm&quot;, `</span>neck<span class="hljs-string">`, `</span>antennas<span class="hljs-string">`.\nIt determine whether the corresponding part is recorded in the observations. True if not set.\n\nBy default, **all parts are recorded**.\n\nThe same per-part mechanism is available in `</span>reachy2_teleoperator<span class="hljs-string">` as well.\n</span></span>',wrap:!1}}),de=new T({props:{code:"d2l0aCUyMCU2MCUzQ3BhcnQlM0UlNjAlMjBiZWluZyUyMG9uZSUyMG9mJTIwJTNBJTIwJTYwbW9iaWxlX2Jhc2UlNjAlMkMlMjAlNjBsX2FybSU2MCUyQyUyMCU2MHJfYXJtJTIyJTJDJTIwJTYwbmVjayU2MCUyQyUyMCU2MGFudGVubmFzJTYwLiUwQURldGVybWluZSUyMHdoZXRoZXIlMjB0aGUlMjBjb3JyZXNwb25kaW5nJTIwcGFydCUyMGlzJTIwcmVjb3JkZWQlMjBpbiUyMHRoZSUyMGFjdGlvbnMuJTIwVHJ1ZSUyMGlmJTIwbm90JTIwc2V0LiUwQSUwQSUzRSUyMCoqSW1wb3J0YW50JTNBKiolMjBJbiUyMGElMjBnaXZlbiUyMHNlc3Npb24lMkMlMjB0aGUlMjAqKmVuYWJsZWQlMjBwYXJ0cyUyMG11c3QlMjBtYXRjaCoqJTIwb24lMjBib3RoJTIwdGhlJTIwcm9ib3QlMjBhbmQlMjB0aGUlMjB0ZWxlb3BlcmF0b3IuJTBBRm9yJTIwZXhhbXBsZSUyQyUyMGlmJTIwdGhlJTIwcm9ib3QlMjBydW5zJTIwd2l0aCUyMCU2MC0tcm9ib3Qud2l0aF9tb2JpbGVfYmFzZSUzRGZhbHNlJTYwJTJDJTIwdGhlJTIwdGVsZW9wZXJhdG9yJTIwbXVzdCUyMGRpc2FibGUlMjB0aGUlMjBzYW1lJTIwcGFydCUyMCU2MC0tdGVsZW9wZXJhdG9yLndpdGhfbW9iaWxlX2Jhc2UlM0RmYWxzZSU2MC4lMEElMEElMjMlMjMlMjMlMjMlMjMlMjBVc2UlMjB0aGUlMjByZWxldmFudCUyMGNhbWVyYXMlMEElMEFZb3UlMjBjYW4lMjBkbyUyMHRoZSUyMHNhbWUlMjBmb3IlMjAqKmNhbWVyYXMqKi4lMjBCeSUyMGRlZmF1bHQlMkMlMjBvbmx5JTIwdGhlJTIwKip0ZWxlb3BlcmF0aW9uJTIwY2FtZXJhcyoqJTIwYXJlJTIwcmVjb3JkZWQlMjAoYm90aCUyMCU2MGxlZnRfdGVsZW9wX2NhbWVyYSU2MCUyMGFuZCUyMCU2MHJpZ2h0X3RlbGVvcF9jYW1lcmElNjApLiUyMEVuYWJsZSUyMG9yJTIwZGlzYWJsZSUyMGVhY2glMjBjYW1lcmElMjB3aXRoJTNBJTBB",highlighted:'with <span class="hljs-code">`&lt;part&gt;`</span> being one of : <span class="hljs-code">`mobile_base`</span>, <span class="hljs-code">`l_arm`</span>, <span class="hljs-code">`r_arm&quot;, `</span>neck<span class="hljs-code">`, `</span>antennas`.\nDetermine whether the corresponding part is recorded in the actions. True if not set.\n\n<span class="hljs-quote">&gt; <span class="hljs-strong">**Important:**</span> In a given session, the <span class="hljs-strong">**enabled parts must match**</span> on both the robot and the teleoperator.</span>\nFor example, if the robot runs with <span class="hljs-code">`--robot.with_mobile_base=false`</span>, the teleoperator must disable the same part <span class="hljs-code">`--teleoperator.with_mobile_base=false`</span>.\n\n<span class="hljs-section">##### Use the relevant cameras</span>\n\nYou can do the same for <span class="hljs-strong">**cameras**</span>. By default, only the <span class="hljs-strong">**teleoperation cameras**</span> are recorded (both <span class="hljs-code">`left_teleop_camera`</span> and <span class="hljs-code">`right_teleop_camera`</span>). Enable or disable each camera with:\n',wrap:!1}}),je=new T({props:{code:"JTBBJTBBJTIzJTIzJTIwU3RlcCUyMDIlM0ElMjBSZXBsYXklMEElMEFNYWtlJTIwc3VyZSUyMHRoZSUyMHJvYm90JTIwaXMlMjBjb25maWd1cmVkJTIwd2l0aCUyMHRoZSUyMHNhbWUlMjBwYXJ0cyUyMGFzJTIwdGhlJTIwZGF0YXNldCUzQSUwQSUwQSU2MCU2MCU2MGJhc2glMEFweXRob24lMjAtbSUyMGxlcm9ib3QucmVwbGF5JTIwJTVDJTBBJTIwJTIwJTIwJTIwLS1yb2JvdC50eXBlJTNEcmVhY2h5MiUyMCU1QyUwQSUyMCUyMCUyMCUyMC0tcm9ib3QuaXBfYWRkcmVzcyUzRDE5Mi4xNjguMC4yMDAlMjAlNUMlMEElMjAlMjAlMjAlMjAtLXJvYm90LnVzZV9leHRlcm5hbF9jb21tYW5kcyUzRGZhbHNlJTIwJTVDJTBBJTIwJTIwJTIwJTIwLS1yb2JvdC53aXRoX21vYmlsZV9iYXNlJTNEZmFsc2UlMjAlNUMlMEElMjAlMjAlMjAlMjAtLWRhdGFzZXQucmVwb19pZCUzRHBvbGxlbl9yb2JvdGljcyUyRnJlY29yZF90ZXN0JTIwJTVDJTBBJTIwJTIwJTIwJTIwLS1kYXRhc2V0LmVwaXNvZGUlM0QwJTBBJTIwJTIwJTIwJTIwLS1kaXNwbGF5X2RhdGElM0R0cnVl",highlighted:`

<span class="hljs-comment">## Step 2: Replay</span>

Make sure the robot is configured with the same parts as the dataset:

\`\`\`bash
python -m lerobot.replay \\
    --robot.<span class="hljs-attribute">type</span>=reachy2 \\
    --robot.<span class="hljs-attribute">ip_address</span>=192.168.0.200 \\
    --robot.<span class="hljs-attribute">use_external_commands</span>=<span class="hljs-literal">false</span> \\
    --robot.<span class="hljs-attribute">with_mobile_base</span>=<span class="hljs-literal">false</span> \\
    --dataset.<span class="hljs-attribute">repo_id</span>=pollen_robotics/record_test \\
    --dataset.<span class="hljs-attribute">episode</span>=0
    <span class="hljs-attribute">--display_data</span>=<span class="hljs-literal">true</span>`,wrap:!1}}),be=new h({props:{title:"Step 3: Train",local:"step-3-train",headingTag:"h2"}}),fe=new T({props:{code:"cHl0aG9uJTIwLW0lMjBsZXJvYm90LnNjcmlwdHMudHJhaW4lMjAlNUMlMEElMjAlMjAtLWRhdGFzZXQucmVwb19pZCUzRHBvbGxlbl9yb2JvdGljcyUyRnJlY29yZF90ZXN0JTIwJTVDJTBBJTIwJTIwLS1wb2xpY3kudHlwZSUzRGFjdCUyMCU1QyUwQSUyMCUyMC0tb3V0cHV0X2RpciUzRG91dHB1dHMlMkZ0cmFpbiUyRnJlYWNoeTJfdGVzdCUyMCU1QyUwQSUyMCUyMC0tam9iX25hbWUlM0RyZWFjaHkyJTIwJTVDJTBBJTIwJTIwLS1wb2xpY3kuZGV2aWNlJTNEbXBzJTIwJTVDJTBBJTIwJTIwLS13YW5kYi5lbmFibGUlM0R0cnVlJTIwJTVDJTBBJTIwJTIwLS1wb2xpY3kucmVwb19pZCUzRHBvbGxlbl9yb2JvdGljcyUyRnJlY29yZF90ZXN0X3BvbGljeQ==",highlighted:`python -m lerobot.scripts.train \\
  --dataset.repo_id=pollen_robotics/record_test \\
  --policy.type=act \\
  --output_dir=outputs/train/reachy2_test \\
  --job_name=reachy2 \\
  --policy.device=mps \\
  --wandb.enable=<span class="hljs-literal">true</span> \\
  --policy.repo_id=pollen_robotics/record_test_policy`,wrap:!1}}),Ce=new h({props:{title:"Step 4: Evaluate",local:"step-4-evaluate",headingTag:"h2"}}),Ie=new T({props:{code:"cHl0aG9uJTIwLW0lMjBsZXJvYm90LnJlY29yZCUyMCU1QyUwQSUyMCUyMC0tcm9ib3QudHlwZSUzRHJlYWNoeTIlMjAlNUMlMEElMjAlMjAtLXJvYm90LmlwX2FkZHJlc3MlM0QxOTIuMTY4LjAuMjAwJTIwJTVDJTBBJTIwJTIwLS1kaXNwbGF5X2RhdGElM0RmYWxzZSUyMCU1QyUwQSUyMCUyMC0tZGF0YXNldC5yZXBvX2lkJTNEcG9sbGVuX3JvYm90aWNzJTJGZXZhbF9yZWNvcmRfdGVzdCUyMCU1QyUwQSUyMCUyMC0tZGF0YXNldC5zaW5nbGVfdGFzayUzRCUyMkV2YWx1YXRlJTIwcmVhY2h5MiUyMHBvbGljeSUyMiUyMCU1QyUwQSUyMCUyMC0tZGF0YXNldC5udW1fZXBpc29kZXMlM0QxMCUyMCU1QyUwQSUyMCUyMC0tcG9saWN5LnBhdGglM0RvdXRwdXRzJTJGdHJhaW4lMkZyZWFjaHkyX3Rlc3QlMkZjaGVja3BvaW50cyUyRmxhc3QlMkZwcmV0cmFpbmVkX21vZGVs",highlighted:`python -m lerobot.record \\
  --robot.type=reachy2 \\
  --robot.ip_address=192.168.0.200 \\
  --display_data=<span class="hljs-literal">false</span> \\
  --dataset.repo_id=pollen_robotics/eval_record_test \\
  --dataset.single_task=<span class="hljs-string">&quot;Evaluate reachy2 policy&quot;</span> \\
  --dataset.num_episodes=10 \\
  --policy.path=outputs/train/reachy2_test/checkpoints/last/pretrained_model`,wrap:!1}}),ge=new vl({props:{source:"https://github.com/huggingface/lerobot/blob/main/docs/source/reachy2.mdx"}}),{c(){m=i("meta"),_e=a(),$e=i("p"),ve=a(),p(d.$$.fragment),Ve=a(),p(u.$$.fragment),Be=a(),j=i("p"),j.innerHTML=Ht,Se=a(),p(b.$$.fragment),Ge=a(),f=i("p"),f.textContent=Ft,Xe=a(),C=i("ul"),C.innerHTML=zt,Le=a(),p(I.$$.fragment),Ye=a(),g=i("p"),g.innerHTML=qt,Ne=a(),R=i("ol"),R.innerHTML=Dt,Ee=a(),p($.$$.fragment),Ae=a(),w=i("blockquote"),Re=i("p"),Re.innerHTML=Pt,Qt=a(),p(Z.$$.fragment),Qe=a(),p(_.$$.fragment),We=a(),p(v.$$.fragment),ke=a(),V=i("ul"),V.innerHTML=Ot,xe=a(),B=i("p"),B.textContent=Kt,He=a(),S=i("ul"),S.innerHTML=el,Fe=a(),G=i("p"),G.textContent=tl,ze=a(),p(X.$$.fragment),qe=a(),L=i("p"),L.innerHTML=ll,De=a(),Y=i("p"),Y.textContent=sl,Pe=a(),p(N.$$.fragment),Oe=a(),p(E.$$.fragment),Ke=a(),A=i("p"),A.innerHTML=al,et=a(),Q=i("blockquote"),Q.innerHTML=nl,tt=a(),W=i("p"),W.textContent=il,lt=a(),p(k.$$.fragment),st=a(),x=i("p"),x.innerHTML=ol,at=a(),p(H.$$.fragment),nt=a(),p(F.$$.fragment),it=a(),z=i("p"),z.innerHTML=pl,ot=a(),p(q.$$.fragment),pt=a(),D=i("p"),D.textContent=rl,rt=a(),P=i("ul"),P.innerHTML=Ml,Mt=a(),p(O.$$.fragment),ct=a(),K=i("p"),K.textContent=cl,yt=a(),ee=i("p"),ee.textContent=yl,Jt=a(),p(te.$$.fragment),Ut=a(),le=i("p"),le.textContent=Jl,ht=a(),se=i("blockquote"),se.innerHTML=Ul,Tt=a(),p(ae.$$.fragment),mt=a(),ne=i("p"),ne.textContent=hl,wt=a(),ie=i("p"),ie.innerHTML=Tl,dt=a(),p(oe.$$.fragment),ut=a(),p(pe.$$.fragment),jt=a(),re=i("p"),re.innerHTML=ml,bt=a(),p(Me.$$.fragment),ft=a(),p(ce.$$.fragment),Ct=a(),ye=i("p"),ye.innerHTML=wl,It=a(),p(Je.$$.fragment),gt=a(),Ue=i("p"),Ue.textContent=dl,Rt=a(),p(he.$$.fragment),$t=a(),Te=i("p"),Te.innerHTML=ul,Zt=a(),p(me.$$.fragment),_t=a(),we=i("p"),we.textContent=jl,vt=a(),p(de.$$.fragment),Vt=a(),ue=i("p"),ue.textContent=bl,Bt=a(),p(je.$$.fragment),St=a(),p(be.$$.fragment),Gt=a(),p(fe.$$.fragment),Xt=a(),p(Ce.$$.fragment),Lt=a(),p(Ie.$$.fragment),Yt=a(),p(ge.$$.fragment),Nt=a(),Ze=i("p"),this.h()},l(e){const t=Zl("svelte-u9bgzb",document.head);m=o(t,"META",{name:!0,content:!0}),t.forEach(l),_e=n(e),$e=o(e,"P",{}),Wt($e).forEach(l),ve=n(e),r(d.$$.fragment,e),Ve=n(e),r(u.$$.fragment,e),Be=n(e),j=o(e,"P",{"data-svelte-h":!0}),U(j)!=="svelte-1xdnuz6"&&(j.innerHTML=Ht),Se=n(e),r(b.$$.fragment,e),Ge=n(e),f=o(e,"P",{"data-svelte-h":!0}),U(f)!=="svelte-1ojqvg1"&&(f.textContent=Ft),Xe=n(e),C=o(e,"UL",{"data-svelte-h":!0}),U(C)!=="svelte-1ggvo7o"&&(C.innerHTML=zt),Le=n(e),r(I.$$.fragment,e),Ye=n(e),g=o(e,"P",{"data-svelte-h":!0}),U(g)!=="svelte-1dog53k"&&(g.innerHTML=qt),Ne=n(e),R=o(e,"OL",{"data-svelte-h":!0}),U(R)!=="svelte-156hqyr"&&(R.innerHTML=Dt),Ee=n(e),r($.$$.fragment,e),Ae=n(e),w=o(e,"BLOCKQUOTE",{});var At=Wt(w);Re=o(At,"P",{"data-svelte-h":!0}),U(Re)!=="svelte-kr41dh"&&(Re.innerHTML=Pt),Qt=n(At),r(Z.$$.fragment,At),At.forEach(l),Qe=n(e),r(_.$$.fragment,e),We=n(e),r(v.$$.fragment,e),ke=n(e),V=o(e,"UL",{"data-svelte-h":!0}),U(V)!=="svelte-ok645w"&&(V.innerHTML=Ot),xe=n(e),B=o(e,"P",{"data-svelte-h":!0}),U(B)!=="svelte-w8lpge"&&(B.textContent=Kt),He=n(e),S=o(e,"UL",{"data-svelte-h":!0}),U(S)!=="svelte-vlq1xy"&&(S.innerHTML=el),Fe=n(e),G=o(e,"P",{"data-svelte-h":!0}),U(G)!=="svelte-bssrcw"&&(G.textContent=tl),ze=n(e),r(X.$$.fragment,e),qe=n(e),L=o(e,"P",{"data-svelte-h":!0}),U(L)!=="svelte-1smiryk"&&(L.innerHTML=ll),De=n(e),Y=o(e,"P",{"data-svelte-h":!0}),U(Y)!=="svelte-pzjrtr"&&(Y.textContent=sl),Pe=n(e),r(N.$$.fragment,e),Oe=n(e),r(E.$$.fragment,e),Ke=n(e),A=o(e,"P",{"data-svelte-h":!0}),U(A)!=="svelte-1a4w6qg"&&(A.innerHTML=al),et=n(e),Q=o(e,"BLOCKQUOTE",{"data-svelte-h":!0}),U(Q)!=="svelte-qn2ame"&&(Q.innerHTML=nl),tt=n(e),W=o(e,"P",{"data-svelte-h":!0}),U(W)!=="svelte-1d48kde"&&(W.textContent=il),lt=n(e),r(k.$$.fragment,e),st=n(e),x=o(e,"P",{"data-svelte-h":!0}),U(x)!=="svelte-8g2vrm"&&(x.innerHTML=ol),at=n(e),r(H.$$.fragment,e),nt=n(e),r(F.$$.fragment,e),it=n(e),z=o(e,"P",{"data-svelte-h":!0}),U(z)!=="svelte-1qas93h"&&(z.innerHTML=pl),ot=n(e),r(q.$$.fragment,e),pt=n(e),D=o(e,"P",{"data-svelte-h":!0}),U(D)!=="svelte-182f064"&&(D.textContent=rl),rt=n(e),P=o(e,"UL",{"data-svelte-h":!0}),U(P)!=="svelte-v2es0o"&&(P.innerHTML=Ml),Mt=n(e),r(O.$$.fragment,e),ct=n(e),K=o(e,"P",{"data-svelte-h":!0}),U(K)!=="svelte-dkxq35"&&(K.textContent=cl),yt=n(e),ee=o(e,"P",{"data-svelte-h":!0}),U(ee)!=="svelte-n8f1lt"&&(ee.textContent=yl),Jt=n(e),r(te.$$.fragment,e),Ut=n(e),le=o(e,"P",{"data-svelte-h":!0}),U(le)!=="svelte-14vis0y"&&(le.textContent=Jl),ht=n(e),se=o(e,"BLOCKQUOTE",{"data-svelte-h":!0}),U(se)!=="svelte-12ihg6i"&&(se.innerHTML=Ul),Tt=n(e),r(ae.$$.fragment,e),mt=n(e),ne=o(e,"P",{"data-svelte-h":!0}),U(ne)!=="svelte-1q05r0g"&&(ne.textContent=hl),wt=n(e),ie=o(e,"P",{"data-svelte-h":!0}),U(ie)!=="svelte-13igkbi"&&(ie.innerHTML=Tl),dt=n(e),r(oe.$$.fragment,e),ut=n(e),r(pe.$$.fragment,e),jt=n(e),re=o(e,"P",{"data-svelte-h":!0}),U(re)!=="svelte-cf4c7q"&&(re.innerHTML=ml),bt=n(e),r(Me.$$.fragment,e),ft=n(e),r(ce.$$.fragment,e),Ct=n(e),ye=o(e,"P",{"data-svelte-h":!0}),U(ye)!=="svelte-18zqixh"&&(ye.innerHTML=wl),It=n(e),r(Je.$$.fragment,e),gt=n(e),Ue=o(e,"P",{"data-svelte-h":!0}),U(Ue)!=="svelte-cyhye1"&&(Ue.textContent=dl),Rt=n(e),r(he.$$.fragment,e),$t=n(e),Te=o(e,"P",{"data-svelte-h":!0}),U(Te)!=="svelte-wfg4kf"&&(Te.innerHTML=ul),Zt=n(e),r(me.$$.fragment,e),_t=n(e),we=o(e,"P",{"data-svelte-h":!0}),U(we)!=="svelte-1skg537"&&(we.textContent=jl),vt=n(e),r(de.$$.fragment,e),Vt=n(e),ue=o(e,"P",{"data-svelte-h":!0}),U(ue)!=="svelte-4owi8b"&&(ue.textContent=bl),Bt=n(e),r(je.$$.fragment,e),St=n(e),r(be.$$.fragment,e),Gt=n(e),r(fe.$$.fragment,e),Xt=n(e),r(Ce.$$.fragment,e),Lt=n(e),r(Ie.$$.fragment,e),Yt=n(e),r(ge.$$.fragment,e),Nt=n(e),Ze=o(e,"P",{}),Wt(Ze).forEach(l),this.h()},h(){fl(m,"name","hf:doc:metadata"),fl(m,"content",Bl)},m(e,t){kt(document.head,m),s(e,_e,t),s(e,$e,t),s(e,ve,t),M(d,e,t),s(e,Ve,t),M(u,e,t),s(e,Be,t),s(e,j,t),s(e,Se,t),M(b,e,t),s(e,Ge,t),s(e,f,t),s(e,Xe,t),s(e,C,t),s(e,Le,t),M(I,e,t),s(e,Ye,t),s(e,g,t),s(e,Ne,t),s(e,R,t),s(e,Ee,t),M($,e,t),s(e,Ae,t),s(e,w,t),kt(w,Re),kt(w,Qt),M(Z,w,null),s(e,Qe,t),M(_,e,t),s(e,We,t),M(v,e,t),s(e,ke,t),s(e,V,t),s(e,xe,t),s(e,B,t),s(e,He,t),s(e,S,t),s(e,Fe,t),s(e,G,t),s(e,ze,t),M(X,e,t),s(e,qe,t),s(e,L,t),s(e,De,t),s(e,Y,t),s(e,Pe,t),M(N,e,t),s(e,Oe,t),M(E,e,t),s(e,Ke,t),s(e,A,t),s(e,et,t),s(e,Q,t),s(e,tt,t),s(e,W,t),s(e,lt,t),M(k,e,t),s(e,st,t),s(e,x,t),s(e,at,t),M(H,e,t),s(e,nt,t),M(F,e,t),s(e,it,t),s(e,z,t),s(e,ot,t),M(q,e,t),s(e,pt,t),s(e,D,t),s(e,rt,t),s(e,P,t),s(e,Mt,t),M(O,e,t),s(e,ct,t),s(e,K,t),s(e,yt,t),s(e,ee,t),s(e,Jt,t),M(te,e,t),s(e,Ut,t),s(e,le,t),s(e,ht,t),s(e,se,t),s(e,Tt,t),M(ae,e,t),s(e,mt,t),s(e,ne,t),s(e,wt,t),s(e,ie,t),s(e,dt,t),M(oe,e,t),s(e,ut,t),M(pe,e,t),s(e,jt,t),s(e,re,t),s(e,bt,t),M(Me,e,t),s(e,ft,t),M(ce,e,t),s(e,Ct,t),s(e,ye,t),s(e,It,t),M(Je,e,t),s(e,gt,t),s(e,Ue,t),s(e,Rt,t),M(he,e,t),s(e,$t,t),s(e,Te,t),s(e,Zt,t),M(me,e,t),s(e,_t,t),s(e,we,t),s(e,vt,t),M(de,e,t),s(e,Vt,t),s(e,ue,t),s(e,Bt,t),M(je,e,t),s(e,St,t),M(be,e,t),s(e,Gt,t),M(fe,e,t),s(e,Xt,t),M(Ce,e,t),s(e,Lt,t),M(Ie,e,t),s(e,Yt,t),M(ge,e,t),s(e,Nt,t),s(e,Ze,t),Et=!0},p:Il,i(e){Et||(c(d.$$.fragment,e),c(u.$$.fragment,e),c(b.$$.fragment,e),c(I.$$.fragment,e),c($.$$.fragment,e),c(Z.$$.fragment,e),c(_.$$.fragment,e),c(v.$$.fragment,e),c(X.$$.fragment,e),c(N.$$.fragment,e),c(E.$$.fragment,e),c(k.$$.fragment,e),c(H.$$.fragment,e),c(F.$$.fragment,e),c(q.$$.fragment,e),c(O.$$.fragment,e),c(te.$$.fragment,e),c(ae.$$.fragment,e),c(oe.$$.fragment,e),c(pe.$$.fragment,e),c(Me.$$.fragment,e),c(ce.$$.fragment,e),c(Je.$$.fragment,e),c(he.$$.fragment,e),c(me.$$.fragment,e),c(de.$$.fragment,e),c(je.$$.fragment,e),c(be.$$.fragment,e),c(fe.$$.fragment,e),c(Ce.$$.fragment,e),c(Ie.$$.fragment,e),c(ge.$$.fragment,e),Et=!0)},o(e){y(d.$$.fragment,e),y(u.$$.fragment,e),y(b.$$.fragment,e),y(I.$$.fragment,e),y($.$$.fragment,e),y(Z.$$.fragment,e),y(_.$$.fragment,e),y(v.$$.fragment,e),y(X.$$.fragment,e),y(N.$$.fragment,e),y(E.$$.fragment,e),y(k.$$.fragment,e),y(H.$$.fragment,e),y(F.$$.fragment,e),y(q.$$.fragment,e),y(O.$$.fragment,e),y(te.$$.fragment,e),y(ae.$$.fragment,e),y(oe.$$.fragment,e),y(pe.$$.fragment,e),y(Me.$$.fragment,e),y(ce.$$.fragment,e),y(Je.$$.fragment,e),y(he.$$.fragment,e),y(me.$$.fragment,e),y(de.$$.fragment,e),y(je.$$.fragment,e),y(be.$$.fragment,e),y(fe.$$.fragment,e),y(Ce.$$.fragment,e),y(Ie.$$.fragment,e),y(ge.$$.fragment,e),Et=!1},d(e){e&&(l(_e),l($e),l(ve),l(Ve),l(Be),l(j),l(Se),l(Ge),l(f),l(Xe),l(C),l(Le),l(Ye),l(g),l(Ne),l(R),l(Ee),l(Ae),l(w),l(Qe),l(We),l(ke),l(V),l(xe),l(B),l(He),l(S),l(Fe),l(G),l(ze),l(qe),l(L),l(De),l(Y),l(Pe),l(Oe),l(Ke),l(A),l(et),l(Q),l(tt),l(W),l(lt),l(st),l(x),l(at),l(nt),l(it),l(z),l(ot),l(pt),l(D),l(rt),l(P),l(Mt),l(ct),l(K),l(yt),l(ee),l(Jt),l(Ut),l(le),l(ht),l(se),l(Tt),l(mt),l(ne),l(wt),l(ie),l(dt),l(ut),l(jt),l(re),l(bt),l(ft),l(Ct),l(ye),l(It),l(gt),l(Ue),l(Rt),l($t),l(Te),l(Zt),l(_t),l(we),l(vt),l(Vt),l(ue),l(Bt),l(St),l(Gt),l(Xt),l(Lt),l(Yt),l(Nt),l(Ze)),l(m),J(d,e),J(u,e),J(b,e),J(I,e),J($,e),J(Z),J(_,e),J(v,e),J(X,e),J(N,e),J(E,e),J(k,e),J(H,e),J(F,e),J(q,e),J(O,e),J(te,e),J(ae,e),J(oe,e),J(pe,e),J(Me,e),J(ce,e),J(Je,e),J(he,e),J(me,e),J(de,e),J(je,e),J(be,e),J(fe,e),J(Ce,e),J(Ie,e),J(ge,e)}}}const Bl='{"title":"Reachy 2","local":"reachy-2","sections":[{"title":"Teleoperate Reachy 2","local":"teleoperate-reachy-2","sections":[],"depth":2},{"title":"Reachy 2 Simulation","local":"reachy-2-simulation","sections":[],"depth":2},{"title":"Setup","local":"setup","sections":[{"title":"Prerequisites","local":"prerequisites","sections":[],"depth":3},{"title":"Install LeRobot","local":"install-lerobot","sections":[],"depth":3},{"title":"(Optional but recommended) Install pollen_data_acquisition_server","local":"optional-but-recommended-install-pollendataacquisitionserver","sections":[],"depth":3}],"depth":2},{"title":"Step 1: Recording","local":"step-1-recording","sections":[{"title":"Get Reachy 2 IP address","local":"get-reachy-2-ip-address","sections":[],"depth":3},{"title":"Launch recording","local":"launch-recording","sections":[],"depth":3},{"title":"Option 1: Using Pollen data acquisition server (recommended for VR teleop)","local":"option-1-using-pollen-data-acquisition-server-recommended-for-vr-teleop","sections":[],"depth":3},{"title":"Option 2: Using lerobot.record","local":"option-2-using-lerobotrecord","sections":[{"title":"Specific Options","local":"specific-options","sections":[{"title":"--robot.use_external_commands","local":"--robotuseexternalcommands","sections":[],"depth":5},{"title":"--teleop.use_present_position","local":"--teleopusepresentposition","sections":[],"depth":5},{"title":"Use the relevant parts","local":"use-the-relevant-parts","sections":[],"depth":5}],"depth":4}],"depth":3}],"depth":2},{"title":"Step 3: Train","local":"step-3-train","sections":[],"depth":2},{"title":"Step 4: Evaluate","local":"step-4-evaluate","sections":[],"depth":2}],"depth":1}';function Sl(xt){return gl(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class El extends Rl{constructor(m){super(),$l(this,m,Sl,Vl,Cl,{})}}export{El as component};
