import{s as Zi,a as Hi,o as Ri,n as Un}from"../chunks/scheduler.eb244325.js";import{S as Si,i as Gi,e as s,s as i,c as f,q as _n,h as Bi,a,d as l,b as o,f as Cn,g as u,j as r,r as In,k as S,l as kt,m as n,n as d,t as $,o as h,p as b}from"../chunks/index.3fe63ad3.js";import{C as Pi}from"../chunks/CopyLLMTxtMenu.08242e11.js";import{C}from"../chunks/CodeBlock.91baa5b4.js";import{H as T,E as Ni}from"../chunks/MermaidChart.svelte_svelte_type_style_lang.234c3f85.js";import{H as ji,a as xn}from"../chunks/HfOption.0914e9f3.js";function Wi(J){let p,v="Example output:",y,g,m,c,U="Where the found port is: <code>/dev/tty.usbmodem575E0032081</code> corresponding to your board.",x;return g=new C({props:{code:"RmluZGluZyUyMGFsbCUyMGF2YWlsYWJsZSUyMHBvcnRzJTIwZm9yJTIwdGhlJTIwTW90b3JCdXMuJTBBJTVCJyUyRmRldiUyRnR0eS51c2Jtb2RlbTU3NUUwMDMyMDgxJyU1RCUwQVJlbW92ZSUyMHRoZSUyMFVTQiUyMGNhYmxlJTIwZnJvbSUyMHlvdXIlMjBNb3RvcnNCdXMlMjBhbmQlMjBwcmVzcyUyMEVudGVyJTIwd2hlbiUyMGRvbmUuJTBBJTBBJTVCLi4uRGlzY29ubmVjdCUyMGNvcnJlc3BvbmRpbmclMjBsZWFkZXIlMjBvciUyMGZvbGxvd2VyJTIwYXJtJTIwYW5kJTIwcHJlc3MlMjBFbnRlci4uLiU1RCUwQSUwQVRoZSUyMHBvcnQlMjBvZiUyMHRoaXMlMjBNb3RvcnNCdXMlMjBpcyUyMCUyRmRldiUyRnR0eS51c2Jtb2RlbTU3NUUwMDMyMDgxJTBBUmVjb25uZWN0JTIwdGhlJTIwVVNCJTIwY2FibGUu",highlighted:`<span class="hljs-symbol">Finding</span> all available ports for the <span class="hljs-symbol">MotorBus</span>.
[<span class="hljs-string">&#x27;/dev/tty.usbmodem575E0032081&#x27;</span>]
<span class="hljs-symbol">Remove</span> the <span class="hljs-symbol">USB</span> cable from your <span class="hljs-symbol">MotorsBus</span> and press <span class="hljs-symbol">Enter</span> when done.

[...<span class="hljs-symbol">Disconnect</span> corresponding leader or follower arm and press <span class="hljs-symbol">Enter</span>...]

<span class="hljs-symbol">The</span> port of this <span class="hljs-symbol">MotorsBus</span> is /dev/tty.usbmodem575E0032081
<span class="hljs-symbol">Reconnect</span> the <span class="hljs-symbol">USB</span> cable.`,wrap:!1}}),{c(){p=s("p"),p.textContent=v,y=i(),f(g.$$.fragment),m=i(),c=s("p"),c.innerHTML=U},l(M){p=a(M,"P",{"data-svelte-h":!0}),r(p)!=="svelte-c9hbnf"&&(p.textContent=v),y=o(M),u(g.$$.fragment,M),m=o(M),c=a(M,"P",{"data-svelte-h":!0}),r(c)!=="svelte-1js73yb"&&(c.innerHTML=U)},m(M,k){n(M,p,k),n(M,y,k),d(g,M,k),n(M,m,k),n(M,c,k),x=!0},p:Un,i(M){x||($(g.$$.fragment,M),x=!0)},o(M){h(g.$$.fragment,M),x=!1},d(M){M&&(l(p),l(y),l(m),l(c)),b(g,M)}}}function Ei(J){let p,v="On Linux, you might need to give access to the USB ports by running:",y,g,m,c,U="Example output:",x,M,k,L,I="Where the found port is: <code>/dev/ttyACM0</code> corresponding to your board.",j;return g=new C({props:{code:"c3VkbyUyMGNobW9kJTIwNjY2JTIwJTJGZGV2JTJGdHR5QUNNMCUwQXN1ZG8lMjBjaG1vZCUyMDY2NiUyMCUyRmRldiUyRnR0eUFDTTE=",highlighted:`sudo <span class="hljs-built_in">chmod</span> 666 /dev/ttyACM0
sudo <span class="hljs-built_in">chmod</span> 666 /dev/ttyACM1`,wrap:!1}}),M=new C({props:{code:"RmluZGluZyUyMGFsbCUyMGF2YWlsYWJsZSUyMHBvcnRzJTIwZm9yJTIwdGhlJTIwTW90b3JCdXMuJTBBJTVCJyUyRmRldiUyRnR0eUFDTTAnJTVEJTBBUmVtb3ZlJTIwdGhlJTIwdXNiJTIwY2FibGUlMjBmcm9tJTIweW91ciUyME1vdG9yc0J1cyUyMGFuZCUyMHByZXNzJTIwRW50ZXIlMjB3aGVuJTIwZG9uZS4lMEElMEElNUIuLi5EaXNjb25uZWN0JTIwY29ycmVzcG9uZGluZyUyMGxlYWRlciUyMG9yJTIwZm9sbG93ZXIlMjBhcm0lMjBhbmQlMjBwcmVzcyUyMEVudGVyLi4uJTVEJTBBJTBBVGhlJTIwcG9ydCUyMG9mJTIwdGhpcyUyME1vdG9yc0J1cyUyMGlzJTIwJTJGZGV2JTJGdHR5QUNNMCUwQVJlY29ubmVjdCUyMHRoZSUyMFVTQiUyMGNhYmxlLg==",highlighted:`<span class="hljs-symbol">Finding</span> all available ports for the <span class="hljs-symbol">MotorBus</span>.
[<span class="hljs-string">&#x27;/dev/ttyACM0&#x27;</span>]
<span class="hljs-symbol">Remove</span> the usb cable from your <span class="hljs-symbol">MotorsBus</span> and press <span class="hljs-symbol">Enter</span> when done.

[...<span class="hljs-symbol">Disconnect</span> corresponding leader or follower arm and press <span class="hljs-symbol">Enter</span>...]

<span class="hljs-symbol">The</span> port of this <span class="hljs-symbol">MotorsBus</span> is /dev/ttyACM0
<span class="hljs-symbol">Reconnect</span> the <span class="hljs-symbol">USB</span> cable.`,wrap:!1}}),{c(){p=s("p"),p.textContent=v,y=i(),f(g.$$.fragment),m=i(),c=s("p"),c.textContent=U,x=i(),f(M.$$.fragment),k=i(),L=s("p"),L.innerHTML=I},l(w){p=a(w,"P",{"data-svelte-h":!0}),r(p)!=="svelte-q7p48l"&&(p.textContent=v),y=o(w),u(g.$$.fragment,w),m=o(w),c=a(w,"P",{"data-svelte-h":!0}),r(c)!=="svelte-c9hbnf"&&(c.textContent=U),x=o(w),u(M.$$.fragment,w),k=o(w),L=a(w,"P",{"data-svelte-h":!0}),r(L)!=="svelte-17l1dbi"&&(L.innerHTML=I)},m(w,_){n(w,p,_),n(w,y,_),d(g,w,_),n(w,m,_),n(w,c,_),n(w,x,_),d(M,w,_),n(w,k,_),n(w,L,_),j=!0},p:Un,i(w){j||($(g.$$.fragment,w),$(M.$$.fragment,w),j=!0)},o(w){h(g.$$.fragment,w),h(M.$$.fragment,w),j=!1},d(w){w&&(l(p),l(y),l(m),l(c),l(x),l(k),l(L)),b(g,w),b(M,w)}}}function Ai(J){let p,v,y,g;return p=new xn({props:{id:"example",option:"Mac",$$slots:{default:[Wi]},$$scope:{ctx:J}}}),y=new xn({props:{id:"example",option:"Linux",$$slots:{default:[Ei]},$$scope:{ctx:J}}}),{c(){f(p.$$.fragment),v=i(),f(y.$$.fragment)},l(m){u(p.$$.fragment,m),v=o(m),u(y.$$.fragment,m)},m(m,c){d(p,m,c),n(m,v,c),d(y,m,c),g=!0},p(m,c){const U={};c&2&&(U.$$scope={dirty:c,ctx:m}),p.$set(U);const x={};c&2&&(x.$$scope={dirty:c,ctx:m}),y.$set(x)},i(m){g||($(p.$$.fragment,m),$(y.$$.fragment,m),g=!0)},o(m){h(p.$$.fragment,m),h(y.$$.fragment,m),g=!1},d(m){m&&l(v),b(p,m),b(y,m)}}}function Vi(J){let p,v;return p=new C({props:{code:"bGVyb2JvdC1jYWxpYnJhdGUlMjAlNUMlMEElMjAlMjAlMjAlMjAtLXRlbGVvcC50eXBlJTNEc28xMDBfbGVhZGVyJTIwJTVDJTBBJTIwJTIwJTIwJTIwLS10ZWxlb3AucG9ydCUzRCUyRmRldiUyRnR0eS51c2Jtb2RlbTU4NzYwNDMxNTUxJTIwJTVDJTIwJTIzJTIwJTNDLSUyMFRoZSUyMHBvcnQlMjBvZiUyMHlvdXIlMjByb2JvdCUwQSUyMCUyMCUyMCUyMC0tdGVsZW9wLmlkJTNEbXlfYXdlc29tZV9sZWFkZXJfYXJtJTIwJTIzJTIwJTNDLSUyMEdpdmUlMjB0aGUlMjByb2JvdCUyMGElMjB1bmlxdWUlMjBuYW1l",highlighted:`lerobot-calibrate \\
    --teleop.type=so100_leader \\
    --teleop.port=/dev/tty.usbmodem58760431551 \\ <span class="hljs-comment"># &lt;- The port of your robot</span>
    --teleop.id=my_awesome_leader_arm <span class="hljs-comment"># &lt;- Give the robot a unique name</span>`,wrap:!1}}),{c(){f(p.$$.fragment)},l(y){u(p.$$.fragment,y)},m(y,g){d(p,y,g),v=!0},p:Un,i(y){v||($(p.$$.fragment,y),v=!0)},o(y){h(p.$$.fragment,y),v=!1},d(y){b(p,y)}}}function Xi(J){let p,v;return p=new C({props:{code:"ZnJvbSUyMGxlcm9ib3QudGVsZW9wZXJhdG9ycy5zbzEwMF9sZWFkZXIlMjBpbXBvcnQlMjBTTzEwMExlYWRlckNvbmZpZyUyQyUyMFNPMTAwTGVhZGVyJTBBJTBBY29uZmlnJTIwJTNEJTIwU08xMDBMZWFkZXJDb25maWcoJTBBJTIwJTIwJTIwJTIwcG9ydCUzRCUyMiUyRmRldiUyRnR0eS51c2Jtb2RlbTU4NzYwNDMxNTUxJTIyJTJDJTBBJTIwJTIwJTIwJTIwaWQlM0QlMjJteV9hd2Vzb21lX2xlYWRlcl9hcm0lMjIlMkMlMEEpJTBBJTBBbGVhZGVyJTIwJTNEJTIwU08xMDBMZWFkZXIoY29uZmlnKSUwQWxlYWRlci5jb25uZWN0KGNhbGlicmF0ZSUzREZhbHNlKSUwQWxlYWRlci5jYWxpYnJhdGUoKSUwQWxlYWRlci5kaXNjb25uZWN0KCk=",highlighted:`<span class="hljs-keyword">from</span> lerobot.teleoperators.so100_leader <span class="hljs-keyword">import</span> SO100LeaderConfig, SO100Leader

config = SO100LeaderConfig(
    port=<span class="hljs-string">&quot;/dev/tty.usbmodem58760431551&quot;</span>,
    <span class="hljs-built_in">id</span>=<span class="hljs-string">&quot;my_awesome_leader_arm&quot;</span>,
)

leader = SO100Leader(config)
leader.connect(calibrate=<span class="hljs-literal">False</span>)
leader.calibrate()
leader.disconnect()`,wrap:!1}}),{c(){f(p.$$.fragment)},l(y){u(p.$$.fragment,y)},m(y,g){d(p,y,g),v=!0},p:Un,i(y){v||($(p.$$.fragment,y),v=!0)},o(y){h(p.$$.fragment,y),v=!1},d(y){b(p,y)}}}function Yi(J){let p,v,y,g;return p=new xn({props:{id:"calibrate_leader",option:"Command",$$slots:{default:[Vi]},$$scope:{ctx:J}}}),y=new xn({props:{id:"calibrate_leader",option:"API example",$$slots:{default:[Xi]},$$scope:{ctx:J}}}),{c(){f(p.$$.fragment),v=i(),f(y.$$.fragment)},l(m){u(p.$$.fragment,m),v=o(m),u(y.$$.fragment,m)},m(m,c){d(p,m,c),n(m,v,c),d(y,m,c),g=!0},p(m,c){const U={};c&2&&(U.$$scope={dirty:c,ctx:m}),p.$set(U);const x={};c&2&&(x.$$scope={dirty:c,ctx:m}),y.$set(x)},i(m){g||($(p.$$.fragment,m),$(y.$$.fragment,m),g=!0)},o(m){h(p.$$.fragment,m),h(y.$$.fragment,m),g=!1},d(m){m&&l(v),b(p,m),b(y,m)}}}function Fi(J){let p,v,y,g,m,c,U,x,M,k="In the steps below, we explain how to assemble the LeKiwi mobile robot.",L,I,j,w,_=`Follow this <a href="https://github.com/SIGRobotics-UIUC/LeKiwi" rel="nofollow">README</a>. It contains the bill of materials, with a link to source the parts, as well as the instructions to 3D print the parts.
And advise if it’s your first time printing or if you don’t own a 3D printer.`,It,E,jt,A,jn="If you have the <strong>wired</strong> LeKiwi version, you can skip the installation of the Raspberry Pi and setting up SSH. You can also run all commands directly on your PC for both the LeKiwi scripts and the leader arm scripts for teleoperating.",Zt,V,Ht,X,Zn="Now we have to set up the remote PC that will run on the LeKiwi Robot. This is normally a Raspberry Pi, but can be any PC that can run on 5V and has enough usb ports (2 or more) for the cameras and motor control board.",Rt,Y,St,F,Hn='For setting up the Raspberry Pi and its SD-card see: <a href="https://www.raspberrypi.com/documentation/computers/getting-started.html" rel="nofollow">Setup PI</a>. Here is explained how to download the <a href="https://www.raspberrypi.com/software/" rel="nofollow">Imager</a> to install Raspberry Pi OS or Ubuntu.',Gt,Q,Bt,z,Rn='After setting up your Pi, you should enable and set up <a href="https://www.raspberrypi.com/news/coding-on-raspberry-pi-remotely-with-visual-studio-code/" rel="nofollow">SSH</a> (Secure Shell Protocol) so you can log in to the Pi from your laptop without requiring a screen, keyboard, and mouse on the Pi. A great tutorial on how to do this can be found <a href="https://www.raspberrypi.com/documentation/computers/remote-access.html#ssh" rel="nofollow">here</a>. Logging into your Pi can be done in your Command Prompt (cmd) or, if you use VSCode you can use <a href="https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-ssh" rel="nofollow">this</a> extension.',Pt,O,Nt,D,Sn='On your Raspberry Pi install LeRobot using our <a href="./installation">Installation Guide</a>',Wt,q,Gn="In addition to these instructions, you need to install the Feetech SDK & ZeroMQ on your Pi:",Et,K,At,ee,Vt,te,Bn="If you already have installed LeRobot on your laptop/pc you can skip this step; otherwise, please follow along as we do the same steps we did on the Pi.",Xt,le,Pn='Follow our <a href="./installation">Installation Guide</a>',Yt,ne,Nn="In addition to these instructions, you need to install the Feetech SDK & ZeroMQ on your laptop/pc:",Ft,ie,Qt,oe,Wn=`Great :hugs:! You are now done installing LeRobot, and we can begin assembling the SO100/SO101 arms and the mobile base :robot:.
Every time you now want to use LeRobot, you can go to the <code>~/lerobot</code> folder where we installed LeRobot and run one of the commands.`,zt,se,Ot,ae,En="First, we will assemble the two SO100/SO101 arms. One to attach to the mobile base and one for teleoperation. Then we will assemble the mobile base. The instructions for assembling can be found on these two pages:",Dt,re,An='<li><a href="./so101#step-by-step-assembly-instructions">Assemble SO101</a></li> <li><a href="https://github.com/SIGRobotics-UIUC/LeKiwi/blob/main/Assembly.md" rel="nofollow">Assemble LeKiwi</a></li>',qt,pe,Kt,me,Vn="To find the port for each bus servo adapter, run this script:",el,fe,tl,G,ll,ue,nl,de,Xn='The instructions for configuring the motors can be found in the SO101 <a href="./so101#configure-the-motors">docs</a>. Besides the ids for the arm motors, we also need to set the motor ids for the mobile base. These need to be in a specific order to work. Below an image of the motor ids and motor mounting positions for the mobile base. Note that we only use one Motor Control board on LeKiwi. This means the motor ids for the wheels are 7, 8 and 9.',il,$e,Yn="You can run this command to setup motors for LeKiwi. It will first setup the motors for arm (id 6..1) and then setup motors for wheels (9,8,7)",ol,he,sl,Z,Fn,al,be,rl,ye,Qn="If you are having trouble connecting to the Mobile SO100, follow these steps to diagnose and resolve the issue.",pl,ce,ml,we,zn="Make sure that the correct IP for the Pi is used in the commands or in your code. To check the Raspberry Pi’s IP address, run (on the Pi command line):",fl,ge,ul,Me,dl,ve,On="Try pinging the Raspberry Pi from your laptop:",$l,Te,hl,Ce,Dn="If the ping fails:",bl,xe,qn="<li>Ensure the Pi is powered on and connected to the same network.</li> <li>Check if SSH is enabled on the Pi.</li>",yl,Ue,cl,Je,Kn="If you can’t SSH into the Pi, it might not be properly connected. Use:",wl,ke,gl,Le,ei="If you get a connection error:",Ml,Ut,H,Jn,_e,kn,Jt,ti="Interfacing Options -> SSH",Ln,vl,Ie,Tl,je,li=`Now we have to calibrate the leader arm and the follower arm. The wheel motors don’t have to be calibrated.
The calibration process is very important because it allows a neural network trained on one robot to work on another.`,Cl,Ze,xl,He,ni="Make sure the arm is connected to the Raspberry Pi and run this script or API example (on the Raspberry Pi via SSH) to launch calibration of the follower arm:",Ul,Re,Jl,Se,ii='We unified the calibration method for most robots, thus, the calibration steps for this SO100 arm are the same as the steps for the Koch and SO101. First, we have to move the robot to the position where each joint is in the middle of its range, then we press <code>Enter</code>. Secondly, we move all joints through their full range of motion. A video of this same process for the SO101 as reference can be found <a href="https://huggingface.co/docs/lerobot/en/so101#calibration-video" rel="nofollow">here</a>.',kl,Ge,Ll,Be,oi="If you have the <strong>wired</strong> LeKiwi version, please run all commands on your laptop.",_l,Pe,Il,Ne,si="Then, to calibrate the leader arm (which is attached to the laptop/pc). Run the following command of API example on your laptop:",jl,B,Zl,We,Hl,P,ai="<p>If you’re using a Mac, you might need to give Terminal permission to access your keyboard for teleoperation. Go to System Preferences &gt; Security &amp; Privacy &gt; Input Monitoring and check the box for Terminal.</p>",Rl,Ee,ri="To teleoperate, SSH into your Raspberry Pi, and run <code>conda activate lerobot</code> and this command:",Sl,Ae,Gl,Ve,pi="Then on your laptop, also run <code>conda activate lerobot</code> and run the API example, make sure you set the correct <code>remote_ip</code> and <code>port</code> in <code>examples/lekiwi/teleoperate.py</code>.",Bl,Xe,Pl,Ye,mi="You should see on your laptop something like this: <code>[INFO] Connected to remote robot at tcp://172.17.133.91:5555 and video stream at tcp://172.17.133.91:5556.</code> Now you can move the leader arm and use the keyboard (w,a,s,d) to drive forward, left, backwards, right. And use (z,x) to turn left or turn right. You can use (r,f) to increase and decrease the speed of the mobile robot. There are three speed modes, see the table below:",Nl,Fe,fi="<thead><tr><th>Speed Mode</th> <th>Linear Speed (m/s)</th> <th>Rotation Speed (deg/s)</th></tr></thead> <tbody><tr><td>Fast</td> <td>0.4</td> <td>90</td></tr> <tr><td>Medium</td> <td>0.25</td> <td>60</td></tr> <tr><td>Slow</td> <td>0.1</td> <td>30</td></tr></tbody>",Wl,Qe,ui="<thead><tr><th>Key</th> <th>Action</th></tr></thead> <tbody><tr><td>W</td> <td>Move forward</td></tr> <tr><td>A</td> <td>Move left</td></tr> <tr><td>S</td> <td>Move backward</td></tr> <tr><td>D</td> <td>Move right</td></tr> <tr><td>Z</td> <td>Turn left</td></tr> <tr><td>X</td> <td>Turn right</td></tr> <tr><td>R</td> <td>Increase speed</td></tr> <tr><td>F</td> <td>Decrease speed</td></tr></tbody>",El,N,di='<p>If you use a different keyboard, you can change the keys for each command in the <a href="https://github.com/huggingface/lerobot/blob/main/src/lerobot/robots/lekiwi/config_lekiwi.py" rel="nofollow"><code>LeKiwiClientConfig</code></a>.</p>',Al,ze,Vl,Oe,$i="If you have the <strong>wired</strong> LeKiwi version, please run all commands on your laptop.",Xl,De,Yl,qe,hi="Once you’re familiar with teleoperation, you can record your first dataset.",Fl,Ke,bi='We use the Hugging Face hub features for uploading your dataset. If you haven’t previously used the Hub, make sure you can login via the cli using a write-access token, this token can be generated from the <a href="https://huggingface.co/settings/tokens" rel="nofollow">Hugging Face settings</a>.',Ql,et,yi="Add your token to the CLI by running this command:",zl,tt,Ol,lt,ci="Then store your Hugging Face repository name in a variable:",Dl,nt,ql,it,wi="Now you can record a dataset. To record episodes and upload your dataset to the hub, execute this API example tailored for LeKiwi. Make sure to first adapt the <code>remote_ip</code>, <code>repo_id</code>, <code>port</code> and <code>task</code> in the script. If you would like to run the script for longer you can increase <code>NB_CYCLES_CLIENT_CONNECTION</code>.",Kl,ot,en,st,tn,at,gi='Locally, your dataset is stored in this folder: <code>~/.cache/huggingface/lerobot/{repo-id}</code>. At the end of data recording, your dataset will be uploaded on your Hugging Face page (e.g. <a href="https://huggingface.co/datasets/cadene/so101_test" rel="nofollow">https://huggingface.co/datasets/cadene/so101_test</a>) that you can obtain by running:',ln,rt,nn,pt,Mi="Your dataset will be automatically tagged with <code>LeRobot</code> for the community to find it easily, and you can also add custom tags (in this case <code>tutorial</code> for example).",on,mt,vi='You can look for other LeRobot datasets on the hub by searching for <code>LeRobot</code> <a href="https://huggingface.co/datasets?other=LeRobot" rel="nofollow">tags</a>.',sn,ft,an,ut,Ti="Once you’re comfortable with data recording, you can create a larger dataset for training. A good starting task is grasping an object at different locations and placing it in a bin. We suggest recording at least 50 episodes, with 10 episodes per location. Keep the cameras fixed and maintain consistent grasping behavior throughout the recordings. Also make sure the object you are manipulating is visible on the camera’s. A good rule of thumb is you should be able to do the task yourself by only looking at the camera images.",rn,dt,Ci="In the following sections, you’ll train your neural network. After achieving reliable grasping performance, you can start introducing more variations during data collection, such as additional grasp locations, different grasping techniques, and altering camera positions.",pn,$t,xi="Avoid adding too much variation too quickly, as it may hinder your results.",mn,ht,Ui='If you want to dive deeper into this important topic, you can check out the <a href="https://huggingface.co/blog/lerobot-datasets#what-makes-a-good-dataset" rel="nofollow">blog post</a> we wrote on what makes a good dataset.',fn,bt,un,yt,Ji='<li>On Linux, if the left and right arrow keys and escape key don’t have any effect during data recording, make sure you’ve set the <code>$DISPLAY</code> environment variable. See <a href="https://pynput.readthedocs.io/en/latest/limitations.html#linux" rel="nofollow">pynput limitations</a>.</li>',dn,ct,$n,wt,ki="To replay an episode run the API example below, make sure to change <code>remote_ip</code>, <code>port</code>, LeRobotDatasetId and episode index.",hn,gt,bn,Mt,Li='Congrats 🎉, your robot is all set to learn a task on its own. Start training it by the training part of this tutorial: <a href="./il_robots">Getting started with real-world robots</a>',yn,vt,cn,Tt,_i="To evaluate your policy run the <code>evaluate.py</code> API example, make sure to change <code>remote_ip</code>, <code>port</code>, model..",wn,Ct,gn,W,Ii='<p>If you have any questions or need help, please reach out on <a href="https://discord.com/invite/s3KuuzsPFb" rel="nofollow">Discord</a>.</p>',Mn,xt,vn,Lt,Tn;return m=new Pi({props:{containerStyle:"float: right; margin-left: 10px; display: inline-flex; position: relative; z-index: 10;"}}),U=new T({props:{title:"LeKiwi",local:"lekiwi",headingTag:"h1"}}),I=new T({props:{title:"Source the parts",local:"source-the-parts",headingTag:"h2"}}),E=new T({props:{title:"Wired version",local:"wired-version",headingTag:"h3"}}),V=new T({props:{title:"Install software on Pi",local:"install-software-on-pi",headingTag:"h2"}}),Y=new T({props:{title:"Install OS",local:"install-os",headingTag:"h3"}}),Q=new T({props:{title:"Setup SSH",local:"setup-ssh",headingTag:"h3"}}),O=new T({props:{title:"Install LeRobot on Pi 🤗",local:"install-lerobot-on-pi-",headingTag:"h3"}}),K=new C({props:{code:"cGlwJTIwaW5zdGFsbCUyMC1lJTIwJTIyLiU1Qmxla2l3aSU1RCUyMg==",highlighted:'pip install -e <span class="hljs-string">&quot;.[lekiwi]&quot;</span>',wrap:!1}}),ee=new T({props:{title:"Install LeRobot locally",local:"install-lerobot-locally",headingTag:"h2"}}),ie=new C({props:{code:"cGlwJTIwaW5zdGFsbCUyMC1lJTIwJTIyLiU1Qmxla2l3aSU1RCUyMg==",highlighted:'pip install -e <span class="hljs-string">&quot;.[lekiwi]&quot;</span>',wrap:!1}}),se=new T({props:{title:"Step-by-Step Assembly Instructions",local:"step-by-step-assembly-instructions",headingTag:"h1"}}),pe=new T({props:{title:"Find the USB ports associated with motor board",local:"find-the-usb-ports-associated-with-motor-board",headingTag:"h3"}}),fe=new C({props:{code:"bGVyb2JvdC1maW5kLXBvcnQ=",highlighted:"lerobot-find-port",wrap:!1}}),G=new ji({props:{id:"example",options:["Mac","Linux"],$$slots:{default:[Ai]},$$scope:{ctx:J}}}),ue=new T({props:{title:"Configure motors",local:"configure-motors",headingTag:"h3"}}),he=new C({props:{code:"bGVyb2JvdC1zZXR1cC1tb3RvcnMlMjAlNUMlMEElMjAlMjAlMjAlMjAtLXJvYm90LnR5cGUlM0RsZWtpd2klMjAlNUMlMEElMjAlMjAlMjAlMjAtLXJvYm90LnBvcnQlM0QlMkZkZXYlMkZ0dHkudXNibW9kZW01ODc2MDQzMTU1MSUyMCUyMyUyMCUzQy0lMjBwYXN0ZSUyMGhlcmUlMjB0aGUlMjBwb3J0JTIwZm91bmQlMjBhdCUyMHByZXZpb3VzJTIwc3RlcA==",highlighted:`lerobot-setup-motors \\
    --robot.type=lekiwi \\
    --robot.port=/dev/tty.usbmodem58760431551 <span class="hljs-comment"># &lt;- paste here the port found at previous step</span>`,wrap:!1}}),be=new T({props:{title:"Troubleshoot communication",local:"troubleshoot-communication",headingTag:"h3"}}),ce=new T({props:{title:"1. Verify IP Address Configuration",local:"1-verify-ip-address-configuration",headingTag:"h4"}}),ge=new C({props:{code:"aG9zdG5hbWUlMjAtSQ==",highlighted:"hostname -I",wrap:!1}}),Me=new T({props:{title:"2. Check if Pi is reachable from laptop/pc",local:"2-check-if-pi-is-reachable-from-laptoppc",headingTag:"h4"}}),Te=new C({props:{code:"cGluZyUyMCUzQ3lvdXJfcGlfaXBfYWRkcmVzcyUzRQ==",highlighted:'ping <span class="hljs-tag">&lt;<span class="hljs-name">your_pi_ip_address</span>&gt;</span>',wrap:!1}}),Ue=new T({props:{title:"3. Try SSH connection",local:"3-try-ssh-connection",headingTag:"h4"}}),ke=new C({props:{code:"c3NoJTIwJTNDeW91cl9waV91c2VyX25hbWUlM0UlNDAlM0N5b3VyX3BpX2lwX2FkZHJlc3MlM0U=",highlighted:"ssh &lt;your_pi_user_name&gt;@&lt;your_pi_ip_address&gt;",wrap:!1}}),_e=new C({props:{code:"c3VkbyUyMHJhc3BpLWNvbmZpZw==",highlighted:"sudo raspi-config",wrap:!1}}),Ie=new T({props:{title:"Calibration",local:"calibration",headingTag:"h3"}}),Ze=new T({props:{title:"Calibrate follower arm (on mobile base)",local:"calibrate-follower-arm-on-mobile-base",headingTag:"h3"}}),Re=new C({props:{code:"bGVyb2JvdC1jYWxpYnJhdGUlMjAlNUMlMEElMjAlMjAlMjAlMjAtLXJvYm90LnR5cGUlM0RsZWtpd2klMjAlNUMlMEElMjAlMjAlMjAlMjAtLXJvYm90LmlkJTNEbXlfYXdlc29tZV9raXdpJTIwJTIzJTIwJTNDLSUyMEdpdmUlMjB0aGUlMjByb2JvdCUyMGElMjB1bmlxdWUlMjBuYW1l",highlighted:`lerobot-calibrate \\
    --robot.type=lekiwi \\
    --robot.id=my_awesome_kiwi <span class="hljs-comment"># &lt;- Give the robot a unique name</span>`,wrap:!1}}),Ge=new T({props:{title:"Wired version",local:"wired-version",headingTag:"h3"}}),Pe=new T({props:{title:"Calibrate leader arm",local:"calibrate-leader-arm",headingTag:"h3"}}),B=new ji({props:{id:"calibrate_leader",options:["Command","API example"],$$slots:{default:[Yi]},$$scope:{ctx:J}}}),We=new T({props:{title:"Teleoperate LeKiwi",local:"teleoperate-lekiwi",headingTag:"h2"}}),Ae=new C({props:{code:"cHl0aG9uJTIwLW0lMjBsZXJvYm90LnJvYm90cy5sZWtpd2kubGVraXdpX2hvc3QlMjAtLXJvYm90LmlkJTNEbXlfYXdlc29tZV9raXdp",highlighted:"python -m lerobot.robots.lekiwi.lekiwi_host --robot.id=my_awesome_kiwi",wrap:!1}}),Xe=new C({props:{code:"cHl0aG9uJTIwZXhhbXBsZXMlMkZsZWtpd2klMkZ0ZWxlb3BlcmF0ZS5weQ==",highlighted:"python examples/lekiwi/teleoperate.py",wrap:!1}}),ze=new T({props:{title:"Wired version",local:"wired-version",headingTag:"h3"}}),De=new T({props:{title:"Record a dataset",local:"record-a-dataset",headingTag:"h2"}}),tt=new C({props:{code:"aHVnZ2luZ2ZhY2UtY2xpJTIwbG9naW4lMjAtLXRva2VuJTIwJTI0JTdCSFVHR0lOR0ZBQ0VfVE9LRU4lN0QlMjAtLWFkZC10by1naXQtY3JlZGVudGlhbA==",highlighted:'huggingface-cli login --token <span class="hljs-variable">${HUGGINGFACE_TOKEN}</span> --add-to-git-credential',wrap:!1}}),nt=new C({props:{code:"SEZfVVNFUiUzRCUyNChodWdnaW5nZmFjZS1jbGklMjB3aG9hbWklMjAlN0MlMjBoZWFkJTIwLW4lMjAxKSUwQWVjaG8lMjAlMjRIRl9VU0VS",highlighted:`HF_USER=$(huggingface-cli <span class="hljs-built_in">whoami</span> | <span class="hljs-built_in">head</span> -n 1)
<span class="hljs-built_in">echo</span> <span class="hljs-variable">$HF_USER</span>`,wrap:!1}}),ot=new C({props:{code:"cHl0aG9uJTIwZXhhbXBsZXMlMkZsZWtpd2klMkZyZWNvcmQucHk=",highlighted:"python examples/lekiwi/record.py",wrap:!1}}),st=new T({props:{title:"Dataset upload",local:"dataset-upload",headingTag:"h4"}}),rt=new C({props:{code:"ZWNobyUyMGh0dHBzJTNBJTJGJTJGaHVnZ2luZ2ZhY2UuY28lMkZkYXRhc2V0cyUyRiUyNCU3QkhGX1VTRVIlN0QlMkZzbzEwMV90ZXN0",highlighted:'<span class="hljs-built_in">echo</span> https://huggingface.co/datasets/<span class="hljs-variable">${HF_USER}</span>/so101_test',wrap:!1}}),ft=new T({props:{title:"Tips for gathering data",local:"tips-for-gathering-data",headingTag:"h4"}}),bt=new T({props:{title:"Troubleshooting:",local:"troubleshooting",headingTag:"h4"}}),ct=new T({props:{title:"Replay an episode",local:"replay-an-episode",headingTag:"h2"}}),gt=new C({props:{code:"cHl0aG9uJTIwZXhhbXBsZXMlMkZsZWtpd2klMkZyZXBsYXkucHk=",highlighted:"python examples/lekiwi/replay.py",wrap:!1}}),vt=new T({props:{title:"Evaluate your policy",local:"evaluate-your-policy",headingTag:"h2"}}),Ct=new C({props:{code:"cHl0aG9uJTIwZXhhbXBsZXMlMkZsZWtpd2klMkZldmFsdWF0ZS5weQ==",highlighted:"python examples/lekiwi/evaluate.py",wrap:!1}}),xt=new Ni({props:{source:"https://github.com/huggingface/lerobot/blob/main/docs/source/lekiwi.mdx"}}),{c(){p=s("meta"),v=i(),y=s("p"),g=i(),f(m.$$.fragment),c=i(),f(U.$$.fragment),x=i(),M=s("p"),M.textContent=k,L=i(),f(I.$$.fragment),j=i(),w=s("p"),w.innerHTML=_,It=i(),f(E.$$.fragment),jt=i(),A=s("p"),A.innerHTML=jn,Zt=i(),f(V.$$.fragment),Ht=i(),X=s("p"),X.textContent=Zn,Rt=i(),f(Y.$$.fragment),St=i(),F=s("p"),F.innerHTML=Hn,Gt=i(),f(Q.$$.fragment),Bt=i(),z=s("p"),z.innerHTML=Rn,Pt=i(),f(O.$$.fragment),Nt=i(),D=s("p"),D.innerHTML=Sn,Wt=i(),q=s("p"),q.textContent=Gn,Et=i(),f(K.$$.fragment),At=i(),f(ee.$$.fragment),Vt=i(),te=s("p"),te.textContent=Bn,Xt=i(),le=s("p"),le.innerHTML=Pn,Yt=i(),ne=s("p"),ne.textContent=Nn,Ft=i(),f(ie.$$.fragment),Qt=i(),oe=s("p"),oe.innerHTML=Wn,zt=i(),f(se.$$.fragment),Ot=i(),ae=s("p"),ae.textContent=En,Dt=i(),re=s("ul"),re.innerHTML=An,qt=i(),f(pe.$$.fragment),Kt=i(),me=s("p"),me.textContent=Vn,el=i(),f(fe.$$.fragment),tl=i(),f(G.$$.fragment),ll=i(),f(ue.$$.fragment),nl=i(),de=s("p"),de.innerHTML=Xn,il=i(),$e=s("p"),$e.textContent=Yn,ol=i(),f(he.$$.fragment),sl=i(),Z=s("img"),al=i(),f(be.$$.fragment),rl=i(),ye=s("p"),ye.textContent=Qn,pl=i(),f(ce.$$.fragment),ml=i(),we=s("p"),we.textContent=zn,fl=i(),f(ge.$$.fragment),ul=i(),f(Me.$$.fragment),dl=i(),ve=s("p"),ve.textContent=On,$l=i(),f(Te.$$.fragment),hl=i(),Ce=s("p"),Ce.textContent=Dn,bl=i(),xe=s("ul"),xe.innerHTML=qn,yl=i(),f(Ue.$$.fragment),cl=i(),Je=s("p"),Je.textContent=Kn,wl=i(),f(ke.$$.fragment),gl=i(),Le=s("p"),Le.textContent=ei,Ml=i(),Ut=s("ul"),H=s("li"),Jn=_n(`Ensure SSH is enabled on the Pi by running:

	`),f(_e.$$.fragment),kn=_n(`
Then navigate to: `),Jt=s("strong"),Jt.textContent=ti,Ln=_n(" and enable it."),vl=i(),f(Ie.$$.fragment),Tl=i(),je=s("p"),je.textContent=li,Cl=i(),f(Ze.$$.fragment),xl=i(),He=s("p"),He.textContent=ni,Ul=i(),f(Re.$$.fragment),Jl=i(),Se=s("p"),Se.innerHTML=ii,kl=i(),f(Ge.$$.fragment),Ll=i(),Be=s("p"),Be.innerHTML=oi,_l=i(),f(Pe.$$.fragment),Il=i(),Ne=s("p"),Ne.textContent=si,jl=i(),f(B.$$.fragment),Zl=i(),f(We.$$.fragment),Hl=i(),P=s("blockquote"),P.innerHTML=ai,Rl=i(),Ee=s("p"),Ee.innerHTML=ri,Sl=i(),f(Ae.$$.fragment),Gl=i(),Ve=s("p"),Ve.innerHTML=pi,Bl=i(),f(Xe.$$.fragment),Pl=i(),Ye=s("p"),Ye.innerHTML=mi,Nl=i(),Fe=s("table"),Fe.innerHTML=fi,Wl=i(),Qe=s("table"),Qe.innerHTML=ui,El=i(),N=s("blockquote"),N.innerHTML=di,Al=i(),f(ze.$$.fragment),Vl=i(),Oe=s("p"),Oe.innerHTML=$i,Xl=i(),f(De.$$.fragment),Yl=i(),qe=s("p"),qe.textContent=hi,Fl=i(),Ke=s("p"),Ke.innerHTML=bi,Ql=i(),et=s("p"),et.textContent=yi,zl=i(),f(tt.$$.fragment),Ol=i(),lt=s("p"),lt.textContent=ci,Dl=i(),f(nt.$$.fragment),ql=i(),it=s("p"),it.innerHTML=wi,Kl=i(),f(ot.$$.fragment),en=i(),f(st.$$.fragment),tn=i(),at=s("p"),at.innerHTML=gi,ln=i(),f(rt.$$.fragment),nn=i(),pt=s("p"),pt.innerHTML=Mi,on=i(),mt=s("p"),mt.innerHTML=vi,sn=i(),f(ft.$$.fragment),an=i(),ut=s("p"),ut.textContent=Ti,rn=i(),dt=s("p"),dt.textContent=Ci,pn=i(),$t=s("p"),$t.textContent=xi,mn=i(),ht=s("p"),ht.innerHTML=Ui,fn=i(),f(bt.$$.fragment),un=i(),yt=s("ul"),yt.innerHTML=Ji,dn=i(),f(ct.$$.fragment),$n=i(),wt=s("p"),wt.innerHTML=ki,hn=i(),f(gt.$$.fragment),bn=i(),Mt=s("p"),Mt.innerHTML=Li,yn=i(),f(vt.$$.fragment),cn=i(),Tt=s("p"),Tt.innerHTML=_i,wn=i(),f(Ct.$$.fragment),gn=i(),W=s("blockquote"),W.innerHTML=Ii,Mn=i(),f(xt.$$.fragment),vn=i(),Lt=s("p"),this.h()},l(e){const t=Bi("svelte-u9bgzb",document.head);p=a(t,"META",{name:!0,content:!0}),t.forEach(l),v=o(e),y=a(e,"P",{}),Cn(y).forEach(l),g=o(e),u(m.$$.fragment,e),c=o(e),u(U.$$.fragment,e),x=o(e),M=a(e,"P",{"data-svelte-h":!0}),r(M)!=="svelte-q7mzwy"&&(M.textContent=k),L=o(e),u(I.$$.fragment,e),j=o(e),w=a(e,"P",{"data-svelte-h":!0}),r(w)!=="svelte-57u5or"&&(w.innerHTML=_),It=o(e),u(E.$$.fragment,e),jt=o(e),A=a(e,"P",{"data-svelte-h":!0}),r(A)!=="svelte-xyz8mq"&&(A.innerHTML=jn),Zt=o(e),u(V.$$.fragment,e),Ht=o(e),X=a(e,"P",{"data-svelte-h":!0}),r(X)!=="svelte-19q7wi3"&&(X.textContent=Zn),Rt=o(e),u(Y.$$.fragment,e),St=o(e),F=a(e,"P",{"data-svelte-h":!0}),r(F)!=="svelte-1ylxyw3"&&(F.innerHTML=Hn),Gt=o(e),u(Q.$$.fragment,e),Bt=o(e),z=a(e,"P",{"data-svelte-h":!0}),r(z)!=="svelte-1km4qbm"&&(z.innerHTML=Rn),Pt=o(e),u(O.$$.fragment,e),Nt=o(e),D=a(e,"P",{"data-svelte-h":!0}),r(D)!=="svelte-185c6nt"&&(D.innerHTML=Sn),Wt=o(e),q=a(e,"P",{"data-svelte-h":!0}),r(q)!=="svelte-nqlhid"&&(q.textContent=Gn),Et=o(e),u(K.$$.fragment,e),At=o(e),u(ee.$$.fragment,e),Vt=o(e),te=a(e,"P",{"data-svelte-h":!0}),r(te)!=="svelte-1ymehvx"&&(te.textContent=Bn),Xt=o(e),le=a(e,"P",{"data-svelte-h":!0}),r(le)!=="svelte-1y5utev"&&(le.innerHTML=Pn),Yt=o(e),ne=a(e,"P",{"data-svelte-h":!0}),r(ne)!=="svelte-4nz320"&&(ne.textContent=Nn),Ft=o(e),u(ie.$$.fragment,e),Qt=o(e),oe=a(e,"P",{"data-svelte-h":!0}),r(oe)!=="svelte-me6gw2"&&(oe.innerHTML=Wn),zt=o(e),u(se.$$.fragment,e),Ot=o(e),ae=a(e,"P",{"data-svelte-h":!0}),r(ae)!=="svelte-1skp2m2"&&(ae.textContent=En),Dt=o(e),re=a(e,"UL",{"data-svelte-h":!0}),r(re)!=="svelte-1udu36q"&&(re.innerHTML=An),qt=o(e),u(pe.$$.fragment,e),Kt=o(e),me=a(e,"P",{"data-svelte-h":!0}),r(me)!=="svelte-1qt1z72"&&(me.textContent=Vn),el=o(e),u(fe.$$.fragment,e),tl=o(e),u(G.$$.fragment,e),ll=o(e),u(ue.$$.fragment,e),nl=o(e),de=a(e,"P",{"data-svelte-h":!0}),r(de)!=="svelte-1qp8iks"&&(de.innerHTML=Xn),il=o(e),$e=a(e,"P",{"data-svelte-h":!0}),r($e)!=="svelte-1tsoqj"&&($e.textContent=Yn),ol=o(e),u(he.$$.fragment,e),sl=o(e),Z=a(e,"IMG",{src:!0,alt:!0,title:!0,width:!0}),al=o(e),u(be.$$.fragment,e),rl=o(e),ye=a(e,"P",{"data-svelte-h":!0}),r(ye)!=="svelte-16buj2m"&&(ye.textContent=Qn),pl=o(e),u(ce.$$.fragment,e),ml=o(e),we=a(e,"P",{"data-svelte-h":!0}),r(we)!=="svelte-9jxcy0"&&(we.textContent=zn),fl=o(e),u(ge.$$.fragment,e),ul=o(e),u(Me.$$.fragment,e),dl=o(e),ve=a(e,"P",{"data-svelte-h":!0}),r(ve)!=="svelte-ki46u2"&&(ve.textContent=On),$l=o(e),u(Te.$$.fragment,e),hl=o(e),Ce=a(e,"P",{"data-svelte-h":!0}),r(Ce)!=="svelte-govsk3"&&(Ce.textContent=Dn),bl=o(e),xe=a(e,"UL",{"data-svelte-h":!0}),r(xe)!=="svelte-1jneq4q"&&(xe.innerHTML=qn),yl=o(e),u(Ue.$$.fragment,e),cl=o(e),Je=a(e,"P",{"data-svelte-h":!0}),r(Je)!=="svelte-19p940e"&&(Je.textContent=Kn),wl=o(e),u(ke.$$.fragment,e),gl=o(e),Le=a(e,"P",{"data-svelte-h":!0}),r(Le)!=="svelte-od2yht"&&(Le.textContent=ei),Ml=o(e),Ut=a(e,"UL",{});var _t=Cn(Ut);H=a(_t,"LI",{});var R=Cn(H);Jn=In(R,`Ensure SSH is enabled on the Pi by running:

	`),u(_e.$$.fragment,R),kn=In(R,`
Then navigate to: `),Jt=a(R,"STRONG",{"data-svelte-h":!0}),r(Jt)!=="svelte-sg10t3"&&(Jt.textContent=ti),Ln=In(R," and enable it."),R.forEach(l),_t.forEach(l),vl=o(e),u(Ie.$$.fragment,e),Tl=o(e),je=a(e,"P",{"data-svelte-h":!0}),r(je)!=="svelte-31xp6g"&&(je.textContent=li),Cl=o(e),u(Ze.$$.fragment,e),xl=o(e),He=a(e,"P",{"data-svelte-h":!0}),r(He)!=="svelte-1fuaoxo"&&(He.textContent=ni),Ul=o(e),u(Re.$$.fragment,e),Jl=o(e),Se=a(e,"P",{"data-svelte-h":!0}),r(Se)!=="svelte-1op7jdk"&&(Se.innerHTML=ii),kl=o(e),u(Ge.$$.fragment,e),Ll=o(e),Be=a(e,"P",{"data-svelte-h":!0}),r(Be)!=="svelte-15wfbkg"&&(Be.innerHTML=oi),_l=o(e),u(Pe.$$.fragment,e),Il=o(e),Ne=a(e,"P",{"data-svelte-h":!0}),r(Ne)!=="svelte-1pxbx6u"&&(Ne.textContent=si),jl=o(e),u(B.$$.fragment,e),Zl=o(e),u(We.$$.fragment,e),Hl=o(e),P=a(e,"BLOCKQUOTE",{class:!0,"data-svelte-h":!0}),r(P)!=="svelte-newb6x"&&(P.innerHTML=ai),Rl=o(e),Ee=a(e,"P",{"data-svelte-h":!0}),r(Ee)!=="svelte-y3jm3t"&&(Ee.innerHTML=ri),Sl=o(e),u(Ae.$$.fragment,e),Gl=o(e),Ve=a(e,"P",{"data-svelte-h":!0}),r(Ve)!=="svelte-edyiau"&&(Ve.innerHTML=pi),Bl=o(e),u(Xe.$$.fragment,e),Pl=o(e),Ye=a(e,"P",{"data-svelte-h":!0}),r(Ye)!=="svelte-12yj5qi"&&(Ye.innerHTML=mi),Nl=o(e),Fe=a(e,"TABLE",{"data-svelte-h":!0}),r(Fe)!=="svelte-cktctq"&&(Fe.innerHTML=fi),Wl=o(e),Qe=a(e,"TABLE",{"data-svelte-h":!0}),r(Qe)!=="svelte-1ce2l4b"&&(Qe.innerHTML=ui),El=o(e),N=a(e,"BLOCKQUOTE",{class:!0,"data-svelte-h":!0}),r(N)!=="svelte-i9bu81"&&(N.innerHTML=di),Al=o(e),u(ze.$$.fragment,e),Vl=o(e),Oe=a(e,"P",{"data-svelte-h":!0}),r(Oe)!=="svelte-15wfbkg"&&(Oe.innerHTML=$i),Xl=o(e),u(De.$$.fragment,e),Yl=o(e),qe=a(e,"P",{"data-svelte-h":!0}),r(qe)!=="svelte-1nfhg37"&&(qe.textContent=hi),Fl=o(e),Ke=a(e,"P",{"data-svelte-h":!0}),r(Ke)!=="svelte-1yil1pb"&&(Ke.innerHTML=bi),Ql=o(e),et=a(e,"P",{"data-svelte-h":!0}),r(et)!=="svelte-1wt46f4"&&(et.textContent=yi),zl=o(e),u(tt.$$.fragment,e),Ol=o(e),lt=a(e,"P",{"data-svelte-h":!0}),r(lt)!=="svelte-1qc22uu"&&(lt.textContent=ci),Dl=o(e),u(nt.$$.fragment,e),ql=o(e),it=a(e,"P",{"data-svelte-h":!0}),r(it)!=="svelte-zf7i82"&&(it.innerHTML=wi),Kl=o(e),u(ot.$$.fragment,e),en=o(e),u(st.$$.fragment,e),tn=o(e),at=a(e,"P",{"data-svelte-h":!0}),r(at)!=="svelte-1iv45hs"&&(at.innerHTML=gi),ln=o(e),u(rt.$$.fragment,e),nn=o(e),pt=a(e,"P",{"data-svelte-h":!0}),r(pt)!=="svelte-16ex640"&&(pt.innerHTML=Mi),on=o(e),mt=a(e,"P",{"data-svelte-h":!0}),r(mt)!=="svelte-12sit8s"&&(mt.innerHTML=vi),sn=o(e),u(ft.$$.fragment,e),an=o(e),ut=a(e,"P",{"data-svelte-h":!0}),r(ut)!=="svelte-53ok25"&&(ut.textContent=Ti),rn=o(e),dt=a(e,"P",{"data-svelte-h":!0}),r(dt)!=="svelte-g5y8pt"&&(dt.textContent=Ci),pn=o(e),$t=a(e,"P",{"data-svelte-h":!0}),r($t)!=="svelte-1gvnhwt"&&($t.textContent=xi),mn=o(e),ht=a(e,"P",{"data-svelte-h":!0}),r(ht)!=="svelte-1rzn05f"&&(ht.innerHTML=Ui),fn=o(e),u(bt.$$.fragment,e),un=o(e),yt=a(e,"UL",{"data-svelte-h":!0}),r(yt)!=="svelte-1d8rggu"&&(yt.innerHTML=Ji),dn=o(e),u(ct.$$.fragment,e),$n=o(e),wt=a(e,"P",{"data-svelte-h":!0}),r(wt)!=="svelte-16e0tam"&&(wt.innerHTML=ki),hn=o(e),u(gt.$$.fragment,e),bn=o(e),Mt=a(e,"P",{"data-svelte-h":!0}),r(Mt)!=="svelte-16j2h3d"&&(Mt.innerHTML=Li),yn=o(e),u(vt.$$.fragment,e),cn=o(e),Tt=a(e,"P",{"data-svelte-h":!0}),r(Tt)!=="svelte-2u91ry"&&(Tt.innerHTML=_i),wn=o(e),u(Ct.$$.fragment,e),gn=o(e),W=a(e,"BLOCKQUOTE",{class:!0,"data-svelte-h":!0}),r(W)!=="svelte-so5vtc"&&(W.innerHTML=Ii),Mn=o(e),u(xt.$$.fragment,e),vn=o(e),Lt=a(e,"P",{}),Cn(Lt).forEach(l),this.h()},h(){S(p,"name","hf:doc:metadata"),S(p,"content",Qi),Hi(Z.src,Fn="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/lerobot/motor_ids.webp")||S(Z,"src",Fn),S(Z,"alt","Motor ID's for mobile robot"),S(Z,"title","Motor ID's for mobile robot"),S(Z,"width","60%"),S(P,"class","tip"),S(N,"class","tip"),S(W,"class","tip")},m(e,t){kt(document.head,p),n(e,v,t),n(e,y,t),n(e,g,t),d(m,e,t),n(e,c,t),d(U,e,t),n(e,x,t),n(e,M,t),n(e,L,t),d(I,e,t),n(e,j,t),n(e,w,t),n(e,It,t),d(E,e,t),n(e,jt,t),n(e,A,t),n(e,Zt,t),d(V,e,t),n(e,Ht,t),n(e,X,t),n(e,Rt,t),d(Y,e,t),n(e,St,t),n(e,F,t),n(e,Gt,t),d(Q,e,t),n(e,Bt,t),n(e,z,t),n(e,Pt,t),d(O,e,t),n(e,Nt,t),n(e,D,t),n(e,Wt,t),n(e,q,t),n(e,Et,t),d(K,e,t),n(e,At,t),d(ee,e,t),n(e,Vt,t),n(e,te,t),n(e,Xt,t),n(e,le,t),n(e,Yt,t),n(e,ne,t),n(e,Ft,t),d(ie,e,t),n(e,Qt,t),n(e,oe,t),n(e,zt,t),d(se,e,t),n(e,Ot,t),n(e,ae,t),n(e,Dt,t),n(e,re,t),n(e,qt,t),d(pe,e,t),n(e,Kt,t),n(e,me,t),n(e,el,t),d(fe,e,t),n(e,tl,t),d(G,e,t),n(e,ll,t),d(ue,e,t),n(e,nl,t),n(e,de,t),n(e,il,t),n(e,$e,t),n(e,ol,t),d(he,e,t),n(e,sl,t),n(e,Z,t),n(e,al,t),d(be,e,t),n(e,rl,t),n(e,ye,t),n(e,pl,t),d(ce,e,t),n(e,ml,t),n(e,we,t),n(e,fl,t),d(ge,e,t),n(e,ul,t),d(Me,e,t),n(e,dl,t),n(e,ve,t),n(e,$l,t),d(Te,e,t),n(e,hl,t),n(e,Ce,t),n(e,bl,t),n(e,xe,t),n(e,yl,t),d(Ue,e,t),n(e,cl,t),n(e,Je,t),n(e,wl,t),d(ke,e,t),n(e,gl,t),n(e,Le,t),n(e,Ml,t),n(e,Ut,t),kt(Ut,H),kt(H,Jn),d(_e,H,null),kt(H,kn),kt(H,Jt),kt(H,Ln),n(e,vl,t),d(Ie,e,t),n(e,Tl,t),n(e,je,t),n(e,Cl,t),d(Ze,e,t),n(e,xl,t),n(e,He,t),n(e,Ul,t),d(Re,e,t),n(e,Jl,t),n(e,Se,t),n(e,kl,t),d(Ge,e,t),n(e,Ll,t),n(e,Be,t),n(e,_l,t),d(Pe,e,t),n(e,Il,t),n(e,Ne,t),n(e,jl,t),d(B,e,t),n(e,Zl,t),d(We,e,t),n(e,Hl,t),n(e,P,t),n(e,Rl,t),n(e,Ee,t),n(e,Sl,t),d(Ae,e,t),n(e,Gl,t),n(e,Ve,t),n(e,Bl,t),d(Xe,e,t),n(e,Pl,t),n(e,Ye,t),n(e,Nl,t),n(e,Fe,t),n(e,Wl,t),n(e,Qe,t),n(e,El,t),n(e,N,t),n(e,Al,t),d(ze,e,t),n(e,Vl,t),n(e,Oe,t),n(e,Xl,t),d(De,e,t),n(e,Yl,t),n(e,qe,t),n(e,Fl,t),n(e,Ke,t),n(e,Ql,t),n(e,et,t),n(e,zl,t),d(tt,e,t),n(e,Ol,t),n(e,lt,t),n(e,Dl,t),d(nt,e,t),n(e,ql,t),n(e,it,t),n(e,Kl,t),d(ot,e,t),n(e,en,t),d(st,e,t),n(e,tn,t),n(e,at,t),n(e,ln,t),d(rt,e,t),n(e,nn,t),n(e,pt,t),n(e,on,t),n(e,mt,t),n(e,sn,t),d(ft,e,t),n(e,an,t),n(e,ut,t),n(e,rn,t),n(e,dt,t),n(e,pn,t),n(e,$t,t),n(e,mn,t),n(e,ht,t),n(e,fn,t),d(bt,e,t),n(e,un,t),n(e,yt,t),n(e,dn,t),d(ct,e,t),n(e,$n,t),n(e,wt,t),n(e,hn,t),d(gt,e,t),n(e,bn,t),n(e,Mt,t),n(e,yn,t),d(vt,e,t),n(e,cn,t),n(e,Tt,t),n(e,wn,t),d(Ct,e,t),n(e,gn,t),n(e,W,t),n(e,Mn,t),d(xt,e,t),n(e,vn,t),n(e,Lt,t),Tn=!0},p(e,[t]){const _t={};t&2&&(_t.$$scope={dirty:t,ctx:e}),G.$set(_t);const R={};t&2&&(R.$$scope={dirty:t,ctx:e}),B.$set(R)},i(e){Tn||($(m.$$.fragment,e),$(U.$$.fragment,e),$(I.$$.fragment,e),$(E.$$.fragment,e),$(V.$$.fragment,e),$(Y.$$.fragment,e),$(Q.$$.fragment,e),$(O.$$.fragment,e),$(K.$$.fragment,e),$(ee.$$.fragment,e),$(ie.$$.fragment,e),$(se.$$.fragment,e),$(pe.$$.fragment,e),$(fe.$$.fragment,e),$(G.$$.fragment,e),$(ue.$$.fragment,e),$(he.$$.fragment,e),$(be.$$.fragment,e),$(ce.$$.fragment,e),$(ge.$$.fragment,e),$(Me.$$.fragment,e),$(Te.$$.fragment,e),$(Ue.$$.fragment,e),$(ke.$$.fragment,e),$(_e.$$.fragment,e),$(Ie.$$.fragment,e),$(Ze.$$.fragment,e),$(Re.$$.fragment,e),$(Ge.$$.fragment,e),$(Pe.$$.fragment,e),$(B.$$.fragment,e),$(We.$$.fragment,e),$(Ae.$$.fragment,e),$(Xe.$$.fragment,e),$(ze.$$.fragment,e),$(De.$$.fragment,e),$(tt.$$.fragment,e),$(nt.$$.fragment,e),$(ot.$$.fragment,e),$(st.$$.fragment,e),$(rt.$$.fragment,e),$(ft.$$.fragment,e),$(bt.$$.fragment,e),$(ct.$$.fragment,e),$(gt.$$.fragment,e),$(vt.$$.fragment,e),$(Ct.$$.fragment,e),$(xt.$$.fragment,e),Tn=!0)},o(e){h(m.$$.fragment,e),h(U.$$.fragment,e),h(I.$$.fragment,e),h(E.$$.fragment,e),h(V.$$.fragment,e),h(Y.$$.fragment,e),h(Q.$$.fragment,e),h(O.$$.fragment,e),h(K.$$.fragment,e),h(ee.$$.fragment,e),h(ie.$$.fragment,e),h(se.$$.fragment,e),h(pe.$$.fragment,e),h(fe.$$.fragment,e),h(G.$$.fragment,e),h(ue.$$.fragment,e),h(he.$$.fragment,e),h(be.$$.fragment,e),h(ce.$$.fragment,e),h(ge.$$.fragment,e),h(Me.$$.fragment,e),h(Te.$$.fragment,e),h(Ue.$$.fragment,e),h(ke.$$.fragment,e),h(_e.$$.fragment,e),h(Ie.$$.fragment,e),h(Ze.$$.fragment,e),h(Re.$$.fragment,e),h(Ge.$$.fragment,e),h(Pe.$$.fragment,e),h(B.$$.fragment,e),h(We.$$.fragment,e),h(Ae.$$.fragment,e),h(Xe.$$.fragment,e),h(ze.$$.fragment,e),h(De.$$.fragment,e),h(tt.$$.fragment,e),h(nt.$$.fragment,e),h(ot.$$.fragment,e),h(st.$$.fragment,e),h(rt.$$.fragment,e),h(ft.$$.fragment,e),h(bt.$$.fragment,e),h(ct.$$.fragment,e),h(gt.$$.fragment,e),h(vt.$$.fragment,e),h(Ct.$$.fragment,e),h(xt.$$.fragment,e),Tn=!1},d(e){e&&(l(v),l(y),l(g),l(c),l(x),l(M),l(L),l(j),l(w),l(It),l(jt),l(A),l(Zt),l(Ht),l(X),l(Rt),l(St),l(F),l(Gt),l(Bt),l(z),l(Pt),l(Nt),l(D),l(Wt),l(q),l(Et),l(At),l(Vt),l(te),l(Xt),l(le),l(Yt),l(ne),l(Ft),l(Qt),l(oe),l(zt),l(Ot),l(ae),l(Dt),l(re),l(qt),l(Kt),l(me),l(el),l(tl),l(ll),l(nl),l(de),l(il),l($e),l(ol),l(sl),l(Z),l(al),l(rl),l(ye),l(pl),l(ml),l(we),l(fl),l(ul),l(dl),l(ve),l($l),l(hl),l(Ce),l(bl),l(xe),l(yl),l(cl),l(Je),l(wl),l(gl),l(Le),l(Ml),l(Ut),l(vl),l(Tl),l(je),l(Cl),l(xl),l(He),l(Ul),l(Jl),l(Se),l(kl),l(Ll),l(Be),l(_l),l(Il),l(Ne),l(jl),l(Zl),l(Hl),l(P),l(Rl),l(Ee),l(Sl),l(Gl),l(Ve),l(Bl),l(Pl),l(Ye),l(Nl),l(Fe),l(Wl),l(Qe),l(El),l(N),l(Al),l(Vl),l(Oe),l(Xl),l(Yl),l(qe),l(Fl),l(Ke),l(Ql),l(et),l(zl),l(Ol),l(lt),l(Dl),l(ql),l(it),l(Kl),l(en),l(tn),l(at),l(ln),l(nn),l(pt),l(on),l(mt),l(sn),l(an),l(ut),l(rn),l(dt),l(pn),l($t),l(mn),l(ht),l(fn),l(un),l(yt),l(dn),l($n),l(wt),l(hn),l(bn),l(Mt),l(yn),l(cn),l(Tt),l(wn),l(gn),l(W),l(Mn),l(vn),l(Lt)),l(p),b(m,e),b(U,e),b(I,e),b(E,e),b(V,e),b(Y,e),b(Q,e),b(O,e),b(K,e),b(ee,e),b(ie,e),b(se,e),b(pe,e),b(fe,e),b(G,e),b(ue,e),b(he,e),b(be,e),b(ce,e),b(ge,e),b(Me,e),b(Te,e),b(Ue,e),b(ke,e),b(_e),b(Ie,e),b(Ze,e),b(Re,e),b(Ge,e),b(Pe,e),b(B,e),b(We,e),b(Ae,e),b(Xe,e),b(ze,e),b(De,e),b(tt,e),b(nt,e),b(ot,e),b(st,e),b(rt,e),b(ft,e),b(bt,e),b(ct,e),b(gt,e),b(vt,e),b(Ct,e),b(xt,e)}}}const Qi='{"title":"LeKiwi","local":"lekiwi","sections":[{"title":"Source the parts","local":"source-the-parts","sections":[{"title":"Wired version","local":"wired-version","sections":[],"depth":3}],"depth":2},{"title":"Install software on Pi","local":"install-software-on-pi","sections":[{"title":"Install OS","local":"install-os","sections":[],"depth":3},{"title":"Setup SSH","local":"setup-ssh","sections":[],"depth":3},{"title":"Install LeRobot on Pi 🤗","local":"install-lerobot-on-pi-","sections":[],"depth":3}],"depth":2},{"title":"Install LeRobot locally","local":"install-lerobot-locally","sections":[],"depth":2}],"depth":1}';function zi(J){return Ri(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class lo extends Si{constructor(p){super(),Gi(this,p,zi,Fi,Zi,{})}}export{lo as component};
