双臂示教与跟随
使用国内可购的微雪 SO-ARM101 SE 含打印件套件,完成零件识别、逐个舵机编号、双臂装配、校准与首次空载遥操作。提供逐动作中文教程、真实装配视频时间码和已完成 macOS 安装自检的软件包;不把软件测试等同于实物性能验证。
戴子淇
目标:把主臂、从臂零件分开,全部断电。准备干净桌面、两个零件盘、小标签及随套件螺丝刀。\
\
(1)主臂6个ST3215 Servo(SE)放左盘,从臂6个ST3215 Servo放右盘,按外壳型号区分,不只看大小。\
\
(2)清点2块适配板、2根USB线、2套12V5A电源、4个桌夹。电源不插墙上。\
\
(3)从臂结构件标记F1至F11,主臂L1至L12。F、L不是螺丝规格。
\
(4)区分带齿中心孔舵盘与无齿支撑舵盘,不把齿孔强压到无齿端。\
\
(5)螺丝按外形和长度分格。塑料固定用尖头螺丝、舵盘用配套平头螺丝;袋子未标识或长度不符时先核对供应商,不凭力气试拧。\
\
(6)检查结构件裂纹、堵孔和变形。轻放舵机试配;不削薄承力件、不用螺丝强行拉合。\
\
完成检查:两套零件分开,电源全断,无明显破损,缺件先补齐。树脂件不需要接触未固化树脂,不加热或强掰修形。\
\
真实零件识别视频:https://www.youtube.com/watch?v=rVP1XQ0PeM4&t=8s (00:08–00:14;Waveshare,版权归原作者)。
适用环境:Apple Silicon Mac、Python 3.12。先解压本页软件ZIP;打开“终端”,输入cd和一个空格,把解压出的SO101_SE_ORecord文件夹拖入终端,再回车。以下命令均在此目录运行。\
\
安装命令:bash 07_software/install_macos.sh\
\
脚本需要python3.12;没有时会提示安装地址并退出。安装完成后运行:bash 08_tests/test_software_bundle.sh\
\
须看到No broken requirements found、lerobot_import: PASS 0.6.1、cli_help: PASS。软件自检不连接硬件,也不证明运动安全。\
\
激活环境:source .venv-lerobot/bin/activate\
\
识别端口:lerobot-find-port\
\
一次只接一块适配板,按提示拔下USB、回车、重新插回。记录完整/dev/cu.usbmodem开头的端口,为板贴“主”或“从”。USB不能给舵机供电,使用SKU33318配套12V5A电源。\
\
写号必须在机械装配前完成。先断电,只接待编号的一只关节件,确认没有第二只串联,然后接好USB和匹配电源再通电。\
\
从臂命令:lerobot-setup-motors --robot.type=so101_follower --robot.port=/dev/cu.usbmodemXXXX\
\
主臂命令:lerobot-setup-motors --teleop.type=so101_leader --teleop.port=/dev/cu.usbmodemYYYY\
\
XXXX和YYYY必须替换为实际完整端口;两臂分别操作,不混线。\
\
程序提示顺序是6到1:gripper=6夹爪/扳机;wrist_roll=5腕部旋转;wrist_flex=4腕部俯仰;elbow_flex=3肘部;shoulder_lift=2肩部抬升;shoulder_pan=1底座旋转。\
\
每只看到motor id set to及对应编号才算完成,贴号并放回对应盘。换下一只前必须断电,握插头拔线,换好后上电并按提示回车。不要把六只一起接上写号。两条独立总线各有1至6,不相互串联。全部编号完成后拔下电源和USB,再开始组装。\
\
报错:先断电检查插头、独立电源和“只接一只”;型号不匹配时停止,核对SKU与标签,不修改代码绕过检查。

