import{s as bo,o as Mo,n as B}from"../chunks/scheduler.eb244325.js";import{S as yo,i as go,e as b,s as a,c as u,h as vo,a as M,d as s,b as m,f as wo,g as $,j as y,k as j,u as vl,l as To,m as i,n as h,t as d,o as c,p as w}from"../chunks/index.3fe63ad3.js";import{C as Jo}from"../chunks/CopyLLMTxtMenu.88bde5f2.js";import{C as _}from"../chunks/CodeBlock.934d290d.js";import{H as U,E as xo}from"../chunks/MermaidChart.svelte_svelte_type_style_lang.341974a5.js";import{H as et,a as G}from"../chunks/HfOption.0914e9f3.js";function Uo(v){let l,p="Example output:",o,f,n,r,g="Where the found port is: <code>/dev/tty.usbmodem575E0032081</code> corresponding to your leader or follower arm.",x;return f=new _({props:{code:"RmluZGluZyUyMGFsbCUyMGF2YWlsYWJsZSUyMHBvcnRzJTIwZm9yJTIwdGhlJTIwTW90b3JCdXMuJTBBJTVCJyUyRmRldiUyRnR0eS51c2Jtb2RlbTU3NUUwMDMyMDgxJyUyQyUyMCclMkZkZXYlMkZ0dHkudXNibW9kZW01NzVFMDAzMTc1MSclNUQlMEFSZW1vdmUlMjB0aGUlMjBVU0IlMjBjYWJsZSUyMGZyb20lMjB5b3VyJTIwTW90b3JzQnVzJTIwYW5kJTIwcHJlc3MlMjBFbnRlciUyMHdoZW4lMjBkb25lLiUwQSUwQSU1Qi4uLkRpc2Nvbm5lY3QlMjBjb3JyZXNwb25kaW5nJTIwbGVhZGVyJTIwb3IlMjBmb2xsb3dlciUyMGFybSUyMGFuZCUyMHByZXNzJTIwRW50ZXIuLi4lNUQlMEElMEFUaGUlMjBwb3J0JTIwb2YlMjB0aGlzJTIwTW90b3JzQnVzJTIwaXMlMjAlMkZkZXYlMkZ0dHkudXNibW9kZW01NzVFMDAzMjA4MSUwQVJlY29ubmVjdCUyMHRoZSUyMFVTQiUyMGNhYmxlLg==",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-string">&#x27;/dev/tty.usbmodem575E0031751&#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(){l=b("p"),l.textContent=p,o=a(),u(f.$$.fragment),n=a(),r=b("p"),r.innerHTML=g},l(T){l=M(T,"P",{"data-svelte-h":!0}),y(l)!=="svelte-c9hbnf"&&(l.textContent=p),o=m(T),$(f.$$.fragment,T),n=m(T),r=M(T,"P",{"data-svelte-h":!0}),y(r)!=="svelte-cknsqd"&&(r.innerHTML=g)},m(T,I){i(T,l,I),i(T,o,I),h(f,T,I),i(T,n,I),i(T,r,I),x=!0},p:B,i(T){x||(d(f.$$.fragment,T),x=!0)},o(T){c(f.$$.fragment,T),x=!1},d(T){T&&(s(l),s(o),s(n),s(r)),w(f,T)}}}function Co(v){let l,p="On Linux, you might need to give access to the USB ports by running:",o,f,n,r,g="Example output:",x,T,I,Z,R="Where the found port is: <code>/dev/ttyACM1</code> corresponding to your leader or follower arm.",Y;return f=new _({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}}),T=new _({props:{code:"RmluZGluZyUyMGFsbCUyMGF2YWlsYWJsZSUyMHBvcnRzJTIwZm9yJTIwdGhlJTIwTW90b3JCdXMuJTBBJTVCJyUyRmRldiUyRnR0eUFDTTAnJTJDJTIwJyUyRmRldiUyRnR0eUFDTTEnJTVEJTBBUmVtb3ZlJTIwdGhlJTIwdXNiJTIwY2FibGUlMjBmcm9tJTIweW91ciUyME1vdG9yc0J1cyUyMGFuZCUyMHByZXNzJTIwRW50ZXIlMjB3aGVuJTIwZG9uZS4lMEElMEElNUIuLi5EaXNjb25uZWN0JTIwY29ycmVzcG9uZGluZyUyMGxlYWRlciUyMG9yJTIwZm9sbG93ZXIlMjBhcm0lMjBhbmQlMjBwcmVzcyUyMEVudGVyLi4uJTVEJTBBJTBBVGhlJTIwcG9ydCUyMG9mJTIwdGhpcyUyME1vdG9yc0J1cyUyMGlzJTIwJTJGZGV2JTJGdHR5QUNNMSUwQVJlY29ubmVjdCUyMHRoZSUyMFVTQiUyMGNhYmxlLg==",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-string">&#x27;/dev/ttyACM1&#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/ttyACM1
<span class="hljs-symbol">Reconnect</span> the <span class="hljs-symbol">USB</span> cable.`,wrap:!1}}),{c(){l=b("p"),l.textContent=p,o=a(),u(f.$$.fragment),n=a(),r=b("p"),r.textContent=g,x=a(),u(T.$$.fragment),I=a(),Z=b("p"),Z.innerHTML=R},l(J){l=M(J,"P",{"data-svelte-h":!0}),y(l)!=="svelte-q7p48l"&&(l.textContent=p),o=m(J),$(f.$$.fragment,J),n=m(J),r=M(J,"P",{"data-svelte-h":!0}),y(r)!=="svelte-c9hbnf"&&(r.textContent=g),x=m(J),$(T.$$.fragment,J),I=m(J),Z=M(J,"P",{"data-svelte-h":!0}),y(Z)!=="svelte-bj510z"&&(Z.innerHTML=R)},m(J,C){i(J,l,C),i(J,o,C),h(f,J,C),i(J,n,C),i(J,r,C),i(J,x,C),h(T,J,C),i(J,I,C),i(J,Z,C),Y=!0},p:B,i(J){Y||(d(f.$$.fragment,J),d(T.$$.fragment,J),Y=!0)},o(J){c(f.$$.fragment,J),c(T.$$.fragment,J),Y=!1},d(J){J&&(s(l),s(o),s(n),s(r),s(x),s(I),s(Z)),w(f,J),w(T,J)}}}function _o(v){let l,p,o,f;return l=new G({props:{id:"example",option:"Mac",$$slots:{default:[Uo]},$$scope:{ctx:v}}}),o=new G({props:{id:"example",option:"Linux",$$slots:{default:[Co]},$$scope:{ctx:v}}}),{c(){u(l.$$.fragment),p=a(),u(o.$$.fragment)},l(n){$(l.$$.fragment,n),p=m(n),$(o.$$.fragment,n)},m(n,r){h(l,n,r),i(n,p,r),h(o,n,r),f=!0},p(n,r){const g={};r&2&&(g.$$scope={dirty:r,ctx:n}),l.$set(g);const x={};r&2&&(x.$$scope={dirty:r,ctx:n}),o.$set(x)},i(n){f||(d(l.$$.fragment,n),d(o.$$.fragment,n),f=!0)},o(n){c(l.$$.fragment,n),c(o.$$.fragment,n),f=!1},d(n){n&&s(p),w(l,n),w(o,n)}}}function Io(v){let l,p;return l=new _({props:{code:"bGVyb2JvdC1zZXR1cC1tb3RvcnMlMjAlNUMlMEElMjAlMjAlMjAlMjAtLXJvYm90LnR5cGUlM0RzbzEwMV9mb2xsb3dlciUyMCU1QyUwQSUyMCUyMCUyMCUyMC0tcm9ib3QucG9ydCUzRCUyRmRldiUyRnR0eS51c2Jtb2RlbTU4NUEwMDc2ODQxJTIwJTIwJTIzJTIwJTNDLSUyMHBhc3RlJTIwaGVyZSUyMHRoZSUyMHBvcnQlMjBmb3VuZCUyMGF0JTIwcHJldmlvdXMlMjBzdGVw",highlighted:`lerobot-setup-motors \\
    --robot.type=so101_follower \\
    --robot.port=/dev/tty.usbmodem585A0076841  <span class="hljs-comment"># &lt;- paste here the port found at previous step</span>`,wrap:!1}}),{c(){u(l.$$.fragment)},l(o){$(l.$$.fragment,o)},m(o,f){h(l,o,f),p=!0},p:B,i(o){p||(d(l.$$.fragment,o),p=!0)},o(o){c(l.$$.fragment,o),p=!1},d(o){w(l,o)}}}function jo(v){let l,p;return l=new _({props:{code:"ZnJvbSUyMGxlcm9ib3Qucm9ib3RzLnNvX2ZvbGxvd2VyJTIwaW1wb3J0JTIwU08xMDFGb2xsb3dlciUyQyUyMFNPMTAxRm9sbG93ZXJDb25maWclMEElMEFjb25maWclMjAlM0QlMjBTTzEwMUZvbGxvd2VyQ29uZmlnKCUwQSUyMCUyMCUyMCUyMHBvcnQlM0QlMjIlMkZkZXYlMkZ0dHkudXNibW9kZW01ODVBMDA3Njg0MSUyMiUyQyUwQSUyMCUyMCUyMCUyMGlkJTNEJTIybXlfYXdlc29tZV9mb2xsb3dlcl9hcm0lMjIlMkMlMEEpJTBBZm9sbG93ZXIlMjAlM0QlMjBTTzEwMUZvbGxvd2VyKGNvbmZpZyklMEFmb2xsb3dlci5zZXR1cF9tb3RvcnMoKQ==",highlighted:`<span class="hljs-keyword">from</span> lerobot.robots.so_follower <span class="hljs-keyword">import</span> SO101Follower, SO101FollowerConfig

config = SO101FollowerConfig(
    port=<span class="hljs-string">&quot;/dev/tty.usbmodem585A0076841&quot;</span>,
    <span class="hljs-built_in">id</span>=<span class="hljs-string">&quot;my_awesome_follower_arm&quot;</span>,
)
follower = SO101Follower(config)
follower.setup_motors()`,wrap:!1}}),{c(){u(l.$$.fragment)},l(o){$(l.$$.fragment,o)},m(o,f){h(l,o,f),p=!0},p:B,i(o){p||(d(l.$$.fragment,o),p=!0)},o(o){c(l.$$.fragment,o),p=!1},d(o){w(l,o)}}}function Zo(v){let l,p,o,f;return l=new G({props:{id:"setup_motors",option:"Command",$$slots:{default:[Io]},$$scope:{ctx:v}}}),o=new G({props:{id:"setup_motors",option:"API example",$$slots:{default:[jo]},$$scope:{ctx:v}}}),{c(){u(l.$$.fragment),p=a(),u(o.$$.fragment)},l(n){$(l.$$.fragment,n),p=m(n),$(o.$$.fragment,n)},m(n,r){h(l,n,r),i(n,p,r),h(o,n,r),f=!0},p(n,r){const g={};r&2&&(g.$$scope={dirty:r,ctx:n}),l.$set(g);const x={};r&2&&(x.$$scope={dirty:r,ctx:n}),o.$set(x)},i(n){f||(d(l.$$.fragment,n),d(o.$$.fragment,n),f=!0)},o(n){c(l.$$.fragment,n),c(o.$$.fragment,n),f=!1},d(n){n&&s(p),w(l,n),w(o,n)}}}function Go(v){let l,p;return l=new _({props:{code:"bGVyb2JvdC1zZXR1cC1tb3RvcnMlMjAlNUMlMEElMjAlMjAlMjAlMjAtLXRlbGVvcC50eXBlJTNEc28xMDFfbGVhZGVyJTIwJTVDJTBBJTIwJTIwJTIwJTIwLS10ZWxlb3AucG9ydCUzRCUyRmRldiUyRnR0eS51c2Jtb2RlbTU3NUUwMDMxNzUxJTIwJTIwJTIzJTIwJTNDLSUyMHBhc3RlJTIwaGVyZSUyMHRoZSUyMHBvcnQlMjBmb3VuZCUyMGF0JTIwcHJldmlvdXMlMjBzdGVw",highlighted:`lerobot-setup-motors \\
    --teleop.type=so101_leader \\
    --teleop.port=/dev/tty.usbmodem575E0031751  <span class="hljs-comment"># &lt;- paste here the port found at previous step</span>`,wrap:!1}}),{c(){u(l.$$.fragment)},l(o){$(l.$$.fragment,o)},m(o,f){h(l,o,f),p=!0},p:B,i(o){p||(d(l.$$.fragment,o),p=!0)},o(o){c(l.$$.fragment,o),p=!1},d(o){w(l,o)}}}function Bo(v){let l,p;return l=new _({props:{code:"ZnJvbSUyMGxlcm9ib3QudGVsZW9wZXJhdG9ycy5zb19sZWFkZXIlMjBpbXBvcnQlMjBTTzEwMUxlYWRlciUyQyUyMFNPMTAxTGVhZGVyQ29uZmlnJTBBJTBBY29uZmlnJTIwJTNEJTIwU08xMDFMZWFkZXJDb25maWcoJTBBJTIwJTIwJTIwJTIwcG9ydCUzRCUyMiUyRmRldiUyRnR0eS51c2Jtb2RlbTU4NUEwMDc2ODQxJTIyJTJDJTBBJTIwJTIwJTIwJTIwaWQlM0QlMjJteV9hd2Vzb21lX2xlYWRlcl9hcm0lMjIlMkMlMEEpJTBBbGVhZGVyJTIwJTNEJTIwU08xMDFMZWFkZXIoY29uZmlnKSUwQWxlYWRlci5zZXR1cF9tb3RvcnMoKQ==",highlighted:`<span class="hljs-keyword">from</span> lerobot.teleoperators.so_leader <span class="hljs-keyword">import</span> SO101Leader, SO101LeaderConfig

config = SO101LeaderConfig(
    port=<span class="hljs-string">&quot;/dev/tty.usbmodem585A0076841&quot;</span>,
    <span class="hljs-built_in">id</span>=<span class="hljs-string">&quot;my_awesome_leader_arm&quot;</span>,
)
leader = SO101Leader(config)
leader.setup_motors()`,wrap:!1}}),{c(){u(l.$$.fragment)},l(o){$(l.$$.fragment,o)},m(o,f){h(l,o,f),p=!0},p:B,i(o){p||(d(l.$$.fragment,o),p=!0)},o(o){c(l.$$.fragment,o),p=!1},d(o){w(l,o)}}}function Ro(v){let l,p,o,f;return l=new G({props:{id:"setup_motors",option:"Command",$$slots:{default:[Go]},$$scope:{ctx:v}}}),o=new G({props:{id:"setup_motors",option:"API example",$$slots:{default:[Bo]},$$scope:{ctx:v}}}),{c(){u(l.$$.fragment),p=a(),u(o.$$.fragment)},l(n){$(l.$$.fragment,n),p=m(n),$(o.$$.fragment,n)},m(n,r){h(l,n,r),i(n,p,r),h(o,n,r),f=!0},p(n,r){const g={};r&2&&(g.$$scope={dirty:r,ctx:n}),l.$set(g);const x={};r&2&&(x.$$scope={dirty:r,ctx:n}),o.$set(x)},i(n){f||(d(l.$$.fragment,n),d(o.$$.fragment,n),f=!0)},o(n){c(l.$$.fragment,n),c(o.$$.fragment,n),f=!1},d(n){n&&s(p),w(l,n),w(o,n)}}}function So(v){let l,p="<li>Attach the gripper to motor 5, attach it to the motor horn on the wrist using 4 M3x6mm screws.</li> <li>Insert the gripper motor and secure it with 2 M2x6mm screws on each side.</li> <li>Install both motor horns on the gripper motor. Secure the top horn with a M3x6mm screw; no screws are required for the bottom horn.</li> <li>Install the gripper claw and secure it with 4 M3x6mm screws on both sides.</li>",o,f,n='<video controls="" width="600"><source src="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/lerobot/Gripper_v2.mp4" type="video/mp4"/></video>';return{c(){l=b("ul"),l.innerHTML=p,o=a(),f=b("div"),f.innerHTML=n,this.h()},l(r){l=M(r,"UL",{"data-svelte-h":!0}),y(l)!=="svelte-15higiq"&&(l.innerHTML=p),o=m(r),f=M(r,"DIV",{class:!0,"data-svelte-h":!0}),y(f)!=="svelte-1veagf2"&&(f.innerHTML=n),this.h()},h(){j(f,"class","video-container")},m(r,g){i(r,l,g),i(r,o,g),i(r,f,g)},p:B,d(r){r&&(s(l),s(o),s(f))}}}function Lo(v){let l,p="<li>Mount the leader holder onto the wrist and secure it with 4 M3x6mm screws.</li> <li>Attach the handle to motor 5 using 1 M2x6mm screw.</li> <li>Insert the gripper motor, secure it with 2 M2x6mm screws on each side, attach a motor horn using a M3x6mm horn screw.</li> <li>Attach the follower trigger with 4 M3x6mm screws.</li>",o,f,n='<video controls="" width="600"><source src="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/lerobot/Leader_v2.mp4" type="video/mp4"/></video>';return{c(){l=b("ul"),l.innerHTML=p,o=a(),f=b("div"),f.innerHTML=n,this.h()},l(r){l=M(r,"UL",{"data-svelte-h":!0}),y(l)!=="svelte-lj1gu4"&&(l.innerHTML=p),o=m(r),f=M(r,"DIV",{class:!0,"data-svelte-h":!0}),y(f)!=="svelte-1avnc4s"&&(f.innerHTML=n),this.h()},h(){j(f,"class","video-container")},m(r,g){i(r,l,g),i(r,o,g),i(r,f,g)},p:B,d(r){r&&(s(l),s(o),s(f))}}}function ko(v){let l,p,o,f;return l=new G({props:{id:"assembly",option:"Follower",$$slots:{default:[So]},$$scope:{ctx:v}}}),o=new G({props:{id:"assembly",option:"Leader",$$slots:{default:[Lo]},$$scope:{ctx:v}}}),{c(){u(l.$$.fragment),p=a(),u(o.$$.fragment)},l(n){$(l.$$.fragment,n),p=m(n),$(o.$$.fragment,n)},m(n,r){h(l,n,r),i(n,p,r),h(o,n,r),f=!0},p(n,r){const g={};r&2&&(g.$$scope={dirty:r,ctx:n}),l.$set(g);const x={};r&2&&(x.$$scope={dirty:r,ctx:n}),o.$set(x)},i(n){f||(d(l.$$.fragment,n),d(o.$$.fragment,n),f=!0)},o(n){c(l.$$.fragment,n),c(o.$$.fragment,n),f=!1},d(n){n&&s(p),w(l,n),w(o,n)}}}function Ho(v){let l,p;return l=new _({props:{code:"bGVyb2JvdC1jYWxpYnJhdGUlMjAlNUMlMEElMjAlMjAlMjAlMjAtLXJvYm90LnR5cGUlM0RzbzEwMV9mb2xsb3dlciUyMCU1QyUwQSUyMCUyMCUyMCUyMC0tcm9ib3QucG9ydCUzRCUyRmRldiUyRnR0eS51c2Jtb2RlbTU4NzYwNDMxNTUxJTIwJTVDJTIwJTIzJTIwJTNDLSUyMFRoZSUyMHBvcnQlMjBvZiUyMHlvdXIlMjByb2JvdCUwQSUyMCUyMCUyMCUyMC0tcm9ib3QuaWQlM0RteV9hd2Vzb21lX2ZvbGxvd2VyX2FybSUyMCUyMyUyMCUzQy0lMjBHaXZlJTIwdGhlJTIwcm9ib3QlMjBhJTIwdW5pcXVlJTIwbmFtZQ==",highlighted:`lerobot-calibrate \\
    --robot.type=so101_follower \\
    --robot.port=/dev/tty.usbmodem58760431551 \\ <span class="hljs-comment"># &lt;- The port of your robot</span>
    --robot.id=my_awesome_follower_arm <span class="hljs-comment"># &lt;- Give the robot a unique name</span>`,wrap:!1}}),{c(){u(l.$$.fragment)},l(o){$(l.$$.fragment,o)},m(o,f){h(l,o,f),p=!0},p:B,i(o){p||(d(l.$$.fragment,o),p=!0)},o(o){c(l.$$.fragment,o),p=!1},d(o){w(l,o)}}}function Vo(v){let l,p;return l=new _({props:{code:"ZnJvbSUyMGxlcm9ib3Qucm9ib3RzLnNvX2ZvbGxvd2VyJTIwaW1wb3J0JTIwU08xMDFGb2xsb3dlckNvbmZpZyUyQyUyMFNPMTAxRm9sbG93ZXIlMEElMEFjb25maWclMjAlM0QlMjBTTzEwMUZvbGxvd2VyQ29uZmlnKCUwQSUyMCUyMCUyMCUyMHBvcnQlM0QlMjIlMkZkZXYlMkZ0dHkudXNibW9kZW01ODVBMDA3Njg5MSUyMiUyQyUwQSUyMCUyMCUyMCUyMGlkJTNEJTIybXlfYXdlc29tZV9mb2xsb3dlcl9hcm0lMjIlMkMlMEEpJTBBJTBBZm9sbG93ZXIlMjAlM0QlMjBTTzEwMUZvbGxvd2VyKGNvbmZpZyklMEFmb2xsb3dlci5jb25uZWN0KGNhbGlicmF0ZSUzREZhbHNlKSUwQWZvbGxvd2VyLmNhbGlicmF0ZSgpJTBBZm9sbG93ZXIuZGlzY29ubmVjdCgp",highlighted:`<span class="hljs-keyword">from</span> lerobot.robots.so_follower <span class="hljs-keyword">import</span> SO101FollowerConfig, SO101Follower

config = SO101FollowerConfig(
    port=<span class="hljs-string">&quot;/dev/tty.usbmodem585A0076891&quot;</span>,
    <span class="hljs-built_in">id</span>=<span class="hljs-string">&quot;my_awesome_follower_arm&quot;</span>,
)

follower = SO101Follower(config)
follower.connect(calibrate=<span class="hljs-literal">False</span>)
follower.calibrate()
follower.disconnect()`,wrap:!1}}),{c(){u(l.$$.fragment)},l(o){$(l.$$.fragment,o)},m(o,f){h(l,o,f),p=!0},p:B,i(o){p||(d(l.$$.fragment,o),p=!0)},o(o){c(l.$$.fragment,o),p=!1},d(o){w(l,o)}}}function Eo(v){let l,p,o,f;return l=new G({props:{id:"calibrate_follower",option:"Command",$$slots:{default:[Ho]},$$scope:{ctx:v}}}),o=new G({props:{id:"calibrate_follower",option:"API example",$$slots:{default:[Vo]},$$scope:{ctx:v}}}),{c(){u(l.$$.fragment),p=a(),u(o.$$.fragment)},l(n){$(l.$$.fragment,n),p=m(n),$(o.$$.fragment,n)},m(n,r){h(l,n,r),i(n,p,r),h(o,n,r),f=!0},p(n,r){const g={};r&2&&(g.$$scope={dirty:r,ctx:n}),l.$set(g);const x={};r&2&&(x.$$scope={dirty:r,ctx:n}),o.$set(x)},i(n){f||(d(l.$$.fragment,n),d(o.$$.fragment,n),f=!0)},o(n){c(l.$$.fragment,n),c(o.$$.fragment,n),f=!1},d(n){n&&s(p),w(l,n),w(o,n)}}}function No(v){let l,p;return l=new _({props:{code:"bGVyb2JvdC1jYWxpYnJhdGUlMjAlNUMlMEElMjAlMjAlMjAlMjAtLXRlbGVvcC50eXBlJTNEc28xMDFfbGVhZGVyJTIwJTVDJTBBJTIwJTIwJTIwJTIwLS10ZWxlb3AucG9ydCUzRCUyRmRldiUyRnR0eS51c2Jtb2RlbTU4NzYwNDMxNTUxJTIwJTVDJTIwJTIzJTIwJTNDLSUyMFRoZSUyMHBvcnQlMjBvZiUyMHlvdXIlMjByb2JvdCUwQSUyMCUyMCUyMCUyMC0tdGVsZW9wLmlkJTNEbXlfYXdlc29tZV9sZWFkZXJfYXJtJTIwJTIzJTIwJTNDLSUyMEdpdmUlMjB0aGUlMjByb2JvdCUyMGElMjB1bmlxdWUlMjBuYW1l",highlighted:`lerobot-calibrate \\
    --teleop.type=so101_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(){u(l.$$.fragment)},l(o){$(l.$$.fragment,o)},m(o,f){h(l,o,f),p=!0},p:B,i(o){p||(d(l.$$.fragment,o),p=!0)},o(o){c(l.$$.fragment,o),p=!1},d(o){w(l,o)}}}function Fo(v){let l,p;return l=new _({props:{code:"ZnJvbSUyMGxlcm9ib3QudGVsZW9wZXJhdG9ycy5zb19sZWFkZXIlMjBpbXBvcnQlMjBTTzEwMUxlYWRlckNvbmZpZyUyQyUyMFNPMTAxTGVhZGVyJTBBJTBBY29uZmlnJTIwJTNEJTIwU08xMDFMZWFkZXJDb25maWcoJTBBJTIwJTIwJTIwJTIwcG9ydCUzRCUyMiUyRmRldiUyRnR0eS51c2Jtb2RlbTU4NzYwNDMxNTUxJTIyJTJDJTBBJTIwJTIwJTIwJTIwaWQlM0QlMjJteV9hd2Vzb21lX2xlYWRlcl9hcm0lMjIlMkMlMEEpJTBBJTBBbGVhZGVyJTIwJTNEJTIwU08xMDFMZWFkZXIoY29uZmlnKSUwQWxlYWRlci5jb25uZWN0KGNhbGlicmF0ZSUzREZhbHNlKSUwQWxlYWRlci5jYWxpYnJhdGUoKSUwQWxlYWRlci5kaXNjb25uZWN0KCk=",highlighted:`<span class="hljs-keyword">from</span> lerobot.teleoperators.so_leader <span class="hljs-keyword">import</span> SO101LeaderConfig, SO101Leader

config = SO101LeaderConfig(
    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 = SO101Leader(config)
leader.connect(calibrate=<span class="hljs-literal">False</span>)
leader.calibrate()
leader.disconnect()`,wrap:!1}}),{c(){u(l.$$.fragment)},l(o){$(l.$$.fragment,o)},m(o,f){h(l,o,f),p=!0},p:B,i(o){p||(d(l.$$.fragment,o),p=!0)},o(o){c(l.$$.fragment,o),p=!1},d(o){w(l,o)}}}function Wo(v){let l,p,o,f;return l=new G({props:{id:"calibrate_leader",option:"Command",$$slots:{default:[No]},$$scope:{ctx:v}}}),o=new G({props:{id:"calibrate_leader",option:"API example",$$slots:{default:[Fo]},$$scope:{ctx:v}}}),{c(){u(l.$$.fragment),p=a(),u(o.$$.fragment)},l(n){$(l.$$.fragment,n),p=m(n),$(o.$$.fragment,n)},m(n,r){h(l,n,r),i(n,p,r),h(o,n,r),f=!0},p(n,r){const g={};r&2&&(g.$$scope={dirty:r,ctx:n}),l.$set(g);const x={};r&2&&(x.$$scope={dirty:r,ctx:n}),o.$set(x)},i(n){f||(d(l.$$.fragment,n),d(o.$$.fragment,n),f=!0)},o(n){c(l.$$.fragment,n),c(o.$$.fragment,n),f=!1},d(n){n&&s(p),w(l,n),w(o,n)}}}function Qo(v){let l,p,o,f,n,r,g,x,T,I='<img src="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/lerobot/SO101_Follower.webp" alt="SO-101" width="60%"/> <img src="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/lerobot/SO101_Leader.webp" alt="SO-101" width="60%"/>',Z,R,Y="In the steps below, we explain how to assemble our flagship robot, the SO-101.",J,C,lt,q,Tl=`Follow this <a href="https://github.com/TheRobotStudio/SO-ARM100" 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.`,ot,O,st,K,Jl='To install LeRobot, follow our <a href="./installation">Installation Guide</a>',nt,ee,xl="In addition to these instructions, you need to install the Feetech SDK:",it,te,rt,le,at,oe,Ul="The follower arm uses 6x STS3215 motors with 1/345 gearing. The leader, however, uses three differently geared motors to make sure it can both sustain its own weight and it can be moved without requiring much force. Which motor is needed for which joint is shown in the table below.",mt,se,Cl='<thead><tr><th>Leader-Arm Axis</th> <th align="center">Motor</th> <th align="center">Gear Ratio</th></tr></thead> <tbody><tr><td>Base / Shoulder Pan</td> <td align="center">1</td> <td align="center">1 / 191</td></tr> <tr><td>Shoulder Lift</td> <td align="center">2</td> <td align="center">1 / 345</td></tr> <tr><td>Elbow Flex</td> <td align="center">3</td> <td align="center">1 / 191</td></tr> <tr><td>Wrist Flex</td> <td align="center">4</td> <td align="center">1 / 147</td></tr> <tr><td>Wrist Roll</td> <td align="center">5</td> <td align="center">1 / 147</td></tr> <tr><td>Gripper</td> <td align="center">6</td> <td align="center">1 / 147</td></tr></tbody>',pt,ne,ft,ie,ut,re,_l="To find the port for each bus servo adapter, connect MotorBus to your computer via USB and power. Run the following script and disconnect the MotorBus when prompted:",$t,ae,ht,S,dt,me,ct,pe,Il="Each motor is identified by a unique id on the bus. When brand new, motors usually come with a default id of <code>1</code>. For the communication to work properly between the motors and the controller, we first need to set a unique, different id to each motor. Additionally, the speed at which data is transmitted on the bus is determined by the baudrate. In order to talk to each other, the controller and all the motors need to be configured with the same baudrate.",wt,fe,jl="To that end, we first need to connect to each motor individually with the controller in order to set these. Since we will write these parameters in the non-volatile section of the motors’ internal memory (EEPROM), we’ll only need to do this once.",bt,ue,Zl="If you are repurposing motors from another robot, you will probably also need to perform this step as the ids and baudrate likely won’t match.",Mt,$e,Gl="The video below shows the sequence of steps for setting the motor ids.",yt,he,gt,L,Bl='<video controls="" width="600"><source src="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/lerobot/setup_motors_so101_2.mp4" type="video/mp4"/></video>',vt,de,Tt,ce,Rl="Connect the usb cable from your computer and the power supply to the follower arm’s controller board. Then, run the following command or run the API example with the port you got from the previous step. You’ll also need to give your leader arm a name with the <code>id</code> parameter.",Jt,k,xt,we,Sl="You should see the following instruction",Ut,be,Ct,Me,Ll="As instructed, plug the gripper’s motor. Make sure it’s the only motor connected to the board, and that the motor itself is not yet daisy-chained to any other motor. As you press <code>[Enter]</code>, the script will automatically set the id and baudrate for that motor.",_t,ye,kl="<summary>Troubleshooting</summary> <p>If you get an error at that point, check your cables and make sure they are plugged in properly:</p> <ul><li>Power supply</li> <li>USB cable between your computer and the controller board</li> <li>The 3-pin cable from the controller board to the motor</li></ul> <p>If you are using a Waveshare controller board, make sure that the two jumpers are set on the <code>B</code> channel (USB).</p>",It,ge,Hl="You should then see the following message:",jt,ve,Zt,Te,Vl="Followed by the next instruction:",Gt,Je,Bt,xe,El="You can disconnect the 3-pin cable from the controller board, but you can leave it connected to the gripper motor on the other end, as it will already be in the right place. Now, plug in another 3-pin cable to the wrist roll motor and connect it to the controller board. As with the previous motor, make sure it is the only motor connected to the board and that the motor itself isn’t connected to any other one.",Rt,Ue,Nl="Repeat the operation for each motor as instructed.",St,H,Fl="<p>Check your cabling at each step before pressing Enter. For instance, the power supply cable might disconnect as you manipulate the board.</p>",Lt,Ce,Wl="When you are done, the script will simply finish, at which point the motors are ready to be used. You can now plug the 3-pin cable from each motor to the next one, and the cable from the first motor (the ‘shoulder pan’ with id=1) to the controller board, which can now be attached to the base of the arm.",kt,_e,Ht,Ie,Ql="Do the same steps for the leader arm.",Vt,V,Et,je,Nt,Ze,Al="Remove all support material from the 3D-printed parts. The easiest way to do this is using a small screwdriver to get underneath the support material.",Ft,Ge,Xl="It is advisable to install one 3-pin cable in the motor after placing them before continuing assembly.",Wt,Be,Qt,Re,zl="<li>Install both motor horns. Secure the top horn with a M3x6mm screw. No screws are required for the bottom horn.</li> <li>Place the first motor into the base.</li> <li>Fasten the motor with 4 M2x6mm screws (smallest screws). Two from the top and two from the bottom.</li> <li>Slide over the first motor holder and fasten it using two M2x6mm screws (one on each side).</li> <li>Attach the shoulder part.</li> <li>Tighten the shoulder part with 4 M3x6mm screws on top and 4 M3x6mm screws on the bottom</li> <li>Add the shoulder motor holder.</li>",At,E,Dl='<video controls="" width="600"><source src="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/lerobot/Joint1_v2.mp4" type="video/mp4"/></video>',Xt,Se,zt,Le,Pl="<li>Install both motor horns. Secure the top horn with a M3x6mm screw. No screws are required for the bottom horn.</li> <li>Slide the second motor in from the top.</li> <li>Fasten the second motor with 4 M2x6mm screws.</li> <li>Attach the upper arm with 4 M3x6mm screws on each side.</li>",Dt,N,Yl='<video controls="" width="600"><source src="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/lerobot/Joint2_v2.mp4" type="video/mp4"/></video>',Pt,ke,Yt,He,ql="<li>Install both motor horns. Secure the top horn with a M3x6mm screw. No screws are required for the bottom horn.</li> <li>Insert motor 3 and fasten using 4 M2x6mm screws.</li> <li>Connect the forearm to motor 3 using 4 M3x6mm screws on each side.</li>",qt,F,Ol='<video controls="" width="600"><source src="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/lerobot/Joint3_v2.mp4" type="video/mp4"/></video>',Ot,Ve,Kt,Ee,Kl="<li>Install both motor horns. Secure the top horn with a M3x6mm screw. No screws are required for the bottom horn.</li> <li>Slide over motor holder 4.</li> <li>Slide in motor 4.</li> <li>Fasten motor 4 with 4 M2x6mm screws.</li>",el,W,eo='<video controls="" width="600"><source src="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/lerobot/Joint4_v2.mp4" type="video/mp4"/></video>',tl,Ne,ll,Fe,to="<li>Insert motor 5 into the wrist holder and secure it with 2 M2x6mm front screws.</li> <li>Install only one motor horn on the wrist motor and secure it with a M3x6mm horn screw.</li> <li>Secure the wrist to motor 4 using 4 M3x6mm screws on both sides.</li>",ol,Q,lo='<video controls="" width="600"><source src="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/lerobot/Joint5_v2.mp4" type="video/mp4"/></video>',sl,We,nl,A,il,Qe,rl,Ae,oo=`Next, you’ll need to calibrate your robot to ensure that the leader and follower arms have the same position values when they are in the same physical position.
The calibration process is very important because it allows a neural network trained on one robot to work on another.`,al,Xe,ml,ze,so="Run the following command or API example to calibrate the follower arm:",pl,X,fl,De,no="The video below shows how to perform the calibration. First you need to move the robot to the position where all joints are in the middle of their ranges. Then after pressing enter you have to move each joint through its full range of motion.",ul,Pe,$l,z,io='<video controls="" width="600"><source src="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/lerobot/calibrate_so101_2.mp4" type="video/mp4"/></video>',hl,Ye,dl,qe,ro="Do the same steps to calibrate the leader arm, run the following command or API example:",cl,D,wl,Oe,ao='Congrats 🎉, your robot is all set to learn a task on its own. Start training it by following this tutorial: <a href="./il_robots">Getting started with real-world robots</a>',bl,P,mo='<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>',Ml,Ke,yl,tt,gl;return n=new Jo({props:{containerStyle:"float: right; margin-left: 10px; display: inline-flex; position: relative; z-index: 10;"}}),g=new U({props:{title:"SO-101",local:"so-101",headingTag:"h1"}}),C=new U({props:{title:"Source the parts",local:"source-the-parts",headingTag:"h2"}}),O=new U({props:{title:"Install LeRobot 🤗",local:"install-lerobot-",headingTag:"h2"}}),te=new _({props:{code:"cGlwJTIwaW5zdGFsbCUyMC1lJTIwJTIyLiU1QmZlZXRlY2glNUQlMjI=",highlighted:'pip install -e <span class="hljs-string">&quot;.[feetech]&quot;</span>',wrap:!1}}),le=new U({props:{title:"Step-by-Step Assembly Instructions",local:"step-by-step-assembly-instructions",headingTag:"h2"}}),ne=new U({props:{title:"Configure the motors",local:"configure-the-motors",headingTag:"h2"}}),ie=new U({props:{title:"1. Find the USB ports associated with each arm",local:"1-find-the-usb-ports-associated-with-each-arm",headingTag:"h3"}}),ae=new _({props:{code:"bGVyb2JvdC1maW5kLXBvcnQ=",highlighted:"lerobot-find-port",wrap:!1}}),S=new et({props:{id:"example",options:["Mac","Linux"],$$slots:{default:[_o]},$$scope:{ctx:v}}}),me=new U({props:{title:"2. Set the motors ids and baudrates",local:"2-set-the-motors-ids-and-baudrates",headingTag:"h3"}}),he=new U({props:{title:"Setup motors video",local:"setup-motors-video",headingTag:"h5"}}),de=new U({props:{title:"Follower",local:"follower",headingTag:"h4"}}),k=new et({props:{id:"setup_motors",options:["Command","API example"],$$slots:{default:[Zo]},$$scope:{ctx:v}}}),be=new _({props:{code:"Q29ubmVjdCUyMHRoZSUyMGNvbnRyb2xsZXIlMjBib2FyZCUyMHRvJTIwdGhlJTIwJ2dyaXBwZXInJTIwbW90b3IlMjBvbmx5JTIwYW5kJTIwcHJlc3MlMjBlbnRlci4=",highlighted:'Connect the controller board to the <span class="hljs-string">&#x27;gripper&#x27;</span> motor only and press enter.',wrap:!1}}),ve=new _({props:{code:"J2dyaXBwZXInJTIwbW90b3IlMjBpZCUyMHNldCUyMHRvJTIwNg==",highlighted:'<span class="hljs-string">&#x27;gripper&#x27;</span> motor <span class="hljs-built_in">id</span> <span class="hljs-built_in">set</span> to 6',wrap:!1}}),Je=new _({props:{code:"Q29ubmVjdCUyMHRoZSUyMGNvbnRyb2xsZXIlMjBib2FyZCUyMHRvJTIwdGhlJTIwJ3dyaXN0X3JvbGwnJTIwbW90b3IlMjBvbmx5JTIwYW5kJTIwcHJlc3MlMjBlbnRlci4=",highlighted:'Connect the controller board to the <span class="hljs-string">&#x27;wrist_roll&#x27;</span> motor only and press enter.',wrap:!1}}),_e=new U({props:{title:"Leader",local:"leader",headingTag:"h4"}}),V=new et({props:{id:"setup_motors",options:["Command","API example"],$$slots:{default:[Ro]},$$scope:{ctx:v}}}),je=new U({props:{title:"Clean Parts",local:"clean-parts",headingTag:"h3"}}),Be=new U({props:{title:"Joint 1",local:"joint-1",headingTag:"h3"}}),Se=new U({props:{title:"Joint 2",local:"joint-2",headingTag:"h3"}}),ke=new U({props:{title:"Joint 3",local:"joint-3",headingTag:"h3"}}),Ve=new U({props:{title:"Joint 4",local:"joint-4",headingTag:"h3"}}),Ne=new U({props:{title:"Joint 5",local:"joint-5",headingTag:"h3"}}),We=new U({props:{title:"Gripper / Handle",local:"gripper--handle",headingTag:"h3"}}),A=new et({props:{id:"assembly",options:["Follower","Leader"],$$slots:{default:[ko]},$$scope:{ctx:v}}}),Qe=new U({props:{title:"Calibrate",local:"calibrate",headingTag:"h2"}}),Xe=new U({props:{title:"Follower",local:"follower",headingTag:"h4"}}),X=new et({props:{id:"calibrate_follower",options:["Command","API example"],$$slots:{default:[Eo]},$$scope:{ctx:v}}}),Pe=new U({props:{title:"Calibration video",local:"calibration-video",headingTag:"h5"}}),Ye=new U({props:{title:"Leader",local:"leader",headingTag:"h4"}}),D=new et({props:{id:"calibrate_leader",options:["Command","API example"],$$slots:{default:[Wo]},$$scope:{ctx:v}}}),Ke=new xo({props:{source:"https://github.com/huggingface/lerobot/blob/main/docs/source/so101.mdx"}}),{c(){l=b("meta"),p=a(),o=b("p"),f=a(),u(n.$$.fragment),r=a(),u(g.$$.fragment),x=a(),T=b("div"),T.innerHTML=I,Z=a(),R=b("p"),R.textContent=Y,J=a(),u(C.$$.fragment),lt=a(),q=b("p"),q.innerHTML=Tl,ot=a(),u(O.$$.fragment),st=a(),K=b("p"),K.innerHTML=Jl,nt=a(),ee=b("p"),ee.textContent=xl,it=a(),u(te.$$.fragment),rt=a(),u(le.$$.fragment),at=a(),oe=b("p"),oe.textContent=Ul,mt=a(),se=b("table"),se.innerHTML=Cl,pt=a(),u(ne.$$.fragment),ft=a(),u(ie.$$.fragment),ut=a(),re=b("p"),re.textContent=_l,$t=a(),u(ae.$$.fragment),ht=a(),u(S.$$.fragment),dt=a(),u(me.$$.fragment),ct=a(),pe=b("p"),pe.innerHTML=Il,wt=a(),fe=b("p"),fe.textContent=jl,bt=a(),ue=b("p"),ue.textContent=Zl,Mt=a(),$e=b("p"),$e.textContent=Gl,yt=a(),u(he.$$.fragment),gt=a(),L=b("div"),L.innerHTML=Bl,vt=a(),u(de.$$.fragment),Tt=a(),ce=b("p"),ce.innerHTML=Rl,Jt=a(),u(k.$$.fragment),xt=a(),we=b("p"),we.textContent=Sl,Ut=a(),u(be.$$.fragment),Ct=a(),Me=b("p"),Me.innerHTML=Ll,_t=a(),ye=b("details"),ye.innerHTML=kl,It=a(),ge=b("p"),ge.textContent=Hl,jt=a(),u(ve.$$.fragment),Zt=a(),Te=b("p"),Te.textContent=Vl,Gt=a(),u(Je.$$.fragment),Bt=a(),xe=b("p"),xe.textContent=El,Rt=a(),Ue=b("p"),Ue.textContent=Nl,St=a(),H=b("blockquote"),H.innerHTML=Fl,Lt=a(),Ce=b("p"),Ce.textContent=Wl,kt=a(),u(_e.$$.fragment),Ht=a(),Ie=b("p"),Ie.textContent=Ql,Vt=a(),u(V.$$.fragment),Et=a(),u(je.$$.fragment),Nt=a(),Ze=b("p"),Ze.textContent=Al,Ft=a(),Ge=b("p"),Ge.textContent=Xl,Wt=a(),u(Be.$$.fragment),Qt=a(),Re=b("ul"),Re.innerHTML=zl,At=a(),E=b("div"),E.innerHTML=Dl,Xt=a(),u(Se.$$.fragment),zt=a(),Le=b("ul"),Le.innerHTML=Pl,Dt=a(),N=b("div"),N.innerHTML=Yl,Pt=a(),u(ke.$$.fragment),Yt=a(),He=b("ul"),He.innerHTML=ql,qt=a(),F=b("div"),F.innerHTML=Ol,Ot=a(),u(Ve.$$.fragment),Kt=a(),Ee=b("ul"),Ee.innerHTML=Kl,el=a(),W=b("div"),W.innerHTML=eo,tl=a(),u(Ne.$$.fragment),ll=a(),Fe=b("ul"),Fe.innerHTML=to,ol=a(),Q=b("div"),Q.innerHTML=lo,sl=a(),u(We.$$.fragment),nl=a(),u(A.$$.fragment),il=a(),u(Qe.$$.fragment),rl=a(),Ae=b("p"),Ae.textContent=oo,al=a(),u(Xe.$$.fragment),ml=a(),ze=b("p"),ze.textContent=so,pl=a(),u(X.$$.fragment),fl=a(),De=b("p"),De.textContent=no,ul=a(),u(Pe.$$.fragment),$l=a(),z=b("div"),z.innerHTML=io,hl=a(),u(Ye.$$.fragment),dl=a(),qe=b("p"),qe.textContent=ro,cl=a(),u(D.$$.fragment),wl=a(),Oe=b("p"),Oe.innerHTML=ao,bl=a(),P=b("blockquote"),P.innerHTML=mo,Ml=a(),u(Ke.$$.fragment),yl=a(),tt=b("p"),this.h()},l(e){const t=vo("svelte-u9bgzb",document.head);l=M(t,"META",{name:!0,content:!0}),t.forEach(s),p=m(e),o=M(e,"P",{}),wo(o).forEach(s),f=m(e),$(n.$$.fragment,e),r=m(e),$(g.$$.fragment,e),x=m(e),T=M(e,"DIV",{style:!0,"data-svelte-h":!0}),y(T)!=="svelte-1hd9y85"&&(T.innerHTML=I),Z=m(e),R=M(e,"P",{"data-svelte-h":!0}),y(R)!=="svelte-aunukm"&&(R.textContent=Y),J=m(e),$(C.$$.fragment,e),lt=m(e),q=M(e,"P",{"data-svelte-h":!0}),y(q)!=="svelte-1bkocry"&&(q.innerHTML=Tl),ot=m(e),$(O.$$.fragment,e),st=m(e),K=M(e,"P",{"data-svelte-h":!0}),y(K)!=="svelte-141t05y"&&(K.innerHTML=Jl),nt=m(e),ee=M(e,"P",{"data-svelte-h":!0}),y(ee)!=="svelte-upuyxa"&&(ee.textContent=xl),it=m(e),$(te.$$.fragment,e),rt=m(e),$(le.$$.fragment,e),at=m(e),oe=M(e,"P",{"data-svelte-h":!0}),y(oe)!=="svelte-135n9gt"&&(oe.textContent=Ul),mt=m(e),se=M(e,"TABLE",{"data-svelte-h":!0}),y(se)!=="svelte-j7v58"&&(se.innerHTML=Cl),pt=m(e),$(ne.$$.fragment,e),ft=m(e),$(ie.$$.fragment,e),ut=m(e),re=M(e,"P",{"data-svelte-h":!0}),y(re)!=="svelte-yserl4"&&(re.textContent=_l),$t=m(e),$(ae.$$.fragment,e),ht=m(e),$(S.$$.fragment,e),dt=m(e),$(me.$$.fragment,e),ct=m(e),pe=M(e,"P",{"data-svelte-h":!0}),y(pe)!=="svelte-19hhhh8"&&(pe.innerHTML=Il),wt=m(e),fe=M(e,"P",{"data-svelte-h":!0}),y(fe)!=="svelte-7rhllm"&&(fe.textContent=jl),bt=m(e),ue=M(e,"P",{"data-svelte-h":!0}),y(ue)!=="svelte-efyae4"&&(ue.textContent=Zl),Mt=m(e),$e=M(e,"P",{"data-svelte-h":!0}),y($e)!=="svelte-13y89sk"&&($e.textContent=Gl),yt=m(e),$(he.$$.fragment,e),gt=m(e),L=M(e,"DIV",{class:!0,"data-svelte-h":!0}),y(L)!=="svelte-bqfm02"&&(L.innerHTML=Bl),vt=m(e),$(de.$$.fragment,e),Tt=m(e),ce=M(e,"P",{"data-svelte-h":!0}),y(ce)!=="svelte-1mcn9cu"&&(ce.innerHTML=Rl),Jt=m(e),$(k.$$.fragment,e),xt=m(e),we=M(e,"P",{"data-svelte-h":!0}),y(we)!=="svelte-kl9pz"&&(we.textContent=Sl),Ut=m(e),$(be.$$.fragment,e),Ct=m(e),Me=M(e,"P",{"data-svelte-h":!0}),y(Me)!=="svelte-9nq0x0"&&(Me.innerHTML=Ll),_t=m(e),ye=M(e,"DETAILS",{"data-svelte-h":!0}),y(ye)!=="svelte-uj5pem"&&(ye.innerHTML=kl),It=m(e),ge=M(e,"P",{"data-svelte-h":!0}),y(ge)!=="svelte-nrvfwv"&&(ge.textContent=Hl),jt=m(e),$(ve.$$.fragment,e),Zt=m(e),Te=M(e,"P",{"data-svelte-h":!0}),y(Te)!=="svelte-1qmpg9r"&&(Te.textContent=Vl),Gt=m(e),$(Je.$$.fragment,e),Bt=m(e),xe=M(e,"P",{"data-svelte-h":!0}),y(xe)!=="svelte-97c9xv"&&(xe.textContent=El),Rt=m(e),Ue=M(e,"P",{"data-svelte-h":!0}),y(Ue)!=="svelte-85ylx7"&&(Ue.textContent=Nl),St=m(e),H=M(e,"BLOCKQUOTE",{class:!0,"data-svelte-h":!0}),y(H)!=="svelte-rwsljd"&&(H.innerHTML=Fl),Lt=m(e),Ce=M(e,"P",{"data-svelte-h":!0}),y(Ce)!=="svelte-cwdauv"&&(Ce.textContent=Wl),kt=m(e),$(_e.$$.fragment,e),Ht=m(e),Ie=M(e,"P",{"data-svelte-h":!0}),y(Ie)!=="svelte-pxzpok"&&(Ie.textContent=Ql),Vt=m(e),$(V.$$.fragment,e),Et=m(e),$(je.$$.fragment,e),Nt=m(e),Ze=M(e,"P",{"data-svelte-h":!0}),y(Ze)!=="svelte-k1r3x2"&&(Ze.textContent=Al),Ft=m(e),Ge=M(e,"P",{"data-svelte-h":!0}),y(Ge)!=="svelte-1wwx18k"&&(Ge.textContent=Xl),Wt=m(e),$(Be.$$.fragment,e),Qt=m(e),Re=M(e,"UL",{"data-svelte-h":!0}),y(Re)!=="svelte-1cq4pkj"&&(Re.innerHTML=zl),At=m(e),E=M(e,"DIV",{class:!0,"data-svelte-h":!0}),y(E)!=="svelte-hgn4ym"&&(E.innerHTML=Dl),Xt=m(e),$(Se.$$.fragment,e),zt=m(e),Le=M(e,"UL",{"data-svelte-h":!0}),y(Le)!=="svelte-47xg6m"&&(Le.innerHTML=Pl),Dt=m(e),N=M(e,"DIV",{class:!0,"data-svelte-h":!0}),y(N)!=="svelte-r6ummd"&&(N.innerHTML=Yl),Pt=m(e),$(ke.$$.fragment,e),Yt=m(e),He=M(e,"UL",{"data-svelte-h":!0}),y(He)!=="svelte-1ou7dkf"&&(He.innerHTML=ql),qt=m(e),F=M(e,"DIV",{class:!0,"data-svelte-h":!0}),y(F)!=="svelte-1shnxws"&&(F.innerHTML=Ol),Ot=m(e),$(Ve.$$.fragment,e),Kt=m(e),Ee=M(e,"UL",{"data-svelte-h":!0}),y(Ee)!=="svelte-nbqzta"&&(Ee.innerHTML=Kl),el=m(e),W=M(e,"DIV",{class:!0,"data-svelte-h":!0}),y(W)!=="svelte-1lnu0nn"&&(W.innerHTML=eo),tl=m(e),$(Ne.$$.fragment,e),ll=m(e),Fe=M(e,"UL",{"data-svelte-h":!0}),y(Fe)!=="svelte-144j26s"&&(Fe.innerHTML=to),ol=m(e),Q=M(e,"DIV",{class:!0,"data-svelte-h":!0}),y(Q)!=="svelte-f5ydea"&&(Q.innerHTML=lo),sl=m(e),$(We.$$.fragment,e),nl=m(e),$(A.$$.fragment,e),il=m(e),$(Qe.$$.fragment,e),rl=m(e),Ae=M(e,"P",{"data-svelte-h":!0}),y(Ae)!=="svelte-jmtuc1"&&(Ae.textContent=oo),al=m(e),$(Xe.$$.fragment,e),ml=m(e),ze=M(e,"P",{"data-svelte-h":!0}),y(ze)!=="svelte-lnreu8"&&(ze.textContent=so),pl=m(e),$(X.$$.fragment,e),fl=m(e),De=M(e,"P",{"data-svelte-h":!0}),y(De)!=="svelte-163nui"&&(De.textContent=no),ul=m(e),$(Pe.$$.fragment,e),$l=m(e),z=M(e,"DIV",{class:!0,"data-svelte-h":!0}),y(z)!=="svelte-xug5ar"&&(z.innerHTML=io),hl=m(e),$(Ye.$$.fragment,e),dl=m(e),qe=M(e,"P",{"data-svelte-h":!0}),y(qe)!=="svelte-1mr2rqs"&&(qe.textContent=ro),cl=m(e),$(D.$$.fragment,e),wl=m(e),Oe=M(e,"P",{"data-svelte-h":!0}),y(Oe)!=="svelte-19zk1vh"&&(Oe.innerHTML=ao),bl=m(e),P=M(e,"BLOCKQUOTE",{class:!0,"data-svelte-h":!0}),y(P)!=="svelte-so5vtc"&&(P.innerHTML=mo),Ml=m(e),$(Ke.$$.fragment,e),yl=m(e),tt=M(e,"P",{}),wo(tt).forEach(s),this.h()},h(){j(l,"name","hf:doc:metadata"),j(l,"content",Ao),vl(T,"display","flex"),vl(T,"align-items","center"),vl(T,"gap","10px"),j(L,"class","video-container"),j(H,"class","tip"),j(E,"class","video-container"),j(N,"class","video-container"),j(F,"class","video-container"),j(W,"class","video-container"),j(Q,"class","video-container"),j(z,"class","video-container"),j(P,"class","tip")},m(e,t){To(document.head,l),i(e,p,t),i(e,o,t),i(e,f,t),h(n,e,t),i(e,r,t),h(g,e,t),i(e,x,t),i(e,T,t),i(e,Z,t),i(e,R,t),i(e,J,t),h(C,e,t),i(e,lt,t),i(e,q,t),i(e,ot,t),h(O,e,t),i(e,st,t),i(e,K,t),i(e,nt,t),i(e,ee,t),i(e,it,t),h(te,e,t),i(e,rt,t),h(le,e,t),i(e,at,t),i(e,oe,t),i(e,mt,t),i(e,se,t),i(e,pt,t),h(ne,e,t),i(e,ft,t),h(ie,e,t),i(e,ut,t),i(e,re,t),i(e,$t,t),h(ae,e,t),i(e,ht,t),h(S,e,t),i(e,dt,t),h(me,e,t),i(e,ct,t),i(e,pe,t),i(e,wt,t),i(e,fe,t),i(e,bt,t),i(e,ue,t),i(e,Mt,t),i(e,$e,t),i(e,yt,t),h(he,e,t),i(e,gt,t),i(e,L,t),i(e,vt,t),h(de,e,t),i(e,Tt,t),i(e,ce,t),i(e,Jt,t),h(k,e,t),i(e,xt,t),i(e,we,t),i(e,Ut,t),h(be,e,t),i(e,Ct,t),i(e,Me,t),i(e,_t,t),i(e,ye,t),i(e,It,t),i(e,ge,t),i(e,jt,t),h(ve,e,t),i(e,Zt,t),i(e,Te,t),i(e,Gt,t),h(Je,e,t),i(e,Bt,t),i(e,xe,t),i(e,Rt,t),i(e,Ue,t),i(e,St,t),i(e,H,t),i(e,Lt,t),i(e,Ce,t),i(e,kt,t),h(_e,e,t),i(e,Ht,t),i(e,Ie,t),i(e,Vt,t),h(V,e,t),i(e,Et,t),h(je,e,t),i(e,Nt,t),i(e,Ze,t),i(e,Ft,t),i(e,Ge,t),i(e,Wt,t),h(Be,e,t),i(e,Qt,t),i(e,Re,t),i(e,At,t),i(e,E,t),i(e,Xt,t),h(Se,e,t),i(e,zt,t),i(e,Le,t),i(e,Dt,t),i(e,N,t),i(e,Pt,t),h(ke,e,t),i(e,Yt,t),i(e,He,t),i(e,qt,t),i(e,F,t),i(e,Ot,t),h(Ve,e,t),i(e,Kt,t),i(e,Ee,t),i(e,el,t),i(e,W,t),i(e,tl,t),h(Ne,e,t),i(e,ll,t),i(e,Fe,t),i(e,ol,t),i(e,Q,t),i(e,sl,t),h(We,e,t),i(e,nl,t),h(A,e,t),i(e,il,t),h(Qe,e,t),i(e,rl,t),i(e,Ae,t),i(e,al,t),h(Xe,e,t),i(e,ml,t),i(e,ze,t),i(e,pl,t),h(X,e,t),i(e,fl,t),i(e,De,t),i(e,ul,t),h(Pe,e,t),i(e,$l,t),i(e,z,t),i(e,hl,t),h(Ye,e,t),i(e,dl,t),i(e,qe,t),i(e,cl,t),h(D,e,t),i(e,wl,t),i(e,Oe,t),i(e,bl,t),i(e,P,t),i(e,Ml,t),h(Ke,e,t),i(e,yl,t),i(e,tt,t),gl=!0},p(e,[t]){const po={};t&2&&(po.$$scope={dirty:t,ctx:e}),S.$set(po);const fo={};t&2&&(fo.$$scope={dirty:t,ctx:e}),k.$set(fo);const uo={};t&2&&(uo.$$scope={dirty:t,ctx:e}),V.$set(uo);const $o={};t&2&&($o.$$scope={dirty:t,ctx:e}),A.$set($o);const ho={};t&2&&(ho.$$scope={dirty:t,ctx:e}),X.$set(ho);const co={};t&2&&(co.$$scope={dirty:t,ctx:e}),D.$set(co)},i(e){gl||(d(n.$$.fragment,e),d(g.$$.fragment,e),d(C.$$.fragment,e),d(O.$$.fragment,e),d(te.$$.fragment,e),d(le.$$.fragment,e),d(ne.$$.fragment,e),d(ie.$$.fragment,e),d(ae.$$.fragment,e),d(S.$$.fragment,e),d(me.$$.fragment,e),d(he.$$.fragment,e),d(de.$$.fragment,e),d(k.$$.fragment,e),d(be.$$.fragment,e),d(ve.$$.fragment,e),d(Je.$$.fragment,e),d(_e.$$.fragment,e),d(V.$$.fragment,e),d(je.$$.fragment,e),d(Be.$$.fragment,e),d(Se.$$.fragment,e),d(ke.$$.fragment,e),d(Ve.$$.fragment,e),d(Ne.$$.fragment,e),d(We.$$.fragment,e),d(A.$$.fragment,e),d(Qe.$$.fragment,e),d(Xe.$$.fragment,e),d(X.$$.fragment,e),d(Pe.$$.fragment,e),d(Ye.$$.fragment,e),d(D.$$.fragment,e),d(Ke.$$.fragment,e),gl=!0)},o(e){c(n.$$.fragment,e),c(g.$$.fragment,e),c(C.$$.fragment,e),c(O.$$.fragment,e),c(te.$$.fragment,e),c(le.$$.fragment,e),c(ne.$$.fragment,e),c(ie.$$.fragment,e),c(ae.$$.fragment,e),c(S.$$.fragment,e),c(me.$$.fragment,e),c(he.$$.fragment,e),c(de.$$.fragment,e),c(k.$$.fragment,e),c(be.$$.fragment,e),c(ve.$$.fragment,e),c(Je.$$.fragment,e),c(_e.$$.fragment,e),c(V.$$.fragment,e),c(je.$$.fragment,e),c(Be.$$.fragment,e),c(Se.$$.fragment,e),c(ke.$$.fragment,e),c(Ve.$$.fragment,e),c(Ne.$$.fragment,e),c(We.$$.fragment,e),c(A.$$.fragment,e),c(Qe.$$.fragment,e),c(Xe.$$.fragment,e),c(X.$$.fragment,e),c(Pe.$$.fragment,e),c(Ye.$$.fragment,e),c(D.$$.fragment,e),c(Ke.$$.fragment,e),gl=!1},d(e){e&&(s(p),s(o),s(f),s(r),s(x),s(T),s(Z),s(R),s(J),s(lt),s(q),s(ot),s(st),s(K),s(nt),s(ee),s(it),s(rt),s(at),s(oe),s(mt),s(se),s(pt),s(ft),s(ut),s(re),s($t),s(ht),s(dt),s(ct),s(pe),s(wt),s(fe),s(bt),s(ue),s(Mt),s($e),s(yt),s(gt),s(L),s(vt),s(Tt),s(ce),s(Jt),s(xt),s(we),s(Ut),s(Ct),s(Me),s(_t),s(ye),s(It),s(ge),s(jt),s(Zt),s(Te),s(Gt),s(Bt),s(xe),s(Rt),s(Ue),s(St),s(H),s(Lt),s(Ce),s(kt),s(Ht),s(Ie),s(Vt),s(Et),s(Nt),s(Ze),s(Ft),s(Ge),s(Wt),s(Qt),s(Re),s(At),s(E),s(Xt),s(zt),s(Le),s(Dt),s(N),s(Pt),s(Yt),s(He),s(qt),s(F),s(Ot),s(Kt),s(Ee),s(el),s(W),s(tl),s(ll),s(Fe),s(ol),s(Q),s(sl),s(nl),s(il),s(rl),s(Ae),s(al),s(ml),s(ze),s(pl),s(fl),s(De),s(ul),s($l),s(z),s(hl),s(dl),s(qe),s(cl),s(wl),s(Oe),s(bl),s(P),s(Ml),s(yl),s(tt)),s(l),w(n,e),w(g,e),w(C,e),w(O,e),w(te,e),w(le,e),w(ne,e),w(ie,e),w(ae,e),w(S,e),w(me,e),w(he,e),w(de,e),w(k,e),w(be,e),w(ve,e),w(Je,e),w(_e,e),w(V,e),w(je,e),w(Be,e),w(Se,e),w(ke,e),w(Ve,e),w(Ne,e),w(We,e),w(A,e),w(Qe,e),w(Xe,e),w(X,e),w(Pe,e),w(Ye,e),w(D,e),w(Ke,e)}}}const Ao='{"title":"SO-101","local":"so-101","sections":[{"title":"Source the parts","local":"source-the-parts","sections":[],"depth":2},{"title":"Install LeRobot 🤗","local":"install-lerobot-","sections":[],"depth":2},{"title":"Step-by-Step Assembly Instructions","local":"step-by-step-assembly-instructions","sections":[],"depth":2},{"title":"Configure the motors","local":"configure-the-motors","sections":[{"title":"1. Find the USB ports associated with each arm","local":"1-find-the-usb-ports-associated-with-each-arm","sections":[],"depth":3},{"title":"2. Set the motors ids and baudrates","local":"2-set-the-motors-ids-and-baudrates","sections":[{"title":"Setup motors video","local":"setup-motors-video","sections":[],"depth":5},{"title":"Follower","local":"follower","sections":[],"depth":4},{"title":"Leader","local":"leader","sections":[],"depth":4}],"depth":3},{"title":"Clean Parts","local":"clean-parts","sections":[],"depth":3},{"title":"Joint 1","local":"joint-1","sections":[],"depth":3},{"title":"Joint 2","local":"joint-2","sections":[],"depth":3},{"title":"Joint 3","local":"joint-3","sections":[],"depth":3},{"title":"Joint 4","local":"joint-4","sections":[],"depth":3},{"title":"Joint 5","local":"joint-5","sections":[],"depth":3},{"title":"Gripper / Handle","local":"gripper--handle","sections":[],"depth":3}],"depth":2},{"title":"Calibrate","local":"calibrate","sections":[{"title":"Follower","local":"follower","sections":[{"title":"Calibration video","local":"calibration-video","sections":[],"depth":5}],"depth":4},{"title":"Leader","local":"leader","sections":[],"depth":4}],"depth":2}],"depth":1}';function Xo(v){return Mo(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class Ko extends yo{constructor(l){super(),go(this,l,Xo,Qo,bo,{})}}export{Ko as component};
