用 SO-ARM100 搭一台百元级遥操作机械臂:从 3D 打印到柔性夹爪实战笔记
【免费下载链接】SO-ARM100Standard Open Arm 100项目地址: https://gitcode.com/GitHub_Trending/so/SO-ARM100
捏碎一颗草莓之前,先搭一台 SO-ARM100
当你想让机械臂捏住一颗草莓 🍓 而不把它捏碎时,靠"精确位置控制 + 大力夹持"的老思路是行不通的——物体稍微偏一点、形状稍微怪一点,刚性夹爪要么夹空,要么夹烂。SO-ARM100 就是一个为此类需求而生的开源低成本机械臂项目:它由 RobotStudio 与 Hugging Face 联合开源,用"主臂(Leader)+ 从臂(Follower)"的遥操作架构——你手握一只实体"虚臂"做动作,真臂实时跟手复制,配合 LeRobot 库就能边操作边采集端到端训练数据。两臂全套零件约 $230(国内采购约 ¥1343),结构件全部用普通 FDM 打印机就能做,还附带 TPU 95A 柔性合规夹爪、4040 型材底座、腕部相机支架和 URDF/MuJoCo 仿真模型。
那问题来了:一台百元级机械臂,凭什么既能稳稳跟手、又能"轻拿轻放"?拆开看,答案藏在两处设计里。
图:SO-101 从臂,白色 3D 打印结构 + 六台 STS3215 舵机
它为什么能行:遥操作架构与 TPU 95A 柔性夹爪
第一处:用"人手"代替力控。SO-ARM100 最聪明的一点是把"力反馈"外包给了操作员。从臂的六台 STS3215 舵机读取主臂对应舵机的角度后原样复制,从臂上不需要任何昂贵力传感器——你手腕松一点,从臂夹得就轻一点。这比在从臂上做力控闭环便宜了一个数量级,而且手感天然连续。SO-101 是 SO-100 的下一代版本,主要改了三件事:走线重新布局、装配不再需要拆卸齿轮、主臂换用了更新型号的舵机,装起来比初代省了不少事。
第二处:仿真模型不是摆设,参数来自真实电机。仓库里同时提供 SO-100 和 SO-101 的 URDF 与 MuJoCo(MJCF)文件,电机参数直接适配 STS3215 的实测特性。这是Simulation/SO101/joints_properties.xml里的默认电机配置:
<default class="sts3215"> <joint damping="0.60" frictionloss="0.052" armature="0.028"/> <position kp="17.8" forcerange="-3.35 3.35"/> </default> <default class="backlash"> <!-- +/- 0.5° 回差 --> <joint damping="0.01" frictionloss="0" armature="0.01" range="-0.008726646 0.008726646"/> </default>阻尼、摩擦损失、转子惯量、位置环 kp、力矩上限(±3.35 N·m)都给了具体值,还单独建了 ±0.5° 的关节回差模型——这意味着你在 MuJoCo 里调的策略,迁到真机上不会差太远。
夹爪为什么选 TPU 95A?因为别的材料两头不讨好。仓库里的 Compliant Gripper(柔性合规夹爪)借鉴了 Festo 推广的 Fin Ray Effect:夹爪内部掏空并带纵向筋条,受力后整根手指弯曲贴合物体轮廓,把"夹紧"变成"包紧",接触力被结构自然摊平。选型结论很直白:
- 夹爪结构件用PLA+就够了——它要的是刚性和尺寸精度,15% 填充即可,打印快、后处理简单;
- 活动指只换成TPU 95A(邵氏 95A)——比它更软的橡胶类材料传不动 STS3215 的扭矩,太硬则退化成刚性夹爪,95A 是"够软能贴合、够硬能承重"的平衡点;
- 代价也要说清楚:不是所有打印机都能打 TPU(可能需要改装挤出头),TPU 打印更慢,支撑拆除更费劲。
从零跑起来:SO-101 打印、装配到首次遥操作
1. 硬件与环境准备
两臂(主臂 + 从臂)的物料清单不长,核心就是舵机、驱动板和电源:
| 零件 | 数量 | 备注 |
|---|---|---|
| STS3215 舵机 7.4V | 12 | 从臂 6× C001;主臂 3× C046 + 2× C044 + 1× C001 |
| Waveshare 舵机控制板 | 2 | 每臂一块 |
| 5V 电源 | 2 | 若换 12V 舵机需改 12V 5A+ |
| 桌夹 / USB-C 线 / 精密螺丝刀 | 1 套 | 建议备 #0 和 #1 十字刀头 |
有 3D 打印机的直接打印;没有的,仓库3DPRINT.md给了 Craftcloud3D(欧美)和 PCBWay(国内)的完整下单流程,两臂结构件云打印全套约 $95。
2. 打印步骤(含关键参数表)
打印是整个项目翻车率最高的环节,仓库文档把流程拆得很细:
- 校准床与参数:FDM 打印机调平、清洁打印床,设置按下表执行——做完后打印一张 test 件确认首层贴合。
- 打标定块验证精度:打印
STL/Gauges/Gauge_0.STL和Gauge_tight_1.STL,与一台真实 STS3215 舵机(或标准 4×2 乐高积木)试装——塞入顺畅度符合仓库教程视频即达标;不达标就调流量/压力后再打。 - 整盘打印:按打印床尺寸选文件,Ender 系(220×220mm)用
STL/SO101/Follower/Ender_Follower_SO101.stl和STL/SO101/Leader/Ender_Leader_SO101.stl,Prusa/UP 系(205×250mm)用同目录下 Prusa 版本。所有零件已在一个文件里摆好朝向,z 轴向上以最小化支撑。 - 拆支撑:用刮刀把零件从床面铲下,逐件清除支撑,重点检查水平朝向的螺孔内无残留支撑。
| 参数 | 结构件(PLA+) | 柔性夹爪(TPU 95A) |
|---|---|---|
| 喷嘴/层高 | 0.4mm / 0.2mm 或 0.6mm / 0.4mm | 以打印机柔性料方案为准 |
| 填充 | 15% | 20%(带支撑) |
| 支撑 | 全开,忽略 >45° 斜壁;水平螺孔内禁用支撑 | 全开,用齐平剪钳拆除 |
| 文件 | 整盘 STL(Follower + Leader 各一) | Optional/Compliant_Gripper/stl/两个文件 |
3. 装配与校准
按仓库 README 指向的 LeRobot 装配指南逐件组装(主臂和从臂流程相同)。装配时建议先打印Optional/Mount_Helper/里的辅助工装——把矩形空心件对位推入是新手最容易卡住的一步,有辅助件可以整根推到位。螺丝全部用 #0/#1 十字刀头,装完手动转一遍六个关节确认无卡顿。
# 上电前可先用仿真模型核对结构 rerun Simulation/SO101/so101_new_calib.urdf关键参数速查:STS3215 7.4V 堵转转矩 16.5 kg·cm @6V,仓库验证够用;想更有力可换 12V 版(30 kg·cm),但必须同时换 12V 5A+ 电源。从臂夹爪在 LeRobot 中是线性关节:
0= 全闭,100= 全开。
4. 首次运行验证
- 上电后按 LeRobot 教程做舵机识别与零位校准(主臂、从臂各做一次)。
- 打开遥操作模式,手握主臂慢动作画一个圆——从臂跟手且无跳变、无丢步即合格。
- 让从臂空载走完六个关节的行程限位,再夹住一个纸杯开合 10 次,确认夹爪闭合到
100张开位无卡滞。
常见翻车点 ⚠️
- 舵机孔对不上打印件→ 打印机尺寸偏差 → 用 Gauges 标定块重新校准,或打印
-0.1版乐高测试块改补偿。 - 螺孔里长满支撑→ 切片时没开"忽略 >45° 斜壁"或手动加了支撑 → 重切并确认水平螺孔零支撑后再打。
- TPU 夹爪拆支撑时撕裂→ 用普通剪钳硬掰 → 换齐平剪钳(flush cutters),残留用砂纸轻打磨。
- 主臂手感僵硬或比例怪异→ 舵机减速比买错 → 对照 BOM:主臂必须是 C046×3 + C044×2 + C001×1 混合配置。
- 遥操作中手臂突然掉速/复位→ 5V 电源电流不足,或误把 12V 舵机接在 5V 供网上 → 换足功率电源,12V 舵机整套换 12V 方案。
图:SO-101 主臂,握着它即可遥操作从臂
实际表现如何:关节行程、力矩与腕部相机
仓库没有发布统一的"抓取成功率"统计,所以硬指标以模型文件为准,抓取手感以实际遥操作验证为准。关节活动范围来自Simulation/SO100/so100.urdf(SO-101 同构):
| 关节 | 行程范围(rad) |
|---|---|
| shoulder_pan | -2 ~ +2 |
| shoulder_lift | 0 ~ 3.5 |
| elbow_flex | -3.14 ~ 0 |
| wrist_flex | -2.5 ~ 1.2 |
| wrist_roll | -3.14 ~ +3.14 |
场景一:遥操作与数据收集。主臂-从臂双机配合是 SO-ARM100 的主业,目标就是给 LeRobot 的视觉-动作策略喂高质量示范数据。这条链路的验收标准很简单:跟手无延迟感、六个关节限位内动作平滑、夹爪开合在 0~100 线性区间内无丢步。仓库的 MuJoCo 模型(Simulation/SO101/so101_new_calib.xml)可用于先在仿真里复现同一套动作再上真机,新旧两种零位标定(关节中点为零 / 全伸展为零)可切换。
场景二:易碎物抓取。换上 TPU 95A 柔性夹爪后,仓库文档明确它的定位是"形状难搞或易碎的物品(比如水果)":中空筋条结构让手指包络贴合曲面,接触力由结构形变吸收,对夹持精度的要求反而降低了。新版合规夹爪(XLeRobot 社区版)进一步做到 TPU 指部无需支撑即可打印,精度与力抓取都更好,可选贴 3M 夹爪胶提升摩擦。
图:D405 深度相机腕部支架,两只 M3 螺丝固定
视觉是另一条实测验证线:腕部可装 RealSense D405(DIN 912 M3×6/M3×8 两只螺丝)、D435 或 32×32 UVC 模组,仓库media/d405_mount_sample_observation.jpg里附了装上相机后的实际观测画面。
(性能对比可自测:抓取成功率 / 形状适应性 / 成本 / 打印难度四维度做一张雷达图,基线数据以你本地遥操作实测记录为准。)
能往哪儿走:4040 型材安装与仿真扩展
短期,自己动手就能做的扩展:
- 加装腕部或顶部相机,给策略模型装"眼睛" →
Optional/Wrist_Cam_Mount_RealSense_D405/、Optional/Overhead_Cam_Mount_32x32_UVC_Module/; - 把底座固定到 4040 铝型材上搭模块化工作台:1× M4×16 螺栓 + M4 螺母(8mm 槽)锁型材,4× M4×30 + 4× M4 翼母锁底座 →
Optional/4040_Base_Mount/; - 给夹爪升级触觉:替换 Compliant Gripper 零件,或看 AnySkin 电子皮肤方案 →
Optional/Compliant_Gripper/。
中长期,社区正在演进的方向:仓库 URDF 里注明夹爪线性关节映射(0~100)尚未同步进模型,这是明确的待补项;CHANGELOG 显示 7 自由度 SO-Arm 的早期 URDF 早在 v0.1.12 就已上传;此外社区已把 SO-101 双臂装到移动底盘上做成 XLeRobot 双手机器人(含颈部深度相机)。
按三档安排你的学习路径:
- 能跑:打印一台从臂,装完跑通 LeRobot 遥操作;
- 能改:换装 TPU 95A 柔性夹爪并打印一个腕部相机支架,记录前后抓取手感差异;
- 能贡献:给仓库提 Issue 或 PR——补全夹爪关节映射、新增采购链接、上传改进件 STL/STEP 都是现成的切入点。
资源入口
git clone https://gitcode.com/GitHub_Trending/so/SO-ARM100关键文档与文件:
- 总览 / BOM / 打印与装配入口:README.md
- 云打印下单指南(Craftcloud3D / PCBWay):3DPRINT.md
- 柔性合规夹爪指南(TPU 95A 打印与安装):Optional/Compliant_Gripper/README.md
- URDF / MuJoCo 仿真模型与电机参数:Simulation/
- 版本演进记录(可查 7-DOF 与结构改版历史):CHANGELOG.md
社区走 Discord 协作硬件与软件两端(入口见仓库 README);贡献流程很简单——发现问题提 Issue,想改进就带 STL/STEP 文件或文档补丁提 PR,仓库会持续合并新打印参数与采购渠道。
【免费下载链接】SO-ARM100Standard Open Arm 100项目地址: https://gitcode.com/GitHub_Trending/so/SO-ARM100
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考