全程断电。需要F1底座、从臂1号舵机、两根总线线、F2支架及随件紧固件。\
\
(1)找到舵机两个总线插座,分别插入两根线。对准插头形状,握塑料壳压入,不斜插、不拉线芯。\
\
(2)把舵机放进F1中央凹槽;确认线不垫在下面。\
\
(3)用4枚配套尖头螺丝固定,上方2枚、下方2枚。先逐枚入孔,再交替拧至螺丝头贴住安装面。塑料变形或开裂立即停。\
\
(4)带齿舵盘装在输出齿轴一侧,无齿舵盘装在另一支撑端。舵盘必须平贴、不翘起。\
\
(5)把F2支架放到F1上,两侧固定。不要先锁F2再硬塞舵机。\
\
(6)一根线从F1中央开口引出,留给适配板;另一根放入F2线槽,留给2号舵机。\
\
检查:舵机不晃,两根线自由伸出且未压扁。装错时保持断电,松开F2取出压线;线皮破损先换线,不贴胶布继续用。\
\
连续动作:https://www.youtube.com/watch?v=rVP1XQ0PeM4&t=14s (00:14–01:14)。观察放入舵机、两侧舵盘和支架走线;Waveshare原视频,版权归原作者。

全程断电,使用套件螺丝刀和对应紧固件。\
\
(1)拿起F3肩部件,让两端沿1号舵机两侧内侧的滑动位置水平进入。\
\
(2)两端孔分别对准舵盘孔。孔错开时退出重放,不用螺丝拉正。\
\
(3)用配套平头螺丝固定两端,交替拧至贴合。\
\
(4)把F4舵机支架放到F3上。\
\
(5)把2号从臂舵机放进支架,两端固定。\
\
(6)把1号预留线接到2号的任一总线插座。\
\
(7)在2号两端装对应舵盘:带齿盘接输出轴,无齿盘接支撑侧。\
\
(8)在2号空余插座接新线,留给3号。\
\
检查:F3两端均已固定;线不绕转轴、不夹在连接面中。轻缓改变关节位置时线有余量,不能快速硬掰。发现夹线就断电拆回对应支架重新走线。\
\
连续动作:https://www.youtube.com/watch?v=rVP1XQ0PeM4&t=74s (01:14–02:14)。看清F3水平滑入和两侧舵盘对孔;Waveshare原视频,版权归原作者。

先断电。F5一端连接2号舵盘,另一端容纳3号舵机,不是直接装到3号就结束。\
\
(1)拿出F5,找到线槽,让线槽和已有线束同侧。\
\
(2)沿内侧滑动位置把F5接到2号舵盘,先对齐两端孔。\
\
(3)用配套紧固件固定两侧,螺丝头贴合就停止,不能拉弯结构件。\
\
(4)把3号舵机放入F5另一端凹槽,固定两端。\
\
(5)接上2号预留线。\
\
(6)安装3号两端对应舵盘,带齿盘在输出轴侧。\
\
(7)在3号空余插座接一根新线,留给4号。\
\
检查:F5两端连接稳固,线槽与线同侧,线没有被压在舵机下面。阻力异常时退出检查,不强压;孔错位时松开重对齐。\
\
连续动作:https://www.youtube.com/watch?v=rVP1XQ0PeM4&t=134s (02:14–03:28)。观察F5连接顺序、装入3号及舵盘;Waveshare原视频,版权归原作者。

保持断电,使用随件螺丝刀与对应紧固件。\
\
(1)拿出F6,让线槽朝向已有线束。\
\
(2)将F6沿内侧滑动位置接到3号舵盘,两端孔对齐后固定。\
\
(3)把F7支架装到F6,线槽与线束同侧。\
\
(4)把4号舵机放进支架槽,固定两端。\
\
(5)接上3号预留的总线线。\
\
(6)安装4号两端对应舵盘,齿孔对应输出轴。\
\
(7)在4号空余插座接新线,留给腕部。\
\
检查:3到4号线不被F6/F7压住;结构件贴合,螺丝头贴住就停,没有依靠拧紧把塑料拉弯的缝隙。对孔失败就松开并重新对齐,不扩大承力孔。\
\
连续动作:https://www.youtube.com/watch?v=rVP1XQ0PeM4&t=208s (03:28–04:27)。看清F6/F7装入顺序和4号线槽;Waveshare原视频,版权归原作者。

