Spaces:
Running
Running
File size: 29,620 Bytes
f8c42f8 6e76b0c f8c42f8 b4b4aa7 f8c42f8 b4b4aa7 f8c42f8 b4b4aa7 f8c42f8 b4b4aa7 f8c42f8 6e76b0c f8c42f8 7717ba2 6e76b0c f8c42f8 7717ba2 f8c42f8 6e76b0c f8c42f8 6e76b0c f8c42f8 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 | // Catalogs used by app.js, checked October 2026. Figures are indicative.
// payload: rated kg per arm (at full reach where the vendor gives both), reach: m, mass: kg per unit,
// power: typical W in operation; pe:true marks an estimate (vendor publishes none), otherwise datasheet or reseller.
// price: USD, list or reported street price; pn: price note.
const D = 'https://huggingface.co/docs/lerobot/';
const HF = 'https://huggingface.co/datasets/';
const ex = (t, d, u) => ({t, d, u});
const ROBOTS = [
// Vendor catalog expansion. Specs checked 2026-10-23 against the linked sources.
// null price means a quote is required; never count it as a free robot.
// SDK/ROS access alone does not establish LeRobot compatibility.
{id:'gofa5', name:'GoFa 5', maker:'ABB', kind:'arm', dof:6, payload:5, reach:0.95, mass:28, power:250, pe:true, price:null,
lerobot:null, doc:'https://new.abb.com/docs/librariesprovider89/abb-ro-sp/9370_gofa-10-12_d%C3%ADptico_digital.pdf',
why:'Compact industrial cobot with joint torque sensing. Reach uses the conservative 950 mm wrist rating (1,050 mm at the flange).',
integration:'Use the ABB controller interfaces and validate a LeRobot adapter for your controller and software options.', examples:[]},
{id:'gofa10', name:'GoFa 10', maker:'ABB', kind:'arm', dof:6, payload:10, reach:1.52, mass:51, power:350, pe:true, price:null,
lerobot:null, doc:'https://new.abb.com/docs/librariesprovider89/abb-ro-sp/9370_gofa-10-12_d%C3%ADptico_digital.pdf',
why:'Longer-reach cobot for machine tending and material handling. Reach is rated at the wrist; flange reach is 1.62 m.',
integration:'Use the ABB controller interfaces and validate a LeRobot adapter for your controller and software options.', examples:[]},
{id:'gofa12', name:'GoFa 12', maker:'ABB', kind:'arm', dof:6, payload:12, reach:1.27, mass:48, power:350, pe:true, price:null,
lerobot:null, doc:'https://new.abb.com/docs/librariesprovider89/abb-ro-sp/9370_gofa-10-12_d%C3%ADptico_digital.pdf',
why:'Higher-payload GoFa for handling heavier parts. Reach is rated at the wrist; flange reach is 1.37 m.',
integration:'Use the ABB controller interfaces and validate a LeRobot adapter for your controller and software options.', examples:[]},
{id:'m0609', name:'M0609', maker:'Doosan Robotics', kind:'arm', dof:6, payload:6, reach:0.9, mass:27.5, power:370, pe:true, price:null,
lerobot:null, doc:'https://www.doosanrobotics.com/en/product-solutions/product/m-series/m0609/',
why:'Six-axis torque-sensing cobot for compact assembly and machine-tending cells.',
integration:'Doosan provides ROS 2 drivers. A LeRobot adapter and controller compatibility check are still required.',
examples:[ex('Doosan ROS 2','manufacturer-maintained driver; not a LeRobot plugin','https://github.com/DoosanRobotics/doosan-robot2')]},
{id:'m1013', name:'M1013', maker:'Doosan Robotics', kind:'arm', dof:6, payload:10, reach:1.3, mass:34, power:390, pe:true, price:null,
lerobot:null, doc:'https://www.doosanrobotics.com/pdf/catalog/External_DoosanRobotics_renew_eng.pdf',
why:'A longer-reach M-series cobot for larger work areas and 10 kg handling tasks.',
integration:'Doosan provides ROS 2 drivers. A LeRobot adapter and controller compatibility check are still required.',
examples:[ex('Doosan ROS 2','manufacturer-maintained driver; not a LeRobot plugin','https://github.com/DoosanRobotics/doosan-robot2')]},
{id:'cr5', name:'CR5', maker:'DOBOT', kind:'arm', dof:6, payload:5, reach:0.9, mass:25, power:150, price:null,
lerobot:null, doc:'https://www.dobot.cn/products/cr-series/cr5.html',
why:'Six-axis cobot for assembly, sorting and machine tending, with TCP/IP and Modbus interfaces.',
integration:'Connect through the vendor controller API, then implement and validate a LeRobot Robot adapter.', examples:[]},
{id:'tm5900', name:'TM5-900', maker:'Techman / OMRON', kind:'arm', dof:6, payload:4, reach:0.9, mass:22.6, power:220, price:null,
lerobot:null, doc:'https://www.fa.omron.com.cn/data_pdf/mnu/i623-e-02_tm5.pdf',
why:'Vision-equipped cobot for inspection and tabletop handling, programmed through TMflow.',
integration:'Check the external-control interface for your TM controller; a validated LeRobot adapter is required.', examples:[]},
{id:'mycobot280', name:'myCobot 280 M5', maker:'Elephant Robotics', kind:'arm', dof:6, payload:0.25, reach:0.28, mass:0.85, power:20, pe:true, price:null,
lerobot:null, doc:'https://docs.elephantrobotics.com/docs/mycobot_280_m5_en/1-ProductInformation/1.ProductIntroduction/1-ProductIntroduction.html',
why:'Small desktop arm for education and lightweight manipulation; check the hardware revision when ordering.',
integration:'Use the vendor Python/ROS tooling as the starting point for a LeRobot adapter; native support is not verified.', examples:[]},
// ---- low-cost / open arms
{id:'so101', name:'SO-101', maker:'The Robot Studio', kind:'arm', dof:6, payload:0.3, reach:0.42, mass:0.8, power:10, pe:true, price:130, open:true,
lerobot:'native', type:'so101_follower', teleop:'so101_leader', doc:D+'so101', pn:'per arm in a kit; add about $110 for the leader arm used to teleoperate',
why:'The reference LeRobot arm: the most community data, tutorials and pretrained checkpoints.',
examples:[ex('SmolVLA SO-101 pick and place','50 episodes of cube pick-and-place used in the SmolVLA paper',HF+'lerobot/svla_so101_pickplace'),
ex('SmolVLA base model','VLA pretrained on community SO-100/101 data','https://huggingface.co/lerobot/smolvla_base'),
ex('Community pick and place','103 episodes recorded by a community member',HF+'kmg0620/so101_bomb_pick_place_v1')]},
{id:'omx', name:'OpenMANIPULATOR-X', maker:'ROBOTIS', kind:'arm', dof:5, payload:0.5, reach:0.38, mass:0.7, power:20, pe:true, price:1700, open:true,
lerobot:'community', doc:'https://emanual.robotis.com/docs/en/platform/openmanipulator_x/overview/', why:'Dynamixel-based education arm with ROS 2 support.',
examples:[ex('Pick and place, 1,114 episodes','large single-task dataset',HF+'Hadolking/openmanipulator-pickplace-dataset-1114ep'),
ex('Top-and-side view dataset','1,800 episodes with two cameras',HF+'yechan3219/openmanipulator_x_18k_episode_topsideview')]},
{id:'lite6', name:'Lite 6', maker:'UFACTORY', kind:'arm', dof:6, payload:0.6, reach:0.44, mass:8, power:150, price:2999,
lerobot:'plugin', doc:D+'third_party_robots', why:'Cheapest industrial-style arm from UFACTORY, same SDK as xArm.',
examples:[ex('Cube in box, vacuum gripper','50 episodes',HF+'ReubenLim/xarm_lite6_vacuum_cube_in_box'),
ex('Cube in box, parallel gripper','50 episodes',HF+'ReubenLim/xarm_lite6_gripper_cube_in_box')]},
{id:'piper', name:'PiPER', maker:'AgileX', kind:'arm', dof:6, payload:1.5, reach:0.626, mass:4.2, power:40, price:2499,
lerobot:'plugin', doc:D+'third_party_robots', why:'Light 6-axis arm at hobby price with a real 1.5 kg payload.',
examples:[ex('Bimanual fruit pick and place','2,301 episodes on two PiPER arms',HF+'Autobrik/bi_piper_pick_and_place_fruits_mantra'),
ex('Single-arm pick and place','55 episodes',HF+'Benxiaogu/piper_pick_place_sprite_bbox'),
ex('PiPER SDK','official Python SDK','https://github.com/agilexrobotics/piper_sdk')]},
{id:'yam', name:'YAM', maker:'I2RT', kind:'arm', dof:6, payload:2, reach:0.75, mass:5, power:60, pe:true, price:2999,
lerobot:'plugin', doc:D+'third_party_robots', why:'Low-cost research arm with quasi-direct-drive joints, popular for bimanual data collection.',
examples:[ex('Public YAM runs','602 bimanual episodes',HF+'andlyu/Public-YAM-runs'),
ex('Bimanual cube task','teleoperated with leader arms',HF+'mliu48/telearms-yam-cube-v4'),
ex('I2RT SDK','drivers and teleoperation','https://github.com/i2rt-robotics/i2rt')]},
{id:'widowxai', name:'WidowX AI', maker:'Trossen Robotics', kind:'arm', dof:6, payload:1.5, reach:0.769, mass:4, power:80, pe:true, price:5935,
lerobot:'plugin', doc:D+'third_party_robots', why:'Trossen’s current research arm, successor of the WidowX and ViperX used in BridgeData and ALOHA.',
examples:[ex('Orange block transfer','20 bimanual episodes from the Trossen community',HF+'TrossenRoboticsCommunity/widowx_ai_orange_block_transfer'),
ex('Organize the table','50 tabletop episodes',HF+'jv-costa/widowxai-organize-the-table-cube002-v21')]},
{id:'widowx', disc:true, name:'WidowX 250 S', maker:'Trossen Robotics', kind:'arm', dof:6, payload:0.25, reach:0.65, mass:2.5, power:30, pe:true, price:3550, pn:'discontinued, last store price',
lerobot:'plugin', doc:D+'third_party_robots', why:'The arm behind BridgeData; many open policies were trained on it. Discontinued.',
examples:[ex('BridgeData V2','53,192 kitchen-style episodes',HF+'IPEC-COMMUNITY/bridge_orig_lerobot'),
ex('BridgeData project page','dataset and paper','https://rail-berkeley.github.io/bridgedata/')]},
{id:'viperx', disc:true, name:'ViperX 300 S', maker:'Trossen Robotics', kind:'arm', dof:6, payload:0.75, reach:0.75, mass:3.6, power:40, pe:true, price:6100, pn:'discontinued, last store price',
lerobot:'plugin', doc:D+'third_party_robots', why:'The follower arm of the original ALOHA bimanual kit. Discontinued.',
examples:[ex('ALOHA static coffee','50 bimanual episodes of coffee making',HF+'lerobot/aloha_static_coffee'),
ex('Mobile ALOHA shrimp','bimanual cooking on a mobile base',HF+'lerobot/aloha_mobile_shrimp'),
ex('ALOHA and ACT','the paper that introduced ACT','https://tonyzhaozh.github.io/aloha/')]},
{id:'xarm6', name:'xArm 6', maker:'UFACTORY', kind:'arm', dof:6, payload:5, reach:0.7, mass:12.5, power:200, price:8399,
lerobot:'plugin', doc:D+'third_party_robots', why:'Affordable 5 kg arm, used in many research datasets.',
examples:[ex('Pick the cola','498 episodes',HF+'MINT-SJTU/xarm6-pick-cola'),
ex('xArm Python SDK','official SDK','https://github.com/xArm-Developer/xArm-Python-SDK')]},
{id:'xarm7', name:'xArm 7', maker:'UFACTORY', kind:'arm', dof:7, payload:3.5, reach:0.7, mass:14.3, power:200, price:9999,
lerobot:'plugin', doc:D+'third_party_robots', why:'7-axis version of xArm for redundant, human-like motions.',
examples:[ex('Pick the orange ball','56 episodes',HF+'zwonzis/xarm7-pick-orange-ball'),
ex('UTokyo xArm pick and place','102 episodes from Open X-Embodiment',HF+'lerobot/utokyo_xarm_pick_and_place'),
ex('UTokyo xArm bimanual','70 episodes from Open X-Embodiment',HF+'lerobot/utokyo_xarm_bimanual')]},
{id:'xarm850', name:'850', maker:'UFACTORY', kind:'arm', dof:6, payload:5, reach:0.85, mass:20, power:240, price:9498, pn:'$8,999 + $499 control box',
lerobot:'plugin', doc:'https://www.ufactory.cc/ufactory-850/', why:'Longer-reach UFACTORY arm with 0.02 mm repeatability, same SDK as xArm.', examples:[]},
{id:'z1', name:'Z1 Air', maker:'Unitree', kind:'arm', dof:6, payload:2, reach:0.74, mass:4.3, power:60, pe:true, price:13000, pn:'no list price, reported $13k–21k',
lerobot:'community', doc:'https://www.unitree.com/z1', why:'Light arm designed to sit on quadruped robots.',
examples:[ex('Z1 stack boxes','1,265 single-arm episodes',HF+'unitreerobotics/Z1_StackBox_Dataset'),
ex('Two Z1 fold clothes','83 bimanual episodes',HF+'unitreerobotics/Z1_Dual_Dex1_FoldClothes_Dataset'),
ex('Two Z1 pour coffee','331 bimanual episodes',HF+'unitreerobotics/Z1_Dual_Dex1_PourCoffee_Dataset')]},
{id:'gen3lite', name:'Gen3 lite', maker:'Kinova', kind:'arm', dof:6, payload:0.5, reach:0.76, mass:5.4, power:20, price:13500,
lerobot:'community', doc:'https://www.kinovarobotics.com/product/gen3-lite-robots', why:'Light, quiet arm for education and assistive research.',
examples:[ex('ROS 2 driver','official driver with the Gen3 lite MoveIt configuration','https://github.com/Kinovarobotics/ros2_kortex')]},
{id:'gen3', name:'Gen3', maker:'Kinova', kind:'arm', dof:7, payload:2, reach:0.902, mass:8.2, power:36, price:36000, pn:'on quote, reported $30k–45k; 4 kg payload at mid-range',
lerobot:'community', doc:'https://www.kinovarobotics.com/product/gen3-robots', why:'7-axis ultralight research arm with torque sensing in every joint.',
examples:[ex('Clutter pick and place','500 episodes for VLA training',HF+'FilippoGorini/vla_kinova_gen3_clutter_pick_place'),
ex('Cube stacking in simulation','360 episodes by PickNik',HF+'PickNikRobotics/kinova_gen3_cube_stack_sim'),
ex('Isaac Lab sim-to-real','reinforcement learning deployed with ROS 2','https://github.com/louislelay/kinova_isaaclab_sim2real')]},
{id:'fr3', name:'FR3', maker:'Franka Robotics', kind:'arm', dof:7, payload:3, reach:0.855, mass:18.3, power:80, price:29000, pn:'reported $25k–35k',
lerobot:'plugin', doc:D+'third_party_robots', why:'The research workhorse: torque control and the largest open datasets.',
examples:[ex('DROID','95,658 in-the-wild episodes on Franka Panda',HF+'lerobot/droid_1.0.1'),
ex('TACO-Play','3,603 episodes of Franka play data',HF+'lerobot/taco_play'),
ex('WorldArena 2.0','world-model benchmark recorded on FR3',HF+'WorldArena/WorldArena2.0_Franka_FR3')]},
// ---- industrial cobots
{id:'ur3e', name:'UR3e', maker:'Universal Robots', kind:'arm', dof:6, payload:3, reach:0.5, mass:11.2, power:100, price:28000, pn:'reported $23k–38k',
lerobot:'plugin', doc:D+'third_party_robots', why:'Smallest UR cobot, for benchtop assembly.',
examples:[ex('Dual UR3e doll pick','50 episodes',HF+'cometkim97/ur3e_pick_doll')]},
{id:'ur5e', name:'UR5e', maker:'Universal Robots', kind:'arm', dof:6, payload:5, reach:0.85, mass:20.7, power:200, price:38000, pn:'reported $30k–48k',
lerobot:'plugin', doc:D+'third_party_robots', why:'The most common cobot in factories and labs.',
examples:[ex('UMI','in-the-wild gripper demonstrations deployed on a UR5e','https://umi-gripper.github.io/'),
ex('Berkeley Autolab UR5','1,000 episodes from Open X-Embodiment (UR5 CB-series)',HF+'lerobot/berkeley_autolab_ur5'),
ex('Dual UR5e hold','59 bimanual episodes',HF+'takeru01/dual_ur5e_hold')]},
{id:'ur10e', name:'UR10e', maker:'Universal Robots', kind:'arm', dof:6, payload:12.5, reach:1.3, mass:33.3, power:350, price:50000, pn:'reported $45k–60k',
lerobot:'plugin', doc:D+'third_party_robots', why:'Long-reach cobot for machine tending and palletizing.',
examples:[ex('UR10e cup task','81 episodes',HF+'khanhnd61/ur10e-cup')]},
{id:'ur16e', name:'UR16e', maker:'Universal Robots', kind:'arm', dof:6, payload:16, reach:0.9, mass:33.1, power:350, price:55000, pn:'reported $50k–65k',
lerobot:'plugin', doc:D+'third_party_robots', why:'Heavy payload in a compact footprint.',
examples:[ex('BWIndustrie deburring','first UR16e install, deburring 4–14 kg parts','https://industryeurope.com/sectors/technology-innovation/bwindustrie-installs-world%E2%80%99s-first-ur16e-to-optimise-throughput/')]},
{id:'ur20', name:'UR20', maker:'Universal Robots', kind:'arm', dof:6, payload:20, reach:1.75, mass:64, power:300, price:70000, pn:'reported $63k–85k',
lerobot:'plugin', doc:D+'third_party_robots', why:'Palletizing and heavy handling cobot.',
examples:[ex('Ornua palletizing','dairy palletizing cell','https://www.universal-robots.com/case-stories/ornua/'),
ex('Bob’s Red Mill','cobot palletizer for bags and cases','https://columbiaokura.com/thought-leadership/minipal-bobs-red-mill/'),
ex('Vention palletizing cells','7 cells, throughput up 49% on 20 kg cases','https://www.universal-robots.com/media/1830645/ur-coe-support-mini-case-study-vention-01-03-2024-web.pdf')]},
{id:'ur30', name:'UR30', maker:'Universal Robots', kind:'arm', dof:6, payload:30, reach:1.3, mass:63.5, power:300, price:80000, pn:'no reliable figure, estimate',
lerobot:'plugin', doc:D+'third_party_robots', why:'Heaviest UR, for screwdriving and heavy parts.',
examples:[ex('Bimanual UR30 teleoperation','real teleoperation recordings on two UR30',HF+'zbzzbz/TELT_DATA_BIMANUAL_UR30')]},
{id:'crx5', name:'CRX-5iA', maker:'FANUC', kind:'arm', dof:6, payload:5, reach:0.994, mass:25, power:300, price:39000, pn:'reported $35k–43k',
lerobot:null, doc:'https://www.fanucamerica.com/products/robots/series/collaborative-robot', why:'FANUC reliability in a light cobot.', examples:[]},
{id:'crx10', name:'CRX-10iA', maker:'FANUC', kind:'arm', dof:6, payload:10, reach:1.249, mass:40, power:300, price:45000, pn:'reported $40k–51k',
lerobot:null, doc:'https://www.fanucamerica.com/products/robots/series/collaborative-robot', why:'Popular industrial cobot with tablet programming.',
examples:[ex('Assembly case study','academic study of a CRX-10iA/L assembly cell','https://doi.org/10.3390/eng5020029')]},
{id:'crx20', name:'CRX-20iA/L', maker:'FANUC', kind:'arm', dof:6, payload:20, reach:1.418, mass:41, power:350, pe:true, price:58000,
lerobot:null, doc:'https://www.fanucamerica.com/products/robots/series/collaborative-robot', why:'Long reach and 20 kg for packing lines.', examples:[]},
{id:'crx30', name:'CRX-30iA', maker:'FANUC', kind:'arm', dof:6, payload:30, reach:1.756, mass:135, power:400, price:60000, pn:'reported $55k–65k',
lerobot:null, doc:'https://www.fanucamerica.com/products/robots/series/collaborative-robot', why:'Palletizing cobot for heavy cases.',
examples:[ex('Palletizing with an AMR','CRX-30iA on an OTTO mobile robot, MODEX 2026 demo','https://www.robotics247.com/article/modex-2026-fanuc-america-showcases-robotics-and-amrs-for-warehousing-and-logistics')]},
{id:'lrmate', name:'LR Mate 200iD', maker:'FANUC', kind:'arm', dof:6, payload:7, reach:0.717, mass:25, power:500, pe:true, price:30000, pn:'reported $17.5k–45k new',
lerobot:null, doc:'https://www.fanucamerica.com/products/robot/lr-mate-200id', why:'Fast industrial mini-robot (needs guarding, not a cobot).',
examples:[ex('Berkeley FANUC manipulation','415 tabletop episodes from Open X-Embodiment',HF+'lerobot/berkeley_fanuc_manipulation')]},
{id:'iiwa7', name:'LBR iiwa 7 R800', maker:'KUKA', kind:'arm', dof:7, payload:7, reach:0.8, mass:23.9, power:250, pe:true, price:70000, pn:'reported $50k–100k',
lerobot:null, doc:'https://www.kuka.com/en-de/products/robot-systems/industrial-robots/lbr-iiwa', why:'Sensitive 7-axis cobot with torque sensors.',
examples:[ex('QT-Opt grasping','209,880 grasping episodes on iiwa arms',HF+'IPEC-COMMUNITY/kuka_lerobot'),
ex('Stanford KUKA multimodal','3,000 episodes of contact-rich peg insertion',HF+'lerobot/stanford_kuka_multimodal_dataset')]},
{id:'iiwa14', name:'LBR iiwa 14 R820', maker:'KUKA', kind:'arm', dof:7, payload:14, reach:0.82, mass:29.9, power:300, pe:true, price:70000, pn:'reported $65k–70k',
lerobot:null, doc:'https://www.kuka.com/en-de/products/robot-systems/industrial-robots/lbr-iiwa', why:'Heavier iiwa for force-controlled assembly.',
examples:[ex('Stanford KUKA multimodal','3,000 episodes of contact-rich peg insertion',HF+'lerobot/stanford_kuka_multimodal_dataset')]},
// ---- bimanual systems (payload and reach per arm)
{id:'bi_so101', model:'so101', name:'Bimanual SO-101', maker:'The Robot Studio', kind:'bimanual', dof:12, payload:0.3, reach:0.42, mass:1.6, power:20, pe:true, price:500, open:true,
lerobot:'native', type:'bi_so_follower', teleop:'bi_so_leader', doc:D+'so101', pn:'two leader-follower pairs',
why:'The cheapest way to learn two-arm tasks such as folding or handovers.', examples:[]},
{id:'openarm', name:'OpenArm', maker:'Enactic', kind:'bimanual', dof:14, payload:4.1, reach:0.62, mass:11, power:150, pe:true, price:6500, open:true, pn:'from $6,500 through certified builders',
lerobot:'native', type:'bi_openarm_follower', teleop:'bi_openarm_leader', doc:D+'openarm', why:'Research-grade, human-scale open arms at a fraction of industrial prices.',
examples:[ex('Bimanual teleoperation','289 real episodes',HF+'nkmurst/openarm_teleop_udp_d435_merged_20260725_lerobot'),
ex('Cube pick in simulation','official MuJoCo dataset from Enactic',HF+'enactic/openarm-2-cell-pick_up_cube_mujoco-lerobot'),
ex('OpenArm','open hardware and software','https://github.com/enactic/openarm')]},
// ---- mobile
{id:'lekiwi', model:'so101', onboard:{name:'Raspberry Pi 5 on LeKiwi', vram:0}, name:'LeKiwi', maker:'SIGRobotics / LeRobot', kind:'mobile', dof:9, payload:0.3, reach:0.42, mass:3, power:20, pe:true, price:490, open:true, pn:'parts, including the SO-101 leader and follower',
lerobot:'native', type:'lekiwi_client', teleop:'so101_leader', doc:D+'lekiwi', why:'Open-source SO-101 on an omnidirectional base, driven by a Raspberry Pi 5.',
examples:[ex('Sort cubes while moving','37 episodes',HF+'oumeanin/lekiwi-study-sort-cubes'),
ex('Ball task','100 episodes',HF+'70mmy/lekiwi_ball_10'),
ex('SmolVLA on LeKiwi','fine-tuned pick-and-place policy','https://huggingface.co/Sounness/smolvla_lekiwi_pick_and_place_v2')]},
{id:'reachy2', onboard:{name:'Reachy 2 onboard computer', vram:0}, name:'Reachy 2', maker:'Pollen Robotics', kind:'mobile', dof:22, payload:3, reach:0.7, mass:50, power:95, pe:true, price:70000, pn:'reported',
lerobot:'native', type:'reachy2', teleop:'reachy2_teleoperator', doc:D+'reachy2', why:'Bimanual humanoid upper body on a mobile base, built by Hugging Face’s Pollen team.',
examples:[ex('Kitchen manipulation','219 episodes',HF+'CompeteSAI/reachy2-kitchen-multimodal'),
ex('Active vision with the head','800 episodes',HF+'Voxel51/tavis-head-reachy2-800ep')]},
// ---- humanoids
{id:'hopejr', name:'HopeJR', maker:'The Robot Studio', kind:'humanoid', dof:20, payload:1, reach:0.6, mass:10, power:150, pe:true, price:3000, open:true, pn:'Hugging Face estimate',
lerobot:'native', type:'hope_jr_arm', teleop:'homunculus_arm', doc:D+'hope_jr', why:'Open-source dexterous arm and hand, teleoperated with an exoskeleton and glove.',
examples:[ex('HOPEJr','open hardware: arm, hand and exoskeleton','https://github.com/TheRobotStudio/HOPEJr')]},
{id:'g1', onboard:{name:'Jetson Orin NX inside the G1 EDU', vram:16}, name:'G1 EDU', maker:'Unitree', kind:'humanoid', dof:23, payload:2, reach:0.45, mass:35, power:210, pe:true, price:43500, pn:'base G1 from $13.5k; the EDU version for development is on quote, reported from about $43.5k',
lerobot:'native', type:'unitree_g1', teleop:'<your_teleop>', doc:D+'unitree_g1', why:'Full humanoid supported in LeRobot, with an onboard Jetson and MuJoCo simulation.',
examples:[ex('Toasted bread','418 bimanual dexterous episodes',HF+'unitreerobotics/G1_Dex3_ToastedBread_Dataset'),
ex('Stack blocks','690 episodes',HF+'unitreerobotics/G1_Dex1_Stack_Block'),
ex('Humanoid Everyday','4,064 episodes of everyday tasks',HF+'USC-PSI-Lab/Humanoid-Everyday-G1')]},
// ---- interaction
{id:'reachymini', name:'Reachy Mini', maker:'Pollen Robotics', kind:'interaction', dof:9, payload:0, reach:0, mass:1.35, power:7, pe:true, price:299, open:true, pn:'Lite; $449 for the wireless version',
lerobot:null, doc:'https://huggingface.co/reachy-mini', why:'Small open-source expressive robot for interaction, demos and education, programmable in Python with apps shared on Spaces.',
examples:[ex('Conversation app','talk to the robot with an LLM','https://huggingface.co/spaces/pollen-robotics/reachy_mini_conversation_app'),
ex('Emotions library','recorded expressive motions',HF+'pollen-robotics/reachy-mini-emotions-library'),
ex('Reachy Mini SDK','Python SDK','https://github.com/pollen-robotics/reachy_mini')]},
];
// Training compute. speed: throughput relative to one A100 on LeRobot training.
// w: board power under training load. price: street price Oct 2026; host: the PC or server a card needs, hostW its extra draw.
const GPUS = [
{id:'mmax', name:'Apple M-series Max laptop', vram:36, w:60, price:3500, host:0, hostW:20, speed:0.08, loc:'local', note:'unified memory, MPS backend'},
{id:'rtx4060', name:'RTX 4060', vram:8, w:115, price:360, host:1000, hostW:80, speed:0.3, loc:'local'},
{id:'rtx4070tis', name:'RTX 4070 Ti Super', vram:16, w:285, price:950, host:1000, hostW:100, speed:0.55, loc:'local'},
{id:'rtx4090', name:'RTX 4090', vram:24, w:450, price:2800, host:1200, hostW:120, speed:1.0, loc:'local'},
{id:'rtx5090', name:'RTX 5090', vram:32, w:575, price:6000, host:1200, hostW:120, speed:1.3, loc:'local'},
{id:'rtxpro6000', name:'RTX PRO 6000 Blackwell', vram:96, w:600, price:12000, host:2500, hostW:150, speed:1.5, loc:'local'},
{id:'a100', name:'A100 80 GB server', vram:80, w:400, price:9000, host:6000, hostW:200, speed:1.0, loc:'local'},
{id:'h100', name:'H100 80 GB server', vram:80, w:700, price:25000, host:6000, hostW:250, speed:2.0, loc:'local'},
{id:'l4x1', name:'HF Jobs · L4', job:'l4x1', vram:24, w:72, hourly:0.80, speed:0.35, loc:'cloud', hostW:60},
{id:'a10g-small', name:'HF Jobs · A10G small', job:'a10g-small', vram:24, w:150, hourly:1.00, speed:0.4, loc:'cloud', hostW:60},
{id:'a10g-large', name:'HF Jobs · A10G large', job:'a10g-large', vram:24, w:150, hourly:1.50, speed:0.45, loc:'cloud', hostW:100},
{id:'l40sx1', name:'HF Jobs · L40S', job:'l40sx1', vram:48, w:350, hourly:1.80, speed:0.9, loc:'cloud', hostW:80},
{id:'a100-large', name:'HF Jobs · A100 80 GB', job:'a100-large', vram:80, w:400, hourly:2.50, speed:1.0, loc:'cloud', hostW:120},
{id:'rtx-pro-6000', name:'HF Jobs · RTX PRO 6000', job:'rtx-pro-6000', vram:96, w:600, hourly:2.75, speed:1.5, loc:'cloud', hostW:150},
{id:'h200', name:'HF Jobs · H200', job:'h200', vram:141, w:700, hourly:5.00, speed:2.2, loc:'cloud', hostW:200},
];
// Computers that run the policy next to (or on) the robot. vram: memory usable by the policy; w: typical draw.
// Jetson prices after NVIDIA's July 2026 increase.
const BOARDS = [
{id:'laptop', name:'Laptop, no GPU', vram:0, w:30, price:1000, place:'tethered'},
{id:'laptop4060', name:'Laptop with RTX 4060', vram:8, w:90, price:1500, place:'tethered'},
{id:'desk4090', name:'Desktop with RTX 4090', vram:24, w:350, price:4000, place:'tethered'},
{id:'pi5', name:'Raspberry Pi 5 (8 GB)', vram:0, w:8, price:175, place:'embedded', note:'drives motors and cameras; the policy runs on a GPU server'},
{id:'orinnano', name:'Jetson Orin Nano Super', vram:8, w:15, price:399, place:'embedded'},
{id:'orinnx', name:'Jetson Orin NX 16 GB', vram:16, w:25, price:1200, place:'embedded'},
{id:'agxorin', name:'Jetson AGX Orin 64 GB', vram:64, w:45, price:3499, place:'embedded'},
{id:'thor', name:'Jetson AGX Thor', vram:128, w:90, price:5499, place:'embedded'},
{id:'included', name:'Robot’s own computer', vram:0, w:0, price:0, place:'embedded', note:'already in the robot’s price and power figure'},
];
const POLICIES = {
act:{name:'ACT', group:'Light imitation learning', a100h:0.6, maxSpeed:1, train:6, tight:4, infer:0, vramTxt:'about 2–6 GB',
why:'Learns one task from about 50 demonstrations and trains fast. Built for bimanual ALOHA tasks too.', flag:'--policy.type=act', doc:D+'act'},
smolvla:{name:'SmolVLA', group:'Small vision-language-action model (450M)', a100h:1.5, maxSpeed:1.3, train:16, tight:12, infer:4, vramTxt:'about 10–16 GB',
why:'Follows language instructions across tasks; fine-tuned from a model pretrained on community data.', flag:'--policy.path=lerobot/smolvla_base', doc:D+'smolvla', base:'lerobot/smolvla_base'},
pi05:{name:'pi0.5', group:'Large vision-language-action model', a100h:6, train:40, tight:24, infer:12, vramTxt:'about 24–40 GB',
why:'Stronger generalist for varied objects and long, multi-step tasks.', flag:'--policy.pretrained_path=lerobot/pi05_base', doc:D+'pi05', base:'lerobot/pi05_base'},
groot:{name:'GR00T', group:'Large multimodal humanoid model', a100h:6, train:40, tight:24, infer:12, vramTxt:'about 24–40 GB',
why:'NVIDIA’s foundation model for humanoids, integrated in LeRobot.', flag:'--policy.type=groot', doc:D+'groot'},
hilserl:{name:'HIL-SERL (reinforcement learning)', group:'RL with human corrections', a100h:3, train:8, tight:8, infer:2, vramTxt:'depends on the configuration', local:true,
why:'Starts from a few demonstrations and a vision reward classifier, then improves on the robot while you correct it with a gamepad. Requires a measurable reward, repeatable resets and supervised practice. Success must be evaluated on your task.', flag:null, doc:D+'hilserl'},
};
// Ember Yearly Electricity Data, 2025, Total generation, lifecycle gCO2e/kWh.
// Retrieved 2026-10-23; original rows, source URL and hash: sources/ember-grid-2025.json.
// Industrial electricity price
// (USD/kWh: Eurostat 2025 for EU countries, EIA 2024 for the US, business rates elsewhere).
const COUNTRIES = {
FR:{name:'France', g:41.224, usd:0.142}, DE:{name:'Germany', g:334.117, usd:0.218}, GB:{name:'United Kingdom', g:218.001, usd:0.25},
EU:{name:'EU average', g:210.536, usd:0.183}, US:{name:'United States', g:384.403, usd:0.081}, CN:{name:'China', g:528.278, usd:0.118},
IN:{name:'India', g:670.945, usd:0.108}, JP:{name:'Japan', g:473.735, usd:0.179}, NO:{name:'Norway', g:28.05, usd:0.081}, CA:{name:'Canada', g:191.587, usd:0.119},
};
const CLOUD_GRID = 'US'; // Assumed grid for cloud modeling, not verified provider location
const CLOUD_PUE = 1.2;
// Manufacturing footprint: legacy factors; original code cited BLOOM and HGX H100 without an auditable mapping.
// Generic planning assumptions, not verified manufacturer LCAs. Exact source mapping for the inherited factors is unavailable.
const EMBODIED = {robotPerKg:12, gpuCard:160, server:2500, board:30, pc:300};
|