import{s as tl,o as el,n as Ue}from"../chunks/scheduler.eb244325.js";import{S as ll,i as nl,e as $,s as r,c as m,h as ol,a as b,d as l,b as i,f as Pe,g as d,j as g,k as Oe,l as al,m as n,n as f,t as u,o as M,p as c,q as rl,r as il}from"../chunks/index.3fe63ad3.js";import{T as sl}from"../chunks/Tip.8a9a4ce7.js";import{C as pl}from"../chunks/CopyLLMTxtMenu.88bde5f2.js";import{C as U}from"../chunks/CodeBlock.934d290d.js";import{H as T,E as ml}from"../chunks/MermaidChart.svelte_svelte_type_style_lang.341974a5.js";import{H as Ke,a as Ce}from"../chunks/HfOption.0914e9f3.js";function dl(h){let a;return{c(){a=rl(`**Linux Only**: OpenArm currently only works on Linux. The CAN bus USB adapter
  does not have macOS drivers and has not been tested on Windows.`)},l(p){a=il(p,`**Linux Only**: OpenArm currently only works on Linux. The CAN bus USB adapter
  does not have macOS drivers and has not been tested on Windows.`)},m(p,o){n(p,a,o)},d(p){p&&l(a)}}}function fl(h){let a,p;return a=new U({props:{code:"bGVyb2JvdC1jYWxpYnJhdGUlMjAlNUMlMEElMjAlMjAlMjAlMjAtLXJvYm90LnR5cGUlM0RvcGVuYXJtX2ZvbGxvd2VyJTIwJTVDJTBBJTIwJTIwJTIwJTIwLS1yb2JvdC5wb3J0JTNEY2FuMCUyMCU1QyUwQSUyMCUyMCUyMCUyMC0tcm9ib3Quc2lkZSUzRHJpZ2h0JTIwJTVDJTBBJTIwJTIwJTIwJTIwLS1yb2JvdC5pZCUzRG15X29wZW5hcm1fZm9sbG93ZXI=",highlighted:`lerobot-calibrate \\
    --robot.type=openarm_follower \\
    --robot.port=can0 \\
    --robot.side=right \\
    --robot.id=my_openarm_follower`,wrap:!1}}),{c(){m(a.$$.fragment)},l(o){d(a.$$.fragment,o)},m(o,w){f(a,o,w),p=!0},p:Ue,i(o){p||(u(a.$$.fragment,o),p=!0)},o(o){M(a.$$.fragment,o),p=!1},d(o){c(a,o)}}}function ul(h){let a,p;return a=new U({props:{code:"ZnJvbSUyMGxlcm9ib3Qucm9ib3RzLm9wZW5hcm1fZm9sbG93ZXIlMjBpbXBvcnQlMjBPcGVuQXJtRm9sbG93ZXIlMkMlMjBPcGVuQXJtRm9sbG93ZXJDb25maWclMEElMEFjb25maWclMjAlM0QlMjBPcGVuQXJtRm9sbG93ZXJDb25maWcoJTBBJTIwJTIwJTIwJTIwcG9ydCUzRCUyMmNhbjAlMjIlMkMlMEElMjAlMjAlMjAlMjBzaWRlJTNEJTIycmlnaHQlMjIlMkMlMjAlMjAlMjMlMjBvciUyMCUyMmxlZnQlMjIlMjBmb3IlMjBsZWZ0JTIwYXJtJTBBJTIwJTIwJTIwJTIwaWQlM0QlMjJteV9vcGVuYXJtX2ZvbGxvd2VyJTIyJTJDJTBBKSUwQSUwQWZvbGxvd2VyJTIwJTNEJTIwT3BlbkFybUZvbGxvd2VyKGNvbmZpZyklMEFmb2xsb3dlci5jb25uZWN0KCklMEElMEElMjMlMjBSZWFkJTIwY3VycmVudCUyMHN0YXRlJTBBb2JzJTIwJTNEJTIwZm9sbG93ZXIuZ2V0X29ic2VydmF0aW9uKCklMEFwcmludChvYnMpJTBBJTBBJTIzJTIwU2VuZCUyMGFjdGlvbiUyMChwb3NpdGlvbiUyMGluJTIwZGVncmVlcyklMEFhY3Rpb24lMjAlM0QlMjAlN0IlMEElMjAlMjAlMjAlMjAlMjJqb2ludF8xLnBvcyUyMiUzQSUyMDAuMCUyQyUwQSUyMCUyMCUyMCUyMCUyMmpvaW50XzIucG9zJTIyJTNBJTIwMC4wJTJDJTBBJTIwJTIwJTIwJTIwJTIyam9pbnRfMy5wb3MlMjIlM0ElMjAwLjAlMkMlMEElMjAlMjAlMjAlMjAlMjJqb2ludF80LnBvcyUyMiUzQSUyMDQ1LjAlMkMlMEElMjAlMjAlMjAlMjAlMjJqb2ludF81LnBvcyUyMiUzQSUyMDAuMCUyQyUwQSUyMCUyMCUyMCUyMCUyMmpvaW50XzYucG9zJTIyJTNBJTIwMC4wJTJDJTBBJTIwJTIwJTIwJTIwJTIyam9pbnRfNy5wb3MlMjIlM0ElMjAwLjAlMkMlMEElMjAlMjAlMjAlMjAlMjJncmlwcGVyLnBvcyUyMiUzQSUyMDAuMCUyQyUwQSU3RCUwQWZvbGxvd2VyLnNlbmRfYWN0aW9uKGFjdGlvbiklMEElMEFmb2xsb3dlci5kaXNjb25uZWN0KCk=",highlighted:`<span class="hljs-keyword">from</span> lerobot.robots.openarm_follower <span class="hljs-keyword">import</span> OpenArmFollower, OpenArmFollowerConfig

config = OpenArmFollowerConfig(
    port=<span class="hljs-string">&quot;can0&quot;</span>,
    side=<span class="hljs-string">&quot;right&quot;</span>,  <span class="hljs-comment"># or &quot;left&quot; for left arm</span>
    <span class="hljs-built_in">id</span>=<span class="hljs-string">&quot;my_openarm_follower&quot;</span>,
)

follower = OpenArmFollower(config)
follower.connect()

<span class="hljs-comment"># Read current state</span>
obs = follower.get_observation()
<span class="hljs-built_in">print</span>(obs)

<span class="hljs-comment"># Send action (position in degrees)</span>
action = {
    <span class="hljs-string">&quot;joint_1.pos&quot;</span>: <span class="hljs-number">0.0</span>,
    <span class="hljs-string">&quot;joint_2.pos&quot;</span>: <span class="hljs-number">0.0</span>,
    <span class="hljs-string">&quot;joint_3.pos&quot;</span>: <span class="hljs-number">0.0</span>,
    <span class="hljs-string">&quot;joint_4.pos&quot;</span>: <span class="hljs-number">45.0</span>,
    <span class="hljs-string">&quot;joint_5.pos&quot;</span>: <span class="hljs-number">0.0</span>,
    <span class="hljs-string">&quot;joint_6.pos&quot;</span>: <span class="hljs-number">0.0</span>,
    <span class="hljs-string">&quot;joint_7.pos&quot;</span>: <span class="hljs-number">0.0</span>,
    <span class="hljs-string">&quot;gripper.pos&quot;</span>: <span class="hljs-number">0.0</span>,
}
follower.send_action(action)

follower.disconnect()`,wrap:!1}}),{c(){m(a.$$.fragment)},l(o){d(a.$$.fragment,o)},m(o,w){f(a,o,w),p=!0},p:Ue,i(o){p||(u(a.$$.fragment,o),p=!0)},o(o){M(a.$$.fragment,o),p=!1},d(o){c(a,o)}}}function Ml(h){let a,p,o,w;return a=new Ce({props:{id:"follower",option:"Command",$$slots:{default:[fl]},$$scope:{ctx:h}}}),o=new Ce({props:{id:"follower",option:"API example",$$slots:{default:[ul]},$$scope:{ctx:h}}}),{c(){m(a.$$.fragment),p=r(),m(o.$$.fragment)},l(s){d(a.$$.fragment,s),p=i(s),d(o.$$.fragment,s)},m(s,y){f(a,s,y),n(s,p,y),f(o,s,y),w=!0},p(s,y){const J={};y&2&&(J.$$scope={dirty:y,ctx:s}),a.$set(J);const C={};y&2&&(C.$$scope={dirty:y,ctx:s}),o.$set(C)},i(s){w||(u(a.$$.fragment,s),u(o.$$.fragment,s),w=!0)},o(s){M(a.$$.fragment,s),M(o.$$.fragment,s),w=!1},d(s){s&&l(p),c(a,s),c(o,s)}}}function cl(h){let a,p;return a=new U({props:{code:"bGVyb2JvdC1jYWxpYnJhdGUlMjAlNUMlMEElMjAlMjAlMjAlMjAtLXRlbGVvcC50eXBlJTNEb3BlbmFybV9sZWFkZXIlMjAlNUMlMEElMjAlMjAlMjAlMjAtLXRlbGVvcC5wb3J0JTNEY2FuMSUyMCU1QyUwQSUyMCUyMCUyMCUyMC0tdGVsZW9wLmlkJTNEbXlfb3BlbmFybV9sZWFkZXI=",highlighted:`lerobot-calibrate \\
    --teleop.type=openarm_leader \\
    --teleop.port=can1 \\
    --teleop.id=my_openarm_leader`,wrap:!1}}),{c(){m(a.$$.fragment)},l(o){d(a.$$.fragment,o)},m(o,w){f(a,o,w),p=!0},p:Ue,i(o){p||(u(a.$$.fragment,o),p=!0)},o(o){M(a.$$.fragment,o),p=!1},d(o){c(a,o)}}}function $l(h){let a,p;return a=new U({props:{code:"ZnJvbSUyMGxlcm9ib3QudGVsZW9wZXJhdG9ycy5vcGVuYXJtX2xlYWRlciUyMGltcG9ydCUyME9wZW5Bcm1MZWFkZXIlMkMlMjBPcGVuQXJtTGVhZGVyQ29uZmlnJTBBJTBBY29uZmlnJTIwJTNEJTIwT3BlbkFybUxlYWRlckNvbmZpZyglMEElMjAlMjAlMjAlMjBwb3J0JTNEJTIyY2FuMSUyMiUyQyUwQSUyMCUyMCUyMCUyMGlkJTNEJTIybXlfb3BlbmFybV9sZWFkZXIlMjIlMkMlMEElMjAlMjAlMjAlMjBtYW51YWxfY29udHJvbCUzRFRydWUlMkMlMjAlMjAlMjMlMjBEaXNhYmxlJTIwdG9ycXVlJTIwZm9yJTIwbWFudWFsJTIwbW92ZW1lbnQlMEEpJTBBJTBBbGVhZGVyJTIwJTNEJTIwT3BlbkFybUxlYWRlcihjb25maWcpJTBBbGVhZGVyLmNvbm5lY3QoKSUwQSUwQSUyMyUyMFJlYWQlMjBjdXJyZW50JTIwcG9zaXRpb24lMjAoYXMlMjBhY3Rpb24lMjB0byUyMHNlbmQlMjB0byUyMGZvbGxvd2VyKSUwQWFjdGlvbiUyMCUzRCUyMGxlYWRlci5nZXRfYWN0aW9uKCklMEFwcmludChhY3Rpb24pJTBBJTBBbGVhZGVyLmRpc2Nvbm5lY3QoKQ==",highlighted:`<span class="hljs-keyword">from</span> lerobot.teleoperators.openarm_leader <span class="hljs-keyword">import</span> OpenArmLeader, OpenArmLeaderConfig

config = OpenArmLeaderConfig(
    port=<span class="hljs-string">&quot;can1&quot;</span>,
    <span class="hljs-built_in">id</span>=<span class="hljs-string">&quot;my_openarm_leader&quot;</span>,
    manual_control=<span class="hljs-literal">True</span>,  <span class="hljs-comment"># Disable torque for manual movement</span>
)

leader = OpenArmLeader(config)
leader.connect()

<span class="hljs-comment"># Read current position (as action to send to follower)</span>
action = leader.get_action()
<span class="hljs-built_in">print</span>(action)

leader.disconnect()`,wrap:!1}}),{c(){m(a.$$.fragment)},l(o){d(a.$$.fragment,o)},m(o,w){f(a,o,w),p=!0},p:Ue,i(o){p||(u(a.$$.fragment,o),p=!0)},o(o){M(a.$$.fragment,o),p=!1},d(o){c(a,o)}}}function bl(h){let a,p,o,w;return a=new Ce({props:{id:"leader",option:"Command",$$slots:{default:[cl]},$$scope:{ctx:h}}}),o=new Ce({props:{id:"leader",option:"API example",$$slots:{default:[$l]},$$scope:{ctx:h}}}),{c(){m(a.$$.fragment),p=r(),m(o.$$.fragment)},l(s){d(a.$$.fragment,s),p=i(s),d(o.$$.fragment,s)},m(s,y){f(a,s,y),n(s,p,y),f(o,s,y),w=!0},p(s,y){const J={};y&2&&(J.$$scope={dirty:y,ctx:s}),a.$set(J);const C={};y&2&&(C.$$scope={dirty:y,ctx:s}),o.$set(C)},i(s){w||(u(a.$$.fragment,s),u(o.$$.fragment,s),w=!0)},o(s){M(a.$$.fragment,s),M(o.$$.fragment,s),w=!1},d(s){s&&l(p),c(a,s),c(o,s)}}}function wl(h){let a,p,o,w,s,y,J,C,_,je='<a href="https://openarm.dev" rel="nofollow">OpenArm</a> is an open-source 7DOF humanoid arm designed for physical AI research and deployment.',Ut,I,Ae='To get your OpenArm, assembled or DIY, and join the global community, browse verified and certified manufacturers worldwide at <a href="https://openarm.dev" rel="nofollow">openarm.dev</a>.',jt,G,At,B,ve="<li><p><strong>Human-Scale Design</strong>: OpenArm is designed with human-like proportions, scaled for a person around 160-165cm tall. This provides an optimal balance between practical reach and manageable inertia for safe, responsive operation.</p></li> <li><p><strong>Safety-First Architecture</strong>: Built with QDD backdrivable motors and high compliance, OpenArm prioritizes safe human-robot interaction while maintaining practical payload capabilities (6.0kg peak / 4.1kg nominal) for real-world tasks.</p></li> <li><p><strong>Built for Durability</strong>: Critical structural components use aluminum and stainless steel construction, ensuring robust performance for repetitive data collection and continuous research use.</p></li> <li><p><strong>Fully Accessible &amp; Buildable</strong>: Every component, from CNC parts and 3D-printed casings to electrical wiring is designed to be purchasable and buildable by individual researchers and labs, with complete fabrication data provided.</p></li> <li><p><strong>Practical &amp; Affordable</strong>: At $6,500 USD for a complete bimanual system, OpenArm delivers research-grade capabilities at a fraction of traditional humanoid robot costs.</p></li>",vt,Z,_t,j,It,x,Gt,L,_e='Before operating OpenArm, please read the <a href="https://docs.openarm.dev/getting-started/safety-guide" rel="nofollow">official safety guide</a>. Key points:',Bt,N,Ie="<li><strong>Secure installation</strong>: Fasten the arm to a flat, stable surface with screws or clamps</li> <li><strong>Safe distance</strong>: Keep body parts and objects outside the range of motion during operation</li> <li><strong>Protective equipment</strong>: Always wear safety goggles; use additional PPE as needed</li> <li><strong>Payload limits</strong>: Do not exceed specified payload limits (6.0kg peak / 4.1kg nominal per arm)</li> <li><strong>Emergency stop</strong>: Know the location and operation of the emergency stop device</li> <li><strong>Regular inspection</strong>: Check for loose screws, damaged mechanical limits, unusual noises, and wiring damage</li>",Zt,E,xt,W,Ge='Follow the official <a href="https://docs.openarm.dev" rel="nofollow">OpenArm hardware documentation</a> for:',Lt,V,Be="<li>Bill of materials and sourcing</li> <li>3D printing instructions</li> <li>Mechanical assembly</li> <li>Electrical wiring</li>",Nt,R,Ze='The hardware repositories are available at <a href="https://github.com/enactic/openarm" rel="nofollow">github.com/enactic/openarm</a>.',Et,X,Wt,Q,xe='OpenArm uses CAN bus communication with Damiao motors. Once you have the CAN bus USB adapter plugged into your Linux PC, follow the <a href="./damiao">Damiao Motors and CAN Bus guide</a> to configure the interface.',Vt,S,Le="Quick setup:",Rt,k,Xt,F,Qt,Y,Ne='Follow our <a href="./installation">Installation Guide</a>, then install the Damiao motor support:',St,D,kt,q,Ft,H,Yt,A,Dt,z,qt,P,Ee="The leader arm is used for teleoperation - manually moving it to control the follower arm.",Ht,v,zt,O,Pt,K,We="To teleoperate OpenArm with leader-follower control:",Ot,tt,Kt,et,te,lt,Ve="To teleoperate a bimanual OpenArm setup with two leader and two follower arms:",ee,nt,le,ot,ne,at,Re="To record a dataset during teleoperation:",oe,rt,ae,it,re,st,ie,pt,Xe="<thead><tr><th>Parameter</th> <th>Default</th> <th>Description</th></tr></thead> <tbody><tr><td><code>port</code></td> <td>-</td> <td>CAN interface (e.g., <code>can0</code>)</td></tr> <tr><td><code>side</code></td> <td><code>None</code></td> <td>Arm side: <code>&quot;left&quot;</code>, <code>&quot;right&quot;</code>, or <code>None</code> for custom limits</td></tr> <tr><td><code>use_can_fd</code></td> <td><code>True</code></td> <td>Enable CAN FD for higher data rates</td></tr> <tr><td><code>can_bitrate</code></td> <td><code>1000000</code></td> <td>Nominal bitrate (1 Mbps)</td></tr> <tr><td><code>can_data_bitrate</code></td> <td><code>5000000</code></td> <td>CAN FD data bitrate (5 Mbps)</td></tr> <tr><td><code>max_relative_target</code></td> <td><code>None</code></td> <td>Safety limit for relative target positions</td></tr> <tr><td><code>position_kp</code></td> <td>Per-joint</td> <td>Position control proportional gains</td></tr> <tr><td><code>position_kd</code></td> <td>Per-joint</td> <td>Position control derivative gains</td></tr></tbody>",se,mt,pe,dt,Qe="<thead><tr><th>Parameter</th> <th>Default</th> <th>Description</th></tr></thead> <tbody><tr><td><code>port</code></td> <td>-</td> <td>CAN interface (e.g., <code>can1</code>)</td></tr> <tr><td><code>manual_control</code></td> <td><code>True</code></td> <td>Disable torque for manual movement</td></tr> <tr><td><code>use_can_fd</code></td> <td><code>True</code></td> <td>Enable CAN FD for higher data rates</td></tr> <tr><td><code>can_bitrate</code></td> <td><code>1000000</code></td> <td>Nominal bitrate (1 Mbps)</td></tr> <tr><td><code>can_data_bitrate</code></td> <td><code>5000000</code></td> <td>CAN FD data bitrate (5 Mbps)</td></tr></tbody>",me,ft,de,ut,Se="OpenArm uses Damiao motors with the following default configuration:",fe,Mt,ke="<thead><tr><th>Joint</th> <th>Motor Type</th> <th>Send ID</th> <th>Recv ID</th></tr></thead> <tbody><tr><td>joint_1 (Shoulder pan)</td> <td>DM8009</td> <td>0x01</td> <td>0x11</td></tr> <tr><td>joint_2 (Shoulder lift)</td> <td>DM8009</td> <td>0x02</td> <td>0x12</td></tr> <tr><td>joint_3 (Shoulder rotation)</td> <td>DM4340</td> <td>0x03</td> <td>0x13</td></tr> <tr><td>joint_4 (Elbow flex)</td> <td>DM4340</td> <td>0x04</td> <td>0x14</td></tr> <tr><td>joint_5 (Wrist roll)</td> <td>DM4310</td> <td>0x05</td> <td>0x15</td></tr> <tr><td>joint_6 (Wrist pitch)</td> <td>DM4310</td> <td>0x06</td> <td>0x16</td></tr> <tr><td>joint_7 (Wrist rotation)</td> <td>DM4310</td> <td>0x07</td> <td>0x17</td></tr> <tr><td>gripper</td> <td>DM4310</td> <td>0x08</td> <td>0x18</td></tr></tbody>",ue,ct,Me,$t,ce,bt,Fe='<li>Check power supply connections</li> <li>Verify CAN wiring (CAN-H, CAN-L, GND)</li> <li>Run diagnostics: <code>lerobot-setup-can --mode=test --interfaces=can0</code></li> <li>See the <a href="./damiao#troubleshooting">Damiao troubleshooting guide</a> for more details</li>',$e,wt,be,yt,Ye="Ensure the CAN interface is configured:",we,gt,ye,Tt,ge,ht,De='<li><a href="https://openarm.dev" rel="nofollow">OpenArm Website</a></li> <li><a href="https://docs.openarm.dev" rel="nofollow">OpenArm Documentation</a></li> <li><a href="https://github.com/enactic/openarm" rel="nofollow">OpenArm GitHub</a></li> <li><a href="https://docs.openarm.dev/getting-started/safety-guide" rel="nofollow">Safety Guide</a></li> <li><a href="./damiao">Damiao Motors and CAN Bus</a></li>',Te,Jt,he,Ct,Je;return s=new pl({props:{containerStyle:"float: right; margin-left: 10px; display: inline-flex; position: relative; z-index: 10;"}}),J=new T({props:{title:"OpenArm",local:"openarm",headingTag:"h1"}}),G=new T({props:{title:"What’s Unique?",local:"whats-unique",headingTag:"h2"}}),Z=new T({props:{title:"Platform Requirements",local:"platform-requirements",headingTag:"h2"}}),j=new sl({props:{warning:!0,$$slots:{default:[dl]},$$scope:{ctx:h}}}),x=new T({props:{title:"Safety Guide",local:"safety-guide",headingTag:"h2"}}),E=new T({props:{title:"Hardware Setup",local:"hardware-setup",headingTag:"h2"}}),X=new T({props:{title:"CAN Bus Setup",local:"can-bus-setup",headingTag:"h2"}}),k=new U({props:{code:"JTIzJTIwU2V0dXAlMjBDQU4lMjBpbnRlcmZhY2VzJTBBbGVyb2JvdC1zZXR1cC1jYW4lMjAtLW1vZGUlM0RzZXR1cCUyMC0taW50ZXJmYWNlcyUzRGNhbjAlMkNjYW4xJTBBJTBBJTIzJTIwVGVzdCUyMG1vdG9yJTIwY29tbXVuaWNhdGlvbiUwQWxlcm9ib3Qtc2V0dXAtY2FuJTIwLS1tb2RlJTNEdGVzdCUyMC0taW50ZXJmYWNlcyUzRGNhbjAlMkNjYW4x",highlighted:`<span class="hljs-comment"># Setup CAN interfaces</span>
lerobot-setup-can --mode=setup --interfaces=can0,can1

<span class="hljs-comment"># Test motor communication</span>
lerobot-setup-can --mode=<span class="hljs-built_in">test</span> --interfaces=can0,can1`,wrap:!1}}),F=new T({props:{title:"Install LeRobot 🤗",local:"install-lerobot-",headingTag:"h2"}}),D=new U({props:{code:"cGlwJTIwaW5zdGFsbCUyMC1lJTIwJTIyLiU1QmRhbWlhbyU1RCUyMg==",highlighted:'pip install -e <span class="hljs-string">&quot;.[damiao]&quot;</span>',wrap:!1}}),q=new T({props:{title:"Usage",local:"usage",headingTag:"h2"}}),H=new T({props:{title:"Follower Arm (Robot)",local:"follower-arm-robot",headingTag:"h3"}}),A=new Ke({props:{id:"follower",options:["Command","API example"],$$slots:{default:[Ml]},$$scope:{ctx:h}}}),z=new T({props:{title:"Leader Arm (Teleoperator)",local:"leader-arm-teleoperator",headingTag:"h3"}}),v=new Ke({props:{id:"leader",options:["Command","API example"],$$slots:{default:[bl]},$$scope:{ctx:h}}}),O=new T({props:{title:"Teleoperation",local:"teleoperation",headingTag:"h3"}}),tt=new U({props:{code:"bGVyb2JvdC10ZWxlb3BlcmF0ZSUyMCU1QyUwQSUyMCUyMCUyMCUyMC0tcm9ib3QudHlwZSUzRG9wZW5hcm1fZm9sbG93ZXIlMjAlNUMlMEElMjAlMjAlMjAlMjAtLXJvYm90LnBvcnQlM0RjYW4wJTIwJTVDJTBBJTIwJTIwJTIwJTIwLS1yb2JvdC5zaWRlJTNEcmlnaHQlMjAlNUMlMEElMjAlMjAlMjAlMjAtLXJvYm90LmlkJTNEbXlfZm9sbG93ZXIlMjAlNUMlMEElMjAlMjAlMjAlMjAtLXRlbGVvcC50eXBlJTNEb3BlbmFybV9sZWFkZXIlMjAlNUMlMEElMjAlMjAlMjAlMjAtLXRlbGVvcC5wb3J0JTNEY2FuMSUyMCU1QyUwQSUyMCUyMCUyMCUyMC0tdGVsZW9wLmlkJTNEbXlfbGVhZGVy",highlighted:`lerobot-teleoperate \\
    --robot.type=openarm_follower \\
    --robot.port=can0 \\
    --robot.side=right \\
    --robot.id=my_follower \\
    --teleop.type=openarm_leader \\
    --teleop.port=can1 \\
    --teleop.id=my_leader`,wrap:!1}}),et=new T({props:{title:"Bimanual Teleoperation",local:"bimanual-teleoperation",headingTag:"h3"}}),nt=new U({props:{code:"bGVyb2JvdC10ZWxlb3BlcmF0ZSUyMCU1QyUwQSUyMCUyMCUyMCUyMC0tcm9ib3QudHlwZSUzRGJpX29wZW5hcm1fZm9sbG93ZXIlMjAlNUMlMEElMjAlMjAlMjAlMjAtLXJvYm90LmxlZnRfYXJtX2NvbmZpZy5wb3J0JTNEY2FuMCUyMCU1QyUwQSUyMCUyMCUyMCUyMC0tcm9ib3QubGVmdF9hcm1fY29uZmlnLnNpZGUlM0RsZWZ0JTIwJTVDJTBBJTIwJTIwJTIwJTIwLS1yb2JvdC5yaWdodF9hcm1fY29uZmlnLnBvcnQlM0RjYW4xJTIwJTVDJTBBJTIwJTIwJTIwJTIwLS1yb2JvdC5yaWdodF9hcm1fY29uZmlnLnNpZGUlM0RyaWdodCUyMCU1QyUwQSUyMCUyMCUyMCUyMC0tcm9ib3QuaWQlM0RteV9iaW1hbnVhbF9mb2xsb3dlciUyMCU1QyUwQSUyMCUyMCUyMCUyMC0tdGVsZW9wLnR5cGUlM0RiaV9vcGVuYXJtX2xlYWRlciUyMCU1QyUwQSUyMCUyMCUyMCUyMC0tdGVsZW9wLmxlZnRfYXJtX2NvbmZpZy5wb3J0JTNEY2FuMiUyMCU1QyUwQSUyMCUyMCUyMCUyMC0tdGVsZW9wLnJpZ2h0X2FybV9jb25maWcucG9ydCUzRGNhbjMlMjAlNUMlMEElMjAlMjAlMjAlMjAtLXRlbGVvcC5pZCUzRG15X2JpbWFudWFsX2xlYWRlcg==",highlighted:`lerobot-teleoperate \\
    --robot.type=bi_openarm_follower \\
    --robot.left_arm_config.port=can0 \\
    --robot.left_arm_config.side=left \\
    --robot.right_arm_config.port=can1 \\
    --robot.right_arm_config.side=right \\
    --robot.id=my_bimanual_follower \\
    --teleop.type=bi_openarm_leader \\
    --teleop.left_arm_config.port=can2 \\
    --teleop.right_arm_config.port=can3 \\
    --teleop.id=my_bimanual_leader`,wrap:!1}}),ot=new T({props:{title:"Recording Data",local:"recording-data",headingTag:"h3"}}),rt=new U({props:{code:"bGVyb2JvdC1yZWNvcmQlMjAlNUMlMEElMjAlMjAlMjAlMjAtLXJvYm90LnR5cGUlM0RvcGVuYXJtX2ZvbGxvd2VyJTIwJTVDJTBBJTIwJTIwJTIwJTIwLS1yb2JvdC5wb3J0JTNEY2FuMCUyMCU1QyUwQSUyMCUyMCUyMCUyMC0tcm9ib3Quc2lkZSUzRHJpZ2h0JTIwJTVDJTBBJTIwJTIwJTIwJTIwLS1yb2JvdC5pZCUzRG15X2ZvbGxvd2VyJTIwJTVDJTBBJTIwJTIwJTIwJTIwLS10ZWxlb3AudHlwZSUzRG9wZW5hcm1fbGVhZGVyJTIwJTVDJTBBJTIwJTIwJTIwJTIwLS10ZWxlb3AucG9ydCUzRGNhbjElMjAlNUMlMEElMjAlMjAlMjAlMjAtLXRlbGVvcC5pZCUzRG15X2xlYWRlciUyMCU1QyUwQSUyMCUyMCUyMCUyMC0tcmVwby1pZCUzRG15X2hmX3VzZXJuYW1lJTJGbXlfb3BlbmFybV9kYXRhc2V0JTIwJTVDJTBBJTIwJTIwJTIwJTIwLS1mcHMlM0QzMCUyMCU1QyUwQSUyMCUyMCUyMCUyMC0tbnVtLWVwaXNvZGVzJTNEMTA=",highlighted:`lerobot-record \\
    --robot.type=openarm_follower \\
    --robot.port=can0 \\
    --robot.side=right \\
    --robot.id=my_follower \\
    --teleop.type=openarm_leader \\
    --teleop.port=can1 \\
    --teleop.id=my_leader \\
    --repo-id=my_hf_username/my_openarm_dataset \\
    --fps=30 \\
    --num-episodes=10`,wrap:!1}}),it=new T({props:{title:"Configuration Options",local:"configuration-options",headingTag:"h2"}}),st=new T({props:{title:"Follower Configuration",local:"follower-configuration",headingTag:"h3"}}),mt=new T({props:{title:"Leader Configuration",local:"leader-configuration",headingTag:"h3"}}),ft=new T({props:{title:"Motor Configuration",local:"motor-configuration",headingTag:"h2"}}),ct=new T({props:{title:"Troubleshooting",local:"troubleshooting",headingTag:"h2"}}),$t=new T({props:{title:"No Response from Motors",local:"no-response-from-motors",headingTag:"h3"}}),wt=new T({props:{title:"CAN Interface Not Found",local:"can-interface-not-found",headingTag:"h3"}}),gt=new U({props:{code:"aXAlMjBsaW5rJTIwc2hvdyUyMGNhbjA=",highlighted:'ip <span class="hljs-built_in">link</span> show can0',wrap:!1}}),Tt=new T({props:{title:"Resources",local:"resources",headingTag:"h2"}}),Jt=new ml({props:{source:"https://github.com/huggingface/lerobot/blob/main/docs/source/openarm.mdx"}}),{c(){a=$("meta"),p=r(),o=$("p"),w=r(),m(s.$$.fragment),y=r(),m(J.$$.fragment),C=r(),_=$("p"),_.innerHTML=je,Ut=r(),I=$("p"),I.innerHTML=Ae,jt=r(),m(G.$$.fragment),At=r(),B=$("ul"),B.innerHTML=ve,vt=r(),m(Z.$$.fragment),_t=r(),m(j.$$.fragment),It=r(),m(x.$$.fragment),Gt=r(),L=$("p"),L.innerHTML=_e,Bt=r(),N=$("ul"),N.innerHTML=Ie,Zt=r(),m(E.$$.fragment),xt=r(),W=$("p"),W.innerHTML=Ge,Lt=r(),V=$("ul"),V.innerHTML=Be,Nt=r(),R=$("p"),R.innerHTML=Ze,Et=r(),m(X.$$.fragment),Wt=r(),Q=$("p"),Q.innerHTML=xe,Vt=r(),S=$("p"),S.textContent=Le,Rt=r(),m(k.$$.fragment),Xt=r(),m(F.$$.fragment),Qt=r(),Y=$("p"),Y.innerHTML=Ne,St=r(),m(D.$$.fragment),kt=r(),m(q.$$.fragment),Ft=r(),m(H.$$.fragment),Yt=r(),m(A.$$.fragment),Dt=r(),m(z.$$.fragment),qt=r(),P=$("p"),P.textContent=Ee,Ht=r(),m(v.$$.fragment),zt=r(),m(O.$$.fragment),Pt=r(),K=$("p"),K.textContent=We,Ot=r(),m(tt.$$.fragment),Kt=r(),m(et.$$.fragment),te=r(),lt=$("p"),lt.textContent=Ve,ee=r(),m(nt.$$.fragment),le=r(),m(ot.$$.fragment),ne=r(),at=$("p"),at.textContent=Re,oe=r(),m(rt.$$.fragment),ae=r(),m(it.$$.fragment),re=r(),m(st.$$.fragment),ie=r(),pt=$("table"),pt.innerHTML=Xe,se=r(),m(mt.$$.fragment),pe=r(),dt=$("table"),dt.innerHTML=Qe,me=r(),m(ft.$$.fragment),de=r(),ut=$("p"),ut.textContent=Se,fe=r(),Mt=$("table"),Mt.innerHTML=ke,ue=r(),m(ct.$$.fragment),Me=r(),m($t.$$.fragment),ce=r(),bt=$("ol"),bt.innerHTML=Fe,$e=r(),m(wt.$$.fragment),be=r(),yt=$("p"),yt.textContent=Ye,we=r(),m(gt.$$.fragment),ye=r(),m(Tt.$$.fragment),ge=r(),ht=$("ul"),ht.innerHTML=De,Te=r(),m(Jt.$$.fragment),he=r(),Ct=$("p"),this.h()},l(t){const e=ol("svelte-u9bgzb",document.head);a=b(e,"META",{name:!0,content:!0}),e.forEach(l),p=i(t),o=b(t,"P",{}),Pe(o).forEach(l),w=i(t),d(s.$$.fragment,t),y=i(t),d(J.$$.fragment,t),C=i(t),_=b(t,"P",{"data-svelte-h":!0}),g(_)!=="svelte-1c1ybvz"&&(_.innerHTML=je),Ut=i(t),I=b(t,"P",{"data-svelte-h":!0}),g(I)!=="svelte-1n08ok3"&&(I.innerHTML=Ae),jt=i(t),d(G.$$.fragment,t),At=i(t),B=b(t,"UL",{"data-svelte-h":!0}),g(B)!=="svelte-bkm8qa"&&(B.innerHTML=ve),vt=i(t),d(Z.$$.fragment,t),_t=i(t),d(j.$$.fragment,t),It=i(t),d(x.$$.fragment,t),Gt=i(t),L=b(t,"P",{"data-svelte-h":!0}),g(L)!=="svelte-1wqewyn"&&(L.innerHTML=_e),Bt=i(t),N=b(t,"UL",{"data-svelte-h":!0}),g(N)!=="svelte-190ak9o"&&(N.innerHTML=Ie),Zt=i(t),d(E.$$.fragment,t),xt=i(t),W=b(t,"P",{"data-svelte-h":!0}),g(W)!=="svelte-1ejl3f8"&&(W.innerHTML=Ge),Lt=i(t),V=b(t,"UL",{"data-svelte-h":!0}),g(V)!=="svelte-11632aj"&&(V.innerHTML=Be),Nt=i(t),R=b(t,"P",{"data-svelte-h":!0}),g(R)!=="svelte-18y5rsv"&&(R.innerHTML=Ze),Et=i(t),d(X.$$.fragment,t),Wt=i(t),Q=b(t,"P",{"data-svelte-h":!0}),g(Q)!=="svelte-mni9of"&&(Q.innerHTML=xe),Vt=i(t),S=b(t,"P",{"data-svelte-h":!0}),g(S)!=="svelte-17e55a0"&&(S.textContent=Le),Rt=i(t),d(k.$$.fragment,t),Xt=i(t),d(F.$$.fragment,t),Qt=i(t),Y=b(t,"P",{"data-svelte-h":!0}),g(Y)!=="svelte-1xi3rjb"&&(Y.innerHTML=Ne),St=i(t),d(D.$$.fragment,t),kt=i(t),d(q.$$.fragment,t),Ft=i(t),d(H.$$.fragment,t),Yt=i(t),d(A.$$.fragment,t),Dt=i(t),d(z.$$.fragment,t),qt=i(t),P=b(t,"P",{"data-svelte-h":!0}),g(P)!=="svelte-1imk6bz"&&(P.textContent=Ee),Ht=i(t),d(v.$$.fragment,t),zt=i(t),d(O.$$.fragment,t),Pt=i(t),K=b(t,"P",{"data-svelte-h":!0}),g(K)!=="svelte-dmj8z0"&&(K.textContent=We),Ot=i(t),d(tt.$$.fragment,t),Kt=i(t),d(et.$$.fragment,t),te=i(t),lt=b(t,"P",{"data-svelte-h":!0}),g(lt)!=="svelte-7tbqsh"&&(lt.textContent=Ve),ee=i(t),d(nt.$$.fragment,t),le=i(t),d(ot.$$.fragment,t),ne=i(t),at=b(t,"P",{"data-svelte-h":!0}),g(at)!=="svelte-1wcf217"&&(at.textContent=Re),oe=i(t),d(rt.$$.fragment,t),ae=i(t),d(it.$$.fragment,t),re=i(t),d(st.$$.fragment,t),ie=i(t),pt=b(t,"TABLE",{"data-svelte-h":!0}),g(pt)!=="svelte-1c9pgt"&&(pt.innerHTML=Xe),se=i(t),d(mt.$$.fragment,t),pe=i(t),dt=b(t,"TABLE",{"data-svelte-h":!0}),g(dt)!=="svelte-18xqusx"&&(dt.innerHTML=Qe),me=i(t),d(ft.$$.fragment,t),de=i(t),ut=b(t,"P",{"data-svelte-h":!0}),g(ut)!=="svelte-16n2h1g"&&(ut.textContent=Se),fe=i(t),Mt=b(t,"TABLE",{"data-svelte-h":!0}),g(Mt)!=="svelte-1kf38l5"&&(Mt.innerHTML=ke),ue=i(t),d(ct.$$.fragment,t),Me=i(t),d($t.$$.fragment,t),ce=i(t),bt=b(t,"OL",{"data-svelte-h":!0}),g(bt)!=="svelte-7qsqus"&&(bt.innerHTML=Fe),$e=i(t),d(wt.$$.fragment,t),be=i(t),yt=b(t,"P",{"data-svelte-h":!0}),g(yt)!=="svelte-1kctham"&&(yt.textContent=Ye),we=i(t),d(gt.$$.fragment,t),ye=i(t),d(Tt.$$.fragment,t),ge=i(t),ht=b(t,"UL",{"data-svelte-h":!0}),g(ht)!=="svelte-51ga0l"&&(ht.innerHTML=De),Te=i(t),d(Jt.$$.fragment,t),he=i(t),Ct=b(t,"P",{}),Pe(Ct).forEach(l),this.h()},h(){Oe(a,"name","hf:doc:metadata"),Oe(a,"content",yl)},m(t,e){al(document.head,a),n(t,p,e),n(t,o,e),n(t,w,e),f(s,t,e),n(t,y,e),f(J,t,e),n(t,C,e),n(t,_,e),n(t,Ut,e),n(t,I,e),n(t,jt,e),f(G,t,e),n(t,At,e),n(t,B,e),n(t,vt,e),f(Z,t,e),n(t,_t,e),f(j,t,e),n(t,It,e),f(x,t,e),n(t,Gt,e),n(t,L,e),n(t,Bt,e),n(t,N,e),n(t,Zt,e),f(E,t,e),n(t,xt,e),n(t,W,e),n(t,Lt,e),n(t,V,e),n(t,Nt,e),n(t,R,e),n(t,Et,e),f(X,t,e),n(t,Wt,e),n(t,Q,e),n(t,Vt,e),n(t,S,e),n(t,Rt,e),f(k,t,e),n(t,Xt,e),f(F,t,e),n(t,Qt,e),n(t,Y,e),n(t,St,e),f(D,t,e),n(t,kt,e),f(q,t,e),n(t,Ft,e),f(H,t,e),n(t,Yt,e),f(A,t,e),n(t,Dt,e),f(z,t,e),n(t,qt,e),n(t,P,e),n(t,Ht,e),f(v,t,e),n(t,zt,e),f(O,t,e),n(t,Pt,e),n(t,K,e),n(t,Ot,e),f(tt,t,e),n(t,Kt,e),f(et,t,e),n(t,te,e),n(t,lt,e),n(t,ee,e),f(nt,t,e),n(t,le,e),f(ot,t,e),n(t,ne,e),n(t,at,e),n(t,oe,e),f(rt,t,e),n(t,ae,e),f(it,t,e),n(t,re,e),f(st,t,e),n(t,ie,e),n(t,pt,e),n(t,se,e),f(mt,t,e),n(t,pe,e),n(t,dt,e),n(t,me,e),f(ft,t,e),n(t,de,e),n(t,ut,e),n(t,fe,e),n(t,Mt,e),n(t,ue,e),f(ct,t,e),n(t,Me,e),f($t,t,e),n(t,ce,e),n(t,bt,e),n(t,$e,e),f(wt,t,e),n(t,be,e),n(t,yt,e),n(t,we,e),f(gt,t,e),n(t,ye,e),f(Tt,t,e),n(t,ge,e),n(t,ht,e),n(t,Te,e),f(Jt,t,e),n(t,he,e),n(t,Ct,e),Je=!0},p(t,[e]){const qe={};e&2&&(qe.$$scope={dirty:e,ctx:t}),j.$set(qe);const He={};e&2&&(He.$$scope={dirty:e,ctx:t}),A.$set(He);const ze={};e&2&&(ze.$$scope={dirty:e,ctx:t}),v.$set(ze)},i(t){Je||(u(s.$$.fragment,t),u(J.$$.fragment,t),u(G.$$.fragment,t),u(Z.$$.fragment,t),u(j.$$.fragment,t),u(x.$$.fragment,t),u(E.$$.fragment,t),u(X.$$.fragment,t),u(k.$$.fragment,t),u(F.$$.fragment,t),u(D.$$.fragment,t),u(q.$$.fragment,t),u(H.$$.fragment,t),u(A.$$.fragment,t),u(z.$$.fragment,t),u(v.$$.fragment,t),u(O.$$.fragment,t),u(tt.$$.fragment,t),u(et.$$.fragment,t),u(nt.$$.fragment,t),u(ot.$$.fragment,t),u(rt.$$.fragment,t),u(it.$$.fragment,t),u(st.$$.fragment,t),u(mt.$$.fragment,t),u(ft.$$.fragment,t),u(ct.$$.fragment,t),u($t.$$.fragment,t),u(wt.$$.fragment,t),u(gt.$$.fragment,t),u(Tt.$$.fragment,t),u(Jt.$$.fragment,t),Je=!0)},o(t){M(s.$$.fragment,t),M(J.$$.fragment,t),M(G.$$.fragment,t),M(Z.$$.fragment,t),M(j.$$.fragment,t),M(x.$$.fragment,t),M(E.$$.fragment,t),M(X.$$.fragment,t),M(k.$$.fragment,t),M(F.$$.fragment,t),M(D.$$.fragment,t),M(q.$$.fragment,t),M(H.$$.fragment,t),M(A.$$.fragment,t),M(z.$$.fragment,t),M(v.$$.fragment,t),M(O.$$.fragment,t),M(tt.$$.fragment,t),M(et.$$.fragment,t),M(nt.$$.fragment,t),M(ot.$$.fragment,t),M(rt.$$.fragment,t),M(it.$$.fragment,t),M(st.$$.fragment,t),M(mt.$$.fragment,t),M(ft.$$.fragment,t),M(ct.$$.fragment,t),M($t.$$.fragment,t),M(wt.$$.fragment,t),M(gt.$$.fragment,t),M(Tt.$$.fragment,t),M(Jt.$$.fragment,t),Je=!1},d(t){t&&(l(p),l(o),l(w),l(y),l(C),l(_),l(Ut),l(I),l(jt),l(At),l(B),l(vt),l(_t),l(It),l(Gt),l(L),l(Bt),l(N),l(Zt),l(xt),l(W),l(Lt),l(V),l(Nt),l(R),l(Et),l(Wt),l(Q),l(Vt),l(S),l(Rt),l(Xt),l(Qt),l(Y),l(St),l(kt),l(Ft),l(Yt),l(Dt),l(qt),l(P),l(Ht),l(zt),l(Pt),l(K),l(Ot),l(Kt),l(te),l(lt),l(ee),l(le),l(ne),l(at),l(oe),l(ae),l(re),l(ie),l(pt),l(se),l(pe),l(dt),l(me),l(de),l(ut),l(fe),l(Mt),l(ue),l(Me),l(ce),l(bt),l($e),l(be),l(yt),l(we),l(ye),l(ge),l(ht),l(Te),l(he),l(Ct)),l(a),c(s,t),c(J,t),c(G,t),c(Z,t),c(j,t),c(x,t),c(E,t),c(X,t),c(k,t),c(F,t),c(D,t),c(q,t),c(H,t),c(A,t),c(z,t),c(v,t),c(O,t),c(tt,t),c(et,t),c(nt,t),c(ot,t),c(rt,t),c(it,t),c(st,t),c(mt,t),c(ft,t),c(ct,t),c($t,t),c(wt,t),c(gt,t),c(Tt,t),c(Jt,t)}}}const yl='{"title":"OpenArm","local":"openarm","sections":[{"title":"What’s Unique?","local":"whats-unique","sections":[],"depth":2},{"title":"Platform Requirements","local":"platform-requirements","sections":[],"depth":2},{"title":"Safety Guide","local":"safety-guide","sections":[],"depth":2},{"title":"Hardware Setup","local":"hardware-setup","sections":[],"depth":2},{"title":"CAN Bus Setup","local":"can-bus-setup","sections":[],"depth":2},{"title":"Install LeRobot 🤗","local":"install-lerobot-","sections":[],"depth":2},{"title":"Usage","local":"usage","sections":[{"title":"Follower Arm (Robot)","local":"follower-arm-robot","sections":[],"depth":3},{"title":"Leader Arm (Teleoperator)","local":"leader-arm-teleoperator","sections":[],"depth":3},{"title":"Teleoperation","local":"teleoperation","sections":[],"depth":3},{"title":"Bimanual Teleoperation","local":"bimanual-teleoperation","sections":[],"depth":3},{"title":"Recording Data","local":"recording-data","sections":[],"depth":3}],"depth":2},{"title":"Configuration Options","local":"configuration-options","sections":[{"title":"Follower Configuration","local":"follower-configuration","sections":[],"depth":3},{"title":"Leader Configuration","local":"leader-configuration","sections":[],"depth":3}],"depth":2},{"title":"Motor Configuration","local":"motor-configuration","sections":[],"depth":2},{"title":"Troubleshooting","local":"troubleshooting","sections":[{"title":"No Response from Motors","local":"no-response-from-motors","sections":[],"depth":3},{"title":"CAN Interface Not Found","local":"can-interface-not-found","sections":[],"depth":3}],"depth":2},{"title":"Resources","local":"resources","sections":[],"depth":2}],"depth":1}';function gl(h){return el(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class vl extends ll{constructor(a){super(),nl(this,a,gl,wl,tl,{})}}export{vl as component};
