import{s as ll,o as ol,n as B}from"../chunks/scheduler.eb244325.js";import{S as sl,i as nl,e as w,s as p,c as h,h as al,a as y,d as n,b as m,f as tl,g as u,j as J,k as Ge,l as rl,m as a,n as $,t as c,o as d,p as b}from"../chunks/index.3fe63ad3.js";import{C as il}from"../chunks/CopyLLMTxtMenu.88bde5f2.js";import{C}from"../chunks/CodeBlock.934d290d.js";import{H as _,E as pl}from"../chunks/MermaidChart.svelte_svelte_type_style_lang.341974a5.js";import{H as Ie,a as Z}from"../chunks/HfOption.0914e9f3.js";function ml(j){let l,r="Example output:",t,f,o,i,v="Where the found port is: <code>/dev/tty.usbmodem575E0032081</code> corresponding to your leader or follower arm.",g;return f=new C({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=w("p"),l.textContent=r,t=p(),h(f.$$.fragment),o=p(),i=w("p"),i.innerHTML=v},l(T){l=y(T,"P",{"data-svelte-h":!0}),J(l)!=="svelte-c9hbnf"&&(l.textContent=r),t=m(T),u(f.$$.fragment,T),o=m(T),i=y(T,"P",{"data-svelte-h":!0}),J(i)!=="svelte-cknsqd"&&(i.innerHTML=v)},m(T,U){a(T,l,U),a(T,t,U),$(f,T,U),a(T,o,U),a(T,i,U),g=!0},p:B,i(T){g||(c(f.$$.fragment,T),g=!0)},o(T){d(f.$$.fragment,T),g=!1},d(T){T&&(n(l),n(t),n(o),n(i)),b(f,T)}}}function fl(j){let l,r="On Linux, you might need to give access to the USB ports by running:",t,f,o,i,v="Example output:",g,T,U,G,x="Where the found port is: <code>/dev/ttyACM1</code> corresponding to your leader or follower arm.",k;return f=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}}),T=new C({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=w("p"),l.textContent=r,t=p(),h(f.$$.fragment),o=p(),i=w("p"),i.textContent=v,g=p(),h(T.$$.fragment),U=p(),G=w("p"),G.innerHTML=x},l(M){l=y(M,"P",{"data-svelte-h":!0}),J(l)!=="svelte-q7p48l"&&(l.textContent=r),t=m(M),u(f.$$.fragment,M),o=m(M),i=y(M,"P",{"data-svelte-h":!0}),J(i)!=="svelte-c9hbnf"&&(i.textContent=v),g=m(M),u(T.$$.fragment,M),U=m(M),G=y(M,"P",{"data-svelte-h":!0}),J(G)!=="svelte-bj510z"&&(G.innerHTML=x)},m(M,I){a(M,l,I),a(M,t,I),$(f,M,I),a(M,o,I),a(M,i,I),a(M,g,I),$(T,M,I),a(M,U,I),a(M,G,I),k=!0},p:B,i(M){k||(c(f.$$.fragment,M),c(T.$$.fragment,M),k=!0)},o(M){d(f.$$.fragment,M),d(T.$$.fragment,M),k=!1},d(M){M&&(n(l),n(t),n(o),n(i),n(g),n(U),n(G)),b(f,M),b(T,M)}}}function hl(j){let l,r,t,f;return l=new Z({props:{id:"example",option:"Mac",$$slots:{default:[ml]},$$scope:{ctx:j}}}),t=new Z({props:{id:"example",option:"Linux",$$slots:{default:[fl]},$$scope:{ctx:j}}}),{c(){h(l.$$.fragment),r=p(),h(t.$$.fragment)},l(o){u(l.$$.fragment,o),r=m(o),u(t.$$.fragment,o)},m(o,i){$(l,o,i),a(o,r,i),$(t,o,i),f=!0},p(o,i){const v={};i&2&&(v.$$scope={dirty:i,ctx:o}),l.$set(v);const g={};i&2&&(g.$$scope={dirty:i,ctx:o}),t.$set(g)},i(o){f||(c(l.$$.fragment,o),c(t.$$.fragment,o),f=!0)},o(o){d(l.$$.fragment,o),d(t.$$.fragment,o),f=!1},d(o){o&&n(r),b(l,o),b(t,o)}}}function ul(j){let l,r;return l=new C({props:{code:"bGVyb2JvdC1zZXR1cC1tb3RvcnMlMjAlNUMlMEElMjAlMjAlMjAlMjAtLXJvYm90LnR5cGUlM0Rrb2NoX2ZvbGxvd2VyJTIwJTVDJTBBJTIwJTIwJTIwJTIwLS1yb2JvdC5wb3J0JTNEJTJGZGV2JTJGdHR5LnVzYm1vZGVtNTc1RTAwMzE3NTElMjAlMjMlMjAlM0MtJTIwcGFzdGUlMjBoZXJlJTIwdGhlJTIwcG9ydCUyMGZvdW5kJTIwYXQlMjBwcmV2aW91cyUyMHN0ZXA=",highlighted:`lerobot-setup-motors \\
    --robot.type=koch_follower \\
    --robot.port=/dev/tty.usbmodem575E0031751 <span class="hljs-comment"># &lt;- paste here the port found at previous step</span>`,wrap:!1}}),{c(){h(l.$$.fragment)},l(t){u(l.$$.fragment,t)},m(t,f){$(l,t,f),r=!0},p:B,i(t){r||(c(l.$$.fragment,t),r=!0)},o(t){d(l.$$.fragment,t),r=!1},d(t){b(l,t)}}}function $l(j){let l,r;return l=new C({props:{code:"ZnJvbSUyMGxlcm9ib3Qucm9ib3RzLmtvY2hfZm9sbG93ZXIlMjBpbXBvcnQlMjBLb2NoRm9sbG93ZXIlMkMlMjBLb2NoRm9sbG93ZXJDb25maWclMEElMEFjb25maWclMjAlM0QlMjBLb2NoRm9sbG93ZXJDb25maWcoJTBBJTIwJTIwJTIwJTIwcG9ydCUzRCUyMiUyRmRldiUyRnR0eS51c2Jtb2RlbTU3NUUwMDMxNzUxJTIyJTJDJTBBJTIwJTIwJTIwJTIwaWQlM0QlMjJteV9hd2Vzb21lX2ZvbGxvd2VyX2FybSUyMiUyQyUwQSklMEFmb2xsb3dlciUyMCUzRCUyMEtvY2hGb2xsb3dlcihjb25maWcpJTBBZm9sbG93ZXIuc2V0dXBfbW90b3JzKCk=",highlighted:`<span class="hljs-keyword">from</span> lerobot.robots.koch_follower <span class="hljs-keyword">import</span> KochFollower, KochFollowerConfig

config = KochFollowerConfig(
    port=<span class="hljs-string">&quot;/dev/tty.usbmodem575E0031751&quot;</span>,
    <span class="hljs-built_in">id</span>=<span class="hljs-string">&quot;my_awesome_follower_arm&quot;</span>,
)
follower = KochFollower(config)
follower.setup_motors()`,wrap:!1}}),{c(){h(l.$$.fragment)},l(t){u(l.$$.fragment,t)},m(t,f){$(l,t,f),r=!0},p:B,i(t){r||(c(l.$$.fragment,t),r=!0)},o(t){d(l.$$.fragment,t),r=!1},d(t){b(l,t)}}}function cl(j){let l,r,t,f;return l=new Z({props:{id:"setup_motors",option:"Command",$$slots:{default:[ul]},$$scope:{ctx:j}}}),t=new Z({props:{id:"setup_motors",option:"API example",$$slots:{default:[$l]},$$scope:{ctx:j}}}),{c(){h(l.$$.fragment),r=p(),h(t.$$.fragment)},l(o){u(l.$$.fragment,o),r=m(o),u(t.$$.fragment,o)},m(o,i){$(l,o,i),a(o,r,i),$(t,o,i),f=!0},p(o,i){const v={};i&2&&(v.$$scope={dirty:i,ctx:o}),l.$set(v);const g={};i&2&&(g.$$scope={dirty:i,ctx:o}),t.$set(g)},i(o){f||(c(l.$$.fragment,o),c(t.$$.fragment,o),f=!0)},o(o){d(l.$$.fragment,o),d(t.$$.fragment,o),f=!1},d(o){o&&n(r),b(l,o),b(t,o)}}}function dl(j){let l,r;return l=new C({props:{code:"bGVyb2JvdC1zZXR1cC1tb3RvcnMlMjAlNUMlMEElMjAlMjAlMjAlMjAtLXRlbGVvcC50eXBlJTNEa29jaF9sZWFkZXIlMjAlNUMlMEElMjAlMjAlMjAlMjAtLXRlbGVvcC5wb3J0JTNEJTJGZGV2JTJGdHR5LnVzYm1vZGVtNTc1RTAwMzE3NTElMjAlNUMlMjAlMjAlMjMlMjAlM0MtJTIwcGFzdGUlMjBoZXJlJTIwdGhlJTIwcG9ydCUyMGZvdW5kJTIwYXQlMjBwcmV2aW91cyUyMHN0ZXA=",highlighted:`lerobot-setup-motors \\
    --teleop.type=koch_leader \\
    --teleop.port=/dev/tty.usbmodem575E0031751 \\  <span class="hljs-comment"># &lt;- paste here the port found at previous step</span>`,wrap:!1}}),{c(){h(l.$$.fragment)},l(t){u(l.$$.fragment,t)},m(t,f){$(l,t,f),r=!0},p:B,i(t){r||(c(l.$$.fragment,t),r=!0)},o(t){d(l.$$.fragment,t),r=!1},d(t){b(l,t)}}}function bl(j){let l,r;return l=new C({props:{code:"ZnJvbSUyMGxlcm9ib3QudGVsZW9wZXJhdG9ycy5rb2NoX2xlYWRlciUyMGltcG9ydCUyMEtvY2hMZWFkZXIlMkMlMjBLb2NoTGVhZGVyQ29uZmlnJTBBJTBBY29uZmlnJTIwJTNEJTIwS29jaExlYWRlckNvbmZpZyglMEElMjAlMjAlMjAlMjBwb3J0JTNEJTIyJTJGZGV2JTJGdHR5LnVzYm1vZGVtNTc1RTAwMzE3NTElMjIlMkMlMEElMjAlMjAlMjAlMjBpZCUzRCUyMm15X2F3ZXNvbWVfbGVhZGVyX2FybSUyMiUyQyUwQSklMEFsZWFkZXIlMjAlM0QlMjBLb2NoTGVhZGVyKGNvbmZpZyklMEFsZWFkZXIuc2V0dXBfbW90b3JzKCk=",highlighted:`<span class="hljs-keyword">from</span> lerobot.teleoperators.koch_leader <span class="hljs-keyword">import</span> KochLeader, KochLeaderConfig

config = KochLeaderConfig(
    port=<span class="hljs-string">&quot;/dev/tty.usbmodem575E0031751&quot;</span>,
    <span class="hljs-built_in">id</span>=<span class="hljs-string">&quot;my_awesome_leader_arm&quot;</span>,
)
leader = KochLeader(config)
leader.setup_motors()`,wrap:!1}}),{c(){h(l.$$.fragment)},l(t){u(l.$$.fragment,t)},m(t,f){$(l,t,f),r=!0},p:B,i(t){r||(c(l.$$.fragment,t),r=!0)},o(t){d(l.$$.fragment,t),r=!1},d(t){b(l,t)}}}function Ml(j){let l,r,t,f;return l=new Z({props:{id:"setup_motors",option:"Command",$$slots:{default:[dl]},$$scope:{ctx:j}}}),t=new Z({props:{id:"setup_motors",option:"API example",$$slots:{default:[bl]},$$scope:{ctx:j}}}),{c(){h(l.$$.fragment),r=p(),h(t.$$.fragment)},l(o){u(l.$$.fragment,o),r=m(o),u(t.$$.fragment,o)},m(o,i){$(l,o,i),a(o,r,i),$(t,o,i),f=!0},p(o,i){const v={};i&2&&(v.$$scope={dirty:i,ctx:o}),l.$set(v);const g={};i&2&&(g.$$scope={dirty:i,ctx:o}),t.$set(g)},i(o){f||(c(l.$$.fragment,o),c(t.$$.fragment,o),f=!0)},o(o){d(l.$$.fragment,o),d(t.$$.fragment,o),f=!1},d(o){o&&n(r),b(l,o),b(t,o)}}}function wl(j){let l,r;return l=new C({props:{code:"bGVyb2JvdC1jYWxpYnJhdGUlMjAlNUMlMEElMjAlMjAlMjAlMjAtLXJvYm90LnR5cGUlM0Rrb2NoX2ZvbGxvd2VyJTIwJTVDJTBBJTIwJTIwJTIwJTIwLS1yb2JvdC5wb3J0JTNEJTJGZGV2JTJGdHR5LnVzYm1vZGVtNTg3NjA0MzE1NTElMjAlNUMlMjAlMjMlMjAlM0MtJTIwVGhlJTIwcG9ydCUyMG9mJTIweW91ciUyMHJvYm90JTBBJTIwJTIwJTIwJTIwLS1yb2JvdC5pZCUzRG15X2F3ZXNvbWVfZm9sbG93ZXJfYXJtJTIwJTIwJTIzJTIwJTNDLSUyMEdpdmUlMjB0aGUlMjByb2JvdCUyMGElMjB1bmlxdWUlMjBuYW1l",highlighted:`lerobot-calibrate \\
    --robot.type=koch_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(){h(l.$$.fragment)},l(t){u(l.$$.fragment,t)},m(t,f){$(l,t,f),r=!0},p:B,i(t){r||(c(l.$$.fragment,t),r=!0)},o(t){d(l.$$.fragment,t),r=!1},d(t){b(l,t)}}}function yl(j){let l,r;return l=new C({props:{code:"ZnJvbSUyMGxlcm9ib3Qucm9ib3RzLmtvY2hfZm9sbG93ZXIlMjBpbXBvcnQlMjBLb2NoRm9sbG93ZXJDb25maWclMkMlMjBLb2NoRm9sbG93ZXIlMEElMEFjb25maWclMjAlM0QlMjBLb2NoRm9sbG93ZXJDb25maWcoJTBBJTIwJTIwJTIwJTIwcG9ydCUzRCUyMiUyRmRldiUyRnR0eS51c2Jtb2RlbTU4NUEwMDc2ODkxJTIyJTJDJTBBJTIwJTIwJTIwJTIwaWQlM0QlMjJteV9hd2Vzb21lX2ZvbGxvd2VyX2FybSUyMiUyQyUwQSklMEElMEFmb2xsb3dlciUyMCUzRCUyMEtvY2hGb2xsb3dlcihjb25maWcpJTBBZm9sbG93ZXIuY29ubmVjdChjYWxpYnJhdGUlM0RGYWxzZSklMEFmb2xsb3dlci5jYWxpYnJhdGUoKSUwQWZvbGxvd2VyLmRpc2Nvbm5lY3QoKQ==",highlighted:`<span class="hljs-keyword">from</span> lerobot.robots.koch_follower <span class="hljs-keyword">import</span> KochFollowerConfig, KochFollower

config = KochFollowerConfig(
    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 = KochFollower(config)
follower.connect(calibrate=<span class="hljs-literal">False</span>)
follower.calibrate()
follower.disconnect()`,wrap:!1}}),{c(){h(l.$$.fragment)},l(t){u(l.$$.fragment,t)},m(t,f){$(l,t,f),r=!0},p:B,i(t){r||(c(l.$$.fragment,t),r=!0)},o(t){d(l.$$.fragment,t),r=!1},d(t){b(l,t)}}}function Tl(j){let l,r,t,f;return l=new Z({props:{id:"calibrate_follower",option:"Command",$$slots:{default:[wl]},$$scope:{ctx:j}}}),t=new Z({props:{id:"calibrate_follower",option:"API example",$$slots:{default:[yl]},$$scope:{ctx:j}}}),{c(){h(l.$$.fragment),r=p(),h(t.$$.fragment)},l(o){u(l.$$.fragment,o),r=m(o),u(t.$$.fragment,o)},m(o,i){$(l,o,i),a(o,r,i),$(t,o,i),f=!0},p(o,i){const v={};i&2&&(v.$$scope={dirty:i,ctx:o}),l.$set(v);const g={};i&2&&(g.$$scope={dirty:i,ctx:o}),t.$set(g)},i(o){f||(c(l.$$.fragment,o),c(t.$$.fragment,o),f=!0)},o(o){d(l.$$.fragment,o),d(t.$$.fragment,o),f=!1},d(o){o&&n(r),b(l,o),b(t,o)}}}function Jl(j){let l,r;return l=new C({props:{code:"bGVyb2JvdC1jYWxpYnJhdGUlMjAlNUMlMEElMjAlMjAlMjAlMjAtLXRlbGVvcC50eXBlJTNEa29jaF9sZWFkZXIlMjAlNUMlMEElMjAlMjAlMjAlMjAtLXRlbGVvcC5wb3J0JTNEJTJGZGV2JTJGdHR5LnVzYm1vZGVtNTg3NjA0MzE1NTElMjAlNUMlMjAlMjMlMjAlM0MtJTIwVGhlJTIwcG9ydCUyMG9mJTIweW91ciUyMHJvYm90JTBBJTIwJTIwJTIwJTIwLS10ZWxlb3AuaWQlM0RteV9hd2Vzb21lX2xlYWRlcl9hcm0lMjAlMjAlMjMlMjAlM0MtJTIwR2l2ZSUyMHRoZSUyMHJvYm90JTIwYSUyMHVuaXF1ZSUyMG5hbWU=",highlighted:`lerobot-calibrate \\
    --teleop.type=koch_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(){h(l.$$.fragment)},l(t){u(l.$$.fragment,t)},m(t,f){$(l,t,f),r=!0},p:B,i(t){r||(c(l.$$.fragment,t),r=!0)},o(t){d(l.$$.fragment,t),r=!1},d(t){b(l,t)}}}function jl(j){let l,r;return l=new C({props:{code:"ZnJvbSUyMGxlcm9ib3QudGVsZW9wZXJhdG9ycy5rb2NoX2xlYWRlciUyMGltcG9ydCUyMEtvY2hMZWFkZXJDb25maWclMkMlMjBLb2NoTGVhZGVyJTBBJTBBY29uZmlnJTIwJTNEJTIwS29jaExlYWRlckNvbmZpZyglMEElMjAlMjAlMjAlMjBwb3J0JTNEJTIyJTJGZGV2JTJGdHR5LnVzYm1vZGVtNTc1RTAwMzE3NTElMjIlMkMlMEElMjAlMjAlMjAlMjBpZCUzRCUyMm15X2F3ZXNvbWVfbGVhZGVyX2FybSUyMiUyQyUwQSklMEElMEFsZWFkZXIlMjAlM0QlMjBLb2NoTGVhZGVyKGNvbmZpZyklMEFsZWFkZXIuY29ubmVjdChjYWxpYnJhdGUlM0RGYWxzZSklMEFsZWFkZXIuY2FsaWJyYXRlKCklMEFsZWFkZXIuZGlzY29ubmVjdCgp",highlighted:`<span class="hljs-keyword">from</span> lerobot.teleoperators.koch_leader <span class="hljs-keyword">import</span> KochLeaderConfig, KochLeader

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

leader = KochLeader(config)
leader.connect(calibrate=<span class="hljs-literal">False</span>)
leader.calibrate()
leader.disconnect()`,wrap:!1}}),{c(){h(l.$$.fragment)},l(t){u(l.$$.fragment,t)},m(t,f){$(l,t,f),r=!0},p:B,i(t){r||(c(l.$$.fragment,t),r=!0)},o(t){d(l.$$.fragment,t),r=!1},d(t){b(l,t)}}}function gl(j){let l,r,t,f;return l=new Z({props:{id:"calibrate_leader",option:"Command",$$slots:{default:[Jl]},$$scope:{ctx:j}}}),t=new Z({props:{id:"calibrate_leader",option:"API example",$$slots:{default:[jl]},$$scope:{ctx:j}}}),{c(){h(l.$$.fragment),r=p(),h(t.$$.fragment)},l(o){u(l.$$.fragment,o),r=m(o),u(t.$$.fragment,o)},m(o,i){$(l,o,i),a(o,r,i),$(t,o,i),f=!0},p(o,i){const v={};i&2&&(v.$$scope={dirty:i,ctx:o}),l.$set(v);const g={};i&2&&(g.$$scope={dirty:i,ctx:o}),t.$set(g)},i(o){f||(c(l.$$.fragment,o),c(t.$$.fragment,o),f=!0)},o(o){d(l.$$.fragment,o),d(t.$$.fragment,o),f=!1},d(o){o&&n(r),b(l,o),b(t,o)}}}function vl(j){let l,r,t,f,o,i,v,g,T,U="In the steps below, we explain how to assemble the Koch v1.1 robot.",G,x,k,M,I='Follow the sourcing and assembling instructions provided in this <a href="https://github.com/jess-moss/koch-v1-1" rel="nofollow">README</a>. This will guide you through setting up both the follower and leader arms, as shown in the image below.',_e,F,gt='For a visual walkthrough of the assembly process, you can refer to <a href="https://youtu.be/8nQIg9BwwTk" rel="nofollow">this video tutorial</a>.',xe,E,vt='<p>Since the production of this video, we simplified the configuration phase. Because of this, two things differ from the instructions in that video:</p> <ul><li>Don’t plug in all the motor cables right away and wait to be instructed to do so in <a href="#configure-the-motors">Configure the motors</a>.</li> <li>Don’t screw in the controller board (PCB) to the base right away and wait for being instructed to do so in <a href="#configure-the-motors">Configure the motors</a>.</li></ul>',Ze,Y,Be,H,Ct='To install LeRobot follow, our <a href="./installation">Installation Guide</a>',ke,S,Ut="In addition to these instructions, you need to install the Dynamixel SDK:",Ee,z,Re,Q,Ae,P,Ve,q,Gt="To find the port for each bus servo adapter, run this script:",Le,D,Ne,R,We,K,Xe,O,It="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.",Fe,ee,_t="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.",Ye,te,xt="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.",He,le,Se,oe,Zt="Connect the usb cable from your computer and the 5V 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.",ze,se,Bt='For a visual reference on how to set the motor ids please refer to <a href="https://huggingface.co/docs/lerobot/en/so101#setup-motors-video" rel="nofollow">this video</a> where we follow the process for the SO101 arm.',Qe,A,Pe,ne,kt="You should see the following instruction.",qe,ae,De,re,Et="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.",Ke,ie,Rt="<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>",Oe,pe,At="You should then see the following message:",et,me,tt,fe,Vt="Followed by the next instruction:",lt,he,ot,ue,Lt="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.",st,$e,Nt="Repeat the operation for each motor as instructed.",nt,V,Wt="<p>Check your cabling at each step before pressing Enter. For instance, the power supply cable might disconnect as you manipulate the board.</p>",at,ce,Xt="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.",rt,de,it,be,Ft="Do the same steps for the leader arm but modify the command or script accordingly.",pt,L,mt,Me,ft,we,Yt=`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.`,ht,ye,ut,Te,Ht="Run the following command or API example to calibrate the follower arm:",$t,N,ct,Je,St='We unified the calibration method for most robots. Thus, the calibration steps for this Koch arm are the same as the steps for the SO100 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>.',dt,je,bt,ge,zt="Do the same steps to calibrate the leader arm, run the following command or API example:",Mt,W,wt,ve,Qt='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>',yt,X,Pt='<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>',Tt,Ce,Jt,Ue,jt;return o=new il({props:{containerStyle:"float: right; margin-left: 10px; display: inline-flex; position: relative; z-index: 10;"}}),v=new _({props:{title:"Koch v1.1",local:"koch-v11",headingTag:"h1"}}),x=new _({props:{title:"Order and assemble the parts",local:"order-and-assemble-the-parts",headingTag:"h2"}}),Y=new _({props:{title:"Install LeRobot 🤗",local:"install-lerobot-",headingTag:"h2"}}),z=new C({props:{code:"cGlwJTIwaW5zdGFsbCUyMC1lJTIwJTIyLiU1QmR5bmFtaXhlbCU1RCUyMg==",highlighted:'pip install -e <span class="hljs-string">&quot;.[dynamixel]&quot;</span>',wrap:!1}}),Q=new _({props:{title:"Configure the motors",local:"configure-the-motors",headingTag:"h2"}}),P=new _({props:{title:"1. Find the USB ports associated with each arm",local:"1-find-the-usb-ports-associated-with-each-arm",headingTag:"h3"}}),D=new C({props:{code:"bGVyb2JvdC1maW5kLXBvcnQ=",highlighted:"lerobot-find-port",wrap:!1}}),R=new Ie({props:{id:"example",options:["Mac","Linux"],$$slots:{default:[hl]},$$scope:{ctx:j}}}),K=new _({props:{title:"2. Set the motors ids and baudrates",local:"2-set-the-motors-ids-and-baudrates",headingTag:"h3"}}),le=new _({props:{title:"Follower",local:"follower",headingTag:"h4"}}),A=new Ie({props:{id:"setup_motors",options:["Command","API example"],$$slots:{default:[cl]},$$scope:{ctx:j}}}),ae=new C({props:{code:"Q29ubmVjdCUyMHRoZSUyMGNvbnRyb2xsZXIlMjBib2FyZCUyMHRvJTIwdGhlJTIwJ2dyaXBwZXInJTIwbW90b3IlMjBvbmx5JTIwYW5kJTIwcHJlc3MlMjBlbnRlci4=",highlighted:'Connect <span class="hljs-keyword">the</span> controller board <span class="hljs-built_in">to</span> <span class="hljs-keyword">the</span> <span class="hljs-string">&#x27;gripper&#x27;</span> motor only <span class="hljs-keyword">and</span> press enter.',wrap:!1}}),me=new C({props:{code:"J2dyaXBwZXInJTIwbW90b3IlMjBpZCUyMHNldCUyMHRvJTIwNg==",highlighted:'<span class="hljs-string">&#x27;gripper&#x27;</span> motor id <span class="hljs-built_in">set</span> <span class="hljs-keyword">to</span> 6',wrap:!1}}),he=new C({props:{code:"Q29ubmVjdCUyMHRoZSUyMGNvbnRyb2xsZXIlMjBib2FyZCUyMHRvJTIwdGhlJTIwJ3dyaXN0X3JvbGwnJTIwbW90b3IlMjBvbmx5JTIwYW5kJTIwcHJlc3MlMjBlbnRlci4=",highlighted:'Connect <span class="hljs-keyword">the</span> controller board <span class="hljs-built_in">to</span> <span class="hljs-keyword">the</span> <span class="hljs-string">&#x27;wrist_roll&#x27;</span> motor only <span class="hljs-keyword">and</span> press enter.',wrap:!1}}),de=new _({props:{title:"Leader",local:"leader",headingTag:"h4"}}),L=new Ie({props:{id:"setup_motors",options:["Command","API example"],$$slots:{default:[Ml]},$$scope:{ctx:j}}}),Me=new _({props:{title:"Calibrate",local:"calibrate",headingTag:"h2"}}),ye=new _({props:{title:"Follower",local:"follower",headingTag:"h4"}}),N=new Ie({props:{id:"calibrate_follower",options:["Command","API example"],$$slots:{default:[Tl]},$$scope:{ctx:j}}}),je=new _({props:{title:"Leader",local:"leader",headingTag:"h4"}}),W=new Ie({props:{id:"calibrate_leader",options:["Command","API example"],$$slots:{default:[gl]},$$scope:{ctx:j}}}),Ce=new pl({props:{source:"https://github.com/huggingface/lerobot/blob/main/docs/source/koch.mdx"}}),{c(){l=w("meta"),r=p(),t=w("p"),f=p(),h(o.$$.fragment),i=p(),h(v.$$.fragment),g=p(),T=w("p"),T.textContent=U,G=p(),h(x.$$.fragment),k=p(),M=w("p"),M.innerHTML=I,_e=p(),F=w("p"),F.innerHTML=gt,xe=p(),E=w("blockquote"),E.innerHTML=vt,Ze=p(),h(Y.$$.fragment),Be=p(),H=w("p"),H.innerHTML=Ct,ke=p(),S=w("p"),S.textContent=Ut,Ee=p(),h(z.$$.fragment),Re=p(),h(Q.$$.fragment),Ae=p(),h(P.$$.fragment),Ve=p(),q=w("p"),q.textContent=Gt,Le=p(),h(D.$$.fragment),Ne=p(),h(R.$$.fragment),We=p(),h(K.$$.fragment),Xe=p(),O=w("p"),O.innerHTML=It,Fe=p(),ee=w("p"),ee.textContent=_t,Ye=p(),te=w("p"),te.textContent=xt,He=p(),h(le.$$.fragment),Se=p(),oe=w("p"),oe.innerHTML=Zt,ze=p(),se=w("p"),se.innerHTML=Bt,Qe=p(),h(A.$$.fragment),Pe=p(),ne=w("p"),ne.textContent=kt,qe=p(),h(ae.$$.fragment),De=p(),re=w("p"),re.innerHTML=Et,Ke=p(),ie=w("details"),ie.innerHTML=Rt,Oe=p(),pe=w("p"),pe.textContent=At,et=p(),h(me.$$.fragment),tt=p(),fe=w("p"),fe.textContent=Vt,lt=p(),h(he.$$.fragment),ot=p(),ue=w("p"),ue.textContent=Lt,st=p(),$e=w("p"),$e.textContent=Nt,nt=p(),V=w("blockquote"),V.innerHTML=Wt,at=p(),ce=w("p"),ce.textContent=Xt,rt=p(),h(de.$$.fragment),it=p(),be=w("p"),be.textContent=Ft,pt=p(),h(L.$$.fragment),mt=p(),h(Me.$$.fragment),ft=p(),we=w("p"),we.textContent=Yt,ht=p(),h(ye.$$.fragment),ut=p(),Te=w("p"),Te.textContent=Ht,$t=p(),h(N.$$.fragment),ct=p(),Je=w("p"),Je.innerHTML=St,dt=p(),h(je.$$.fragment),bt=p(),ge=w("p"),ge.textContent=zt,Mt=p(),h(W.$$.fragment),wt=p(),ve=w("p"),ve.innerHTML=Qt,yt=p(),X=w("blockquote"),X.innerHTML=Pt,Tt=p(),h(Ce.$$.fragment),Jt=p(),Ue=w("p"),this.h()},l(e){const s=al("svelte-u9bgzb",document.head);l=y(s,"META",{name:!0,content:!0}),s.forEach(n),r=m(e),t=y(e,"P",{}),tl(t).forEach(n),f=m(e),u(o.$$.fragment,e),i=m(e),u(v.$$.fragment,e),g=m(e),T=y(e,"P",{"data-svelte-h":!0}),J(T)!=="svelte-1h6z1oa"&&(T.textContent=U),G=m(e),u(x.$$.fragment,e),k=m(e),M=y(e,"P",{"data-svelte-h":!0}),J(M)!=="svelte-j94edr"&&(M.innerHTML=I),_e=m(e),F=y(e,"P",{"data-svelte-h":!0}),J(F)!=="svelte-15h227d"&&(F.innerHTML=gt),xe=m(e),E=y(e,"BLOCKQUOTE",{class:!0,"data-svelte-h":!0}),J(E)!=="svelte-dlx2x3"&&(E.innerHTML=vt),Ze=m(e),u(Y.$$.fragment,e),Be=m(e),H=y(e,"P",{"data-svelte-h":!0}),J(H)!=="svelte-x7rgg8"&&(H.innerHTML=Ct),ke=m(e),S=y(e,"P",{"data-svelte-h":!0}),J(S)!=="svelte-kjnash"&&(S.textContent=Ut),Ee=m(e),u(z.$$.fragment,e),Re=m(e),u(Q.$$.fragment,e),Ae=m(e),u(P.$$.fragment,e),Ve=m(e),q=y(e,"P",{"data-svelte-h":!0}),J(q)!=="svelte-1qt1z72"&&(q.textContent=Gt),Le=m(e),u(D.$$.fragment,e),Ne=m(e),u(R.$$.fragment,e),We=m(e),u(K.$$.fragment,e),Xe=m(e),O=y(e,"P",{"data-svelte-h":!0}),J(O)!=="svelte-19hhhh8"&&(O.innerHTML=It),Fe=m(e),ee=y(e,"P",{"data-svelte-h":!0}),J(ee)!=="svelte-7rhllm"&&(ee.textContent=_t),Ye=m(e),te=y(e,"P",{"data-svelte-h":!0}),J(te)!=="svelte-1w2tsto"&&(te.textContent=xt),He=m(e),u(le.$$.fragment,e),Se=m(e),oe=y(e,"P",{"data-svelte-h":!0}),J(oe)!=="svelte-1acag0d"&&(oe.innerHTML=Zt),ze=m(e),se=y(e,"P",{"data-svelte-h":!0}),J(se)!=="svelte-1q2z42z"&&(se.innerHTML=Bt),Qe=m(e),u(A.$$.fragment,e),Pe=m(e),ne=y(e,"P",{"data-svelte-h":!0}),J(ne)!=="svelte-1y660ud"&&(ne.textContent=kt),qe=m(e),u(ae.$$.fragment,e),De=m(e),re=y(e,"P",{"data-svelte-h":!0}),J(re)!=="svelte-9nq0x0"&&(re.innerHTML=Et),Ke=m(e),ie=y(e,"DETAILS",{"data-svelte-h":!0}),J(ie)!=="svelte-uj5pem"&&(ie.innerHTML=Rt),Oe=m(e),pe=y(e,"P",{"data-svelte-h":!0}),J(pe)!=="svelte-nrvfwv"&&(pe.textContent=At),et=m(e),u(me.$$.fragment,e),tt=m(e),fe=y(e,"P",{"data-svelte-h":!0}),J(fe)!=="svelte-1qmpg9r"&&(fe.textContent=Vt),lt=m(e),u(he.$$.fragment,e),ot=m(e),ue=y(e,"P",{"data-svelte-h":!0}),J(ue)!=="svelte-74gx8z"&&(ue.textContent=Lt),st=m(e),$e=y(e,"P",{"data-svelte-h":!0}),J($e)!=="svelte-85ylx7"&&($e.textContent=Nt),nt=m(e),V=y(e,"BLOCKQUOTE",{class:!0,"data-svelte-h":!0}),J(V)!=="svelte-rwsljd"&&(V.innerHTML=Wt),at=m(e),ce=y(e,"P",{"data-svelte-h":!0}),J(ce)!=="svelte-cwdauv"&&(ce.textContent=Xt),rt=m(e),u(de.$$.fragment,e),it=m(e),be=y(e,"P",{"data-svelte-h":!0}),J(be)!=="svelte-1h2seea"&&(be.textContent=Ft),pt=m(e),u(L.$$.fragment,e),mt=m(e),u(Me.$$.fragment,e),ft=m(e),we=y(e,"P",{"data-svelte-h":!0}),J(we)!=="svelte-jmtuc1"&&(we.textContent=Yt),ht=m(e),u(ye.$$.fragment,e),ut=m(e),Te=y(e,"P",{"data-svelte-h":!0}),J(Te)!=="svelte-lnreu8"&&(Te.textContent=Ht),$t=m(e),u(N.$$.fragment,e),ct=m(e),Je=y(e,"P",{"data-svelte-h":!0}),J(Je)!=="svelte-1l3z7z2"&&(Je.innerHTML=St),dt=m(e),u(je.$$.fragment,e),bt=m(e),ge=y(e,"P",{"data-svelte-h":!0}),J(ge)!=="svelte-1mr2rqs"&&(ge.textContent=zt),Mt=m(e),u(W.$$.fragment,e),wt=m(e),ve=y(e,"P",{"data-svelte-h":!0}),J(ve)!=="svelte-19zk1vh"&&(ve.innerHTML=Qt),yt=m(e),X=y(e,"BLOCKQUOTE",{class:!0,"data-svelte-h":!0}),J(X)!=="svelte-so5vtc"&&(X.innerHTML=Pt),Tt=m(e),u(Ce.$$.fragment,e),Jt=m(e),Ue=y(e,"P",{}),tl(Ue).forEach(n),this.h()},h(){Ge(l,"name","hf:doc:metadata"),Ge(l,"content",Cl),Ge(E,"class","warning"),Ge(V,"class","tip"),Ge(X,"class","tip")},m(e,s){rl(document.head,l),a(e,r,s),a(e,t,s),a(e,f,s),$(o,e,s),a(e,i,s),$(v,e,s),a(e,g,s),a(e,T,s),a(e,G,s),$(x,e,s),a(e,k,s),a(e,M,s),a(e,_e,s),a(e,F,s),a(e,xe,s),a(e,E,s),a(e,Ze,s),$(Y,e,s),a(e,Be,s),a(e,H,s),a(e,ke,s),a(e,S,s),a(e,Ee,s),$(z,e,s),a(e,Re,s),$(Q,e,s),a(e,Ae,s),$(P,e,s),a(e,Ve,s),a(e,q,s),a(e,Le,s),$(D,e,s),a(e,Ne,s),$(R,e,s),a(e,We,s),$(K,e,s),a(e,Xe,s),a(e,O,s),a(e,Fe,s),a(e,ee,s),a(e,Ye,s),a(e,te,s),a(e,He,s),$(le,e,s),a(e,Se,s),a(e,oe,s),a(e,ze,s),a(e,se,s),a(e,Qe,s),$(A,e,s),a(e,Pe,s),a(e,ne,s),a(e,qe,s),$(ae,e,s),a(e,De,s),a(e,re,s),a(e,Ke,s),a(e,ie,s),a(e,Oe,s),a(e,pe,s),a(e,et,s),$(me,e,s),a(e,tt,s),a(e,fe,s),a(e,lt,s),$(he,e,s),a(e,ot,s),a(e,ue,s),a(e,st,s),a(e,$e,s),a(e,nt,s),a(e,V,s),a(e,at,s),a(e,ce,s),a(e,rt,s),$(de,e,s),a(e,it,s),a(e,be,s),a(e,pt,s),$(L,e,s),a(e,mt,s),$(Me,e,s),a(e,ft,s),a(e,we,s),a(e,ht,s),$(ye,e,s),a(e,ut,s),a(e,Te,s),a(e,$t,s),$(N,e,s),a(e,ct,s),a(e,Je,s),a(e,dt,s),$(je,e,s),a(e,bt,s),a(e,ge,s),a(e,Mt,s),$(W,e,s),a(e,wt,s),a(e,ve,s),a(e,yt,s),a(e,X,s),a(e,Tt,s),$(Ce,e,s),a(e,Jt,s),a(e,Ue,s),jt=!0},p(e,[s]){const qt={};s&2&&(qt.$$scope={dirty:s,ctx:e}),R.$set(qt);const Dt={};s&2&&(Dt.$$scope={dirty:s,ctx:e}),A.$set(Dt);const Kt={};s&2&&(Kt.$$scope={dirty:s,ctx:e}),L.$set(Kt);const Ot={};s&2&&(Ot.$$scope={dirty:s,ctx:e}),N.$set(Ot);const el={};s&2&&(el.$$scope={dirty:s,ctx:e}),W.$set(el)},i(e){jt||(c(o.$$.fragment,e),c(v.$$.fragment,e),c(x.$$.fragment,e),c(Y.$$.fragment,e),c(z.$$.fragment,e),c(Q.$$.fragment,e),c(P.$$.fragment,e),c(D.$$.fragment,e),c(R.$$.fragment,e),c(K.$$.fragment,e),c(le.$$.fragment,e),c(A.$$.fragment,e),c(ae.$$.fragment,e),c(me.$$.fragment,e),c(he.$$.fragment,e),c(de.$$.fragment,e),c(L.$$.fragment,e),c(Me.$$.fragment,e),c(ye.$$.fragment,e),c(N.$$.fragment,e),c(je.$$.fragment,e),c(W.$$.fragment,e),c(Ce.$$.fragment,e),jt=!0)},o(e){d(o.$$.fragment,e),d(v.$$.fragment,e),d(x.$$.fragment,e),d(Y.$$.fragment,e),d(z.$$.fragment,e),d(Q.$$.fragment,e),d(P.$$.fragment,e),d(D.$$.fragment,e),d(R.$$.fragment,e),d(K.$$.fragment,e),d(le.$$.fragment,e),d(A.$$.fragment,e),d(ae.$$.fragment,e),d(me.$$.fragment,e),d(he.$$.fragment,e),d(de.$$.fragment,e),d(L.$$.fragment,e),d(Me.$$.fragment,e),d(ye.$$.fragment,e),d(N.$$.fragment,e),d(je.$$.fragment,e),d(W.$$.fragment,e),d(Ce.$$.fragment,e),jt=!1},d(e){e&&(n(r),n(t),n(f),n(i),n(g),n(T),n(G),n(k),n(M),n(_e),n(F),n(xe),n(E),n(Ze),n(Be),n(H),n(ke),n(S),n(Ee),n(Re),n(Ae),n(Ve),n(q),n(Le),n(Ne),n(We),n(Xe),n(O),n(Fe),n(ee),n(Ye),n(te),n(He),n(Se),n(oe),n(ze),n(se),n(Qe),n(Pe),n(ne),n(qe),n(De),n(re),n(Ke),n(ie),n(Oe),n(pe),n(et),n(tt),n(fe),n(lt),n(ot),n(ue),n(st),n($e),n(nt),n(V),n(at),n(ce),n(rt),n(it),n(be),n(pt),n(mt),n(ft),n(we),n(ht),n(ut),n(Te),n($t),n(ct),n(Je),n(dt),n(bt),n(ge),n(Mt),n(wt),n(ve),n(yt),n(X),n(Tt),n(Jt),n(Ue)),n(l),b(o,e),b(v,e),b(x,e),b(Y,e),b(z,e),b(Q,e),b(P,e),b(D,e),b(R,e),b(K,e),b(le,e),b(A,e),b(ae,e),b(me,e),b(he,e),b(de,e),b(L,e),b(Me,e),b(ye,e),b(N,e),b(je,e),b(W,e),b(Ce,e)}}}const Cl='{"title":"Koch v1.1","local":"koch-v11","sections":[{"title":"Order and assemble the parts","local":"order-and-assemble-the-parts","sections":[],"depth":2},{"title":"Install LeRobot 🤗","local":"install-lerobot-","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":"Follower","local":"follower","sections":[],"depth":4},{"title":"Leader","local":"leader","sections":[],"depth":4}],"depth":3}],"depth":2},{"title":"Calibrate","local":"calibrate","sections":[{"title":"Follower","local":"follower","sections":[],"depth":4},{"title":"Leader","local":"leader","sections":[],"depth":4}],"depth":2}],"depth":1}';function Ul(j){return ol(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class kl extends sl{constructor(l){super(),nl(this,l,Ul,vl,ll,{})}}export{kl as component};