这里最容易夹线,全程断电。需要F8、5号舵机、新总线线和配套螺丝刀。\
\
(1)找到F8侧面矩形开口,让开口与4号舵机接线口同侧。\
\
(2)F8与F7水平对齐,沿滑动位置进入4号舵盘处。\
\
(3)两端孔重合后用对应螺丝固定,贴合即停。\
\
(4)把4号预留线从F8底部开口带入,再从侧面矩形口引出。\
\
(5)把这根线接到5号舵机。\
\
(6)在5号另一插座接新线,并从F8底部引出,留给6号。\
\
(7)整理两根线,不能垫在舵机与F8之间。\
\
(8)让5号输出齿轴一侧先进入,齿轴朝上,缓慢放入F8。阻力异常立即退出检查线,不推压。\
\
(9)舵机坐到底且线未受挤压后才固定螺丝。\
\
(10)5号只在输出轴侧装带齿舵盘,另一侧不装。\
\
完成检查:两根线已接好、没有折伤、没有夹在结合面。若先装舵机导致插不进线,拆回第7步;不要在狭缝里用工具硬顶插头。\
\
连续动作:https://www.youtube.com/watch?v=rVP1XQ0PeM4&t=267s (04:27–05:46)。重点看线穿过哪个开口、如何整理余量、舵机如何放入;Waveshare原视频,版权归原作者。

先断电,准备F9腕部、F10夹爪、从臂6号舵机及随件螺丝刀。\
\
(1)把F9连接到5号舵盘,孔对齐后用对应螺丝固定,贴合即停。\
\
(2)把6号舵机装入F9,固定两端。\
\
(3)接入5号预留线,此时就接,不留到通电前才补。\
\
(4)给6号两端装对应舵盘,齿孔接输出轴。\
\
(5)拿起F10,使它与F9垂直。\
\
(6)从上往下把F10滑入F9槽,直到孔与6号舵盘孔对齐。\
\
(7)固定两端,不用螺丝拉正歪斜的夹爪。\
\
检查:结构没有歪卡;缓慢改变姿态时总线不被夹爪夹住。卡住时退回重新对齐,禁止硬压。不要通电试夹手指或重物。\
\
连续动作:https://www.youtube.com/watch?v=rVP1XQ0PeM4&t=346s (05:46–06:50)。重点观察F10从上往下滑入的过程;Waveshare原视频,版权归原作者。

保持全部断电。准备一块Bus Servo Adapter、F11支架、两个桌夹。\
\
(1)将适配板固定在F11上,板底焊点不要碰散落螺丝或其他金属。\
\
(2)将F11背部方形连接件安装到F2。\
\
(3)将1号最初从底座引出的线接到适配板匹配的总线接口,辨认插座形状后直插,不能斜插。\
\
(4)从板沿线检查:只连接从臂1至6号,不连接主臂链。\
\
(5)用两个桌夹把底座固定在稳固桌边,交替夹紧,轻推底座不会滑动即可;不要夹裂树脂件。\
\
(6)把电源接头放到随手能切断的位置,线束绕开机械臂活动区。\
\
检查:板已固定,无金属短接;桌夹不松;1至6号线路连续,6号线也已接入。若夹具损伤结构件或板松动,先修正再通电。\
\
连续动作:https://www.youtube.com/watch?v=rVP1XQ0PeM4&t=410s (06:50–07:22)。视频在07:08补接6号线,本教程已要求上一步接好;请再次检查。Waveshare原视频,版权归原作者。

主臂使用6个已编号的SE编码器件,不从从臂盘拿动力舵机混装。全程断电。\
\
(1)使用L1至L8和主臂1至5号,依次完成本页底座、肩部、上臂、前臂、腕部五步的同名动作,把F件对应替换为L件。每节检查通过再继续,不把两臂接到同一总线。\
\
(2)将L9主臂腕部固定到5号舵盘,不使用F9。\
\
(3)将主臂6号SE件放入,固定两端。\
\
(4)接上5号预留线;带齿舵盘安装在6号输出轴。另一侧无齿舵盘可不装;若装,必须固定,不能松放。\
\
(5)将L10扳机固定到6号带齿舵盘。它用于手指输入,不是从臂夹爪。\
\
(6)将L11握把安装到L9,连接面贴合后固定,不用螺丝硬拉歪斜的件。\
\
(7)将第二块适配板装到L12,把L12背面方形连接件装到L2。\
\
(8)将主臂1号引出的线接到这块板。\
\
(9)用剩下两个桌夹固定主臂底座。两块板分别贴“主”“从”,记录各自端口。\
\
检查:主臂有握把和扳机,从臂有夹爪;各用独立适配板,两底座轻推都不滑。插头歪斜、线被压住或结构件开裂时停止,断电拆回对应位置修正。\
\
连续动作:https://www.youtube.com/watch?v=rVP1XQ0PeM4&t=442s (07:22–09:27)。重点看主臂L9、扳机与握把的区别;Waveshare原视频,版权归原作者。

一、通电前检查\
\
清走活动区螺丝和工具;所有插头插正、线皮完整、关节活动时线不绷紧。确认两套电源为SKU33318匹配12V5A型号,铭牌、接口均对应。两臂分别接自己的板、USB和电源。底座夹牢,臂下铺软垫,从臂电源随手可切断,成年人陪同首次通电。\
\
二、分别校准\
\
进入解压目录并激活环境:source .venv-lerobot/bin/activate\
\
下列XXXX、YYYY必须换为实际完整端口。\
\
从臂:lerobot-calibrate --robot.type=so101_follower --robot.port=/dev/cu.usbmodemXXXX --robot.id=my_follower_arm\
\
主臂:lerobot-calibrate --teleop.type=so101_leader --teleop.port=/dev/cu.usbmodemYYYY --teleop.id=my_leader_arm\
\
(1)若提示已有同名校准,新装或重新装配时输入c再回车,不复用别人的文件。\
\
(2)出现middle of its range of motion时,提前支撑臂段,把关节放在可运动范围中间,不顶限位,再回车。程序关闭力矩时机械臂可能下垂。\
\
(3)出现Move all joints except wrist_roll时,依次缓慢移动1、2、3、4、6号,在结构允许范围到两端,观察MIN/MAX变化。不硬撞限位、不拉紧线。\
\
(4)LeRobot0.6.1此阶段排除5号wrist_roll,不要求连续旋转一整圈;盲目转圈会缠线。\
\
(5)记录完回车,看到Calibration saved to和路径才完成。某关节MIN/MAX不变,先检查ID和线,不进入遥操作。\
\
(6)对另一臂重复。保留校准文件,后面使用相同my_follower_arm和my_leader_arm名称。\
\
三、第一次空载跟随\
\
把两臂放在相近且无障碍的姿态,手离开从臂;运行以下一整行命令,替换真实端口:\
\
lerobot-teleoperate --robot.type=so101_follower --robot.port=/dev/cu.usbmodemXXXX --robot.id=my_follower_arm --robot.max_relative_target=2 --teleop.type=so101_leader --teleop.port=/dev/cu.usbmodemYYYY --teleop.id=my_leader_arm --fps=10 --teleop_time_s=15\
\
只小幅移动主臂一个关节,观察从臂是否跟随;15秒后命令结束。max_relative_target限制每次目标改变量,fps限制循环频率,这不是硬件急停或防碰撞保证。正常停止用Control+C;突然撞限位、持续异响、线被拉紧时立即切断从臂电源,不伸手与电机对抗。断电后可能下垂。\
\
四、验收及排错\
\
找不到端口:使用数据线,一次插一块板,重新识别,必要时换电脑接口。无响应:断电查线及独立电源,USB不能代替舵机电源。型号不匹配:停止,核对SKU和标签,不改驱动绕过检查。跟随方向异常:断电,检查ID与装配方向,重新校准,不继续碰运气。\
\
只有两臂校准均保存、所有关节在小幅空载测试中正常且线束不受拉,才继续尝试轻小软物。本项目没有实物测试报告;软件安装和CLI检查通过不等于上述实物验收通过。
