基于Arduino与拉线传动的仿生机械手DIY全流程解析
1. 项目概述从零打造一只可编程的仿生机械手如果你对机器人技术感兴趣想亲手制作一个能响应指令、灵活运动的机械装置那么制作一只由Arduino控制的机器人手会是一个绝佳的入门项目。这不仅仅是把一堆零件拼装起来更是一个融合了基础机械设计、材料加工和嵌入式编程的综合性实践。通过这个项目你能直观地理解伺服电机如何将电信号转化为精确的角度运动鱼线和橡皮筋如何模拟人类手指的肌腱与韧带以及代码如何成为这一切动作的“大脑”。我这次制作的机器人手核心目标是实现五根手指的独立、可编程弯曲。它使用轻便的泡沫板作为骨架结构成本低廉且易于加工。动力源是常见的微型伺服电机通过鱼线“肌腱”拉动配合橡皮筋提供的回弹力模拟手指的抓握与伸展。控制核心则是一块Arduino Nano开发板它负责接收指令并驱动伺服电机。整个流程从测量、切割材料开始到机械组装、布线最后通过编程赋予其“生命”。无论你是电子爱好者、创客还是对自动化感兴趣的学生这个项目都能让你在动手过程中扎实地掌握从机械结构到控制逻辑的完整知识链。2. 核心思路与方案选型解析2.1 为什么选择“拉线式”仿生结构在机器人手的设计中驱动方式主要有齿轮传动、连杆机构和拉线肌腱传动等。我选择拉线传动方案主要是基于以下几点考量首先结构简单易于实现。拉线传动本质上就是用一根线鱼线连接驱动源伺服电机和执行末端手指指尖。当伺服电机旋转收线时线被拉紧带动手指弯曲电机反转放线时依靠橡皮筋的弹性势能使手指回伸。这种结构不需要复杂的齿轮箱或精密加工的连杆用日常工具和材料就能制作极大降低了制作门槛和成本。其次具有良好的力传递效率和灵活性。鱼线几乎不可拉伸能将伺服电机的扭矩高效地传递到手指关节。更重要的是我们可以通过调整鱼线的穿引点来改变力臂从而微调每个关节的弯曲力矩和运动范围。这种灵活性是刚性连杆机构难以比拟的。最后更贴近生物原理。人类手指的运动就是由前臂肌肉通过肌腱类似鱼线牵拉指骨实现的。拉线式结构是对这一生物力学原理的直观模拟能帮助我们更好地理解仿生学的基本概念。当然这种方案的缺点在于线的磨损和可能产生的打滑需要在制作中特别注意固定和润滑。2.2 材料选型的背后逻辑项目材料清单看起来普通但每一样都经过深思熟虑骨架材料泡沫板Styrofoam。选用高密度泡沫板是因为它重量极轻、易于切割和塑形并且具有一定的强度。轻量化对于机器人来说至关重要可以降低对伺服电机扭矩的要求。相比之下木板或亚克力板虽然更坚固但加工难度大、重量重不适合作为首次尝试的材料。“肌腱”材料钓鱼线。钓鱼线尼龙线具有高强度、低延展性和表面光滑的特点。高强度保证了在反复弯折和拉力下不易断裂低延展性确保了电机旋转角度能精确对应手指弯曲角度没有虚位表面光滑则减少了与泡沫孔洞之间的摩擦使运动更顺畅。“韧带”材料橡皮筋。橡皮筋在这里扮演了“拮抗肌”和“复位弹簧”的角色。它为手指提供了回弹力当鱼线放松时能自动将手指拉回伸直状态。选择多种尺寸的橡皮筋可以针对不同手指如力量需求大的拇指调整回弹力度。驱动单元微型伺服电机Servo。伺服电机是核心执行器。我选用常见的9g微型舵机因为它体积小、重量轻、带有内置控制电路只需通过Arduino发送PWM脉宽调制信号就能控制其旋转到指定角度无需额外的电机驱动模块简化了系统。控制核心Arduino Nano。选择Nano型号是因为它尺寸小巧足以嵌入手掌或前臂结构中同时其IO口数量足以控制5个舵机本项目至少需要5个数字PWM口。其丰富的社区资源和库文件支持也让编程调试变得非常方便。注意市面上伺服电机有“180度”和“360度”连续旋转之分。本项目需要的是180度舵机它可以在0到180度之间精确旋转并保持位置用于模拟手指的特定弯曲角度。切勿买成连续旋转舵机后者只能控制转速和方向无法保持特定角度。2.3 系统工作流程总览在动手之前理解整个系统如何协同工作至关重要用户指令输入可以通过串口监视器发送命令或者未来扩展为通过传感器如弯曲传感器、肌电传感器或蓝牙模块接收指令。Arduino处理Arduino Nano主板接收到指令后根据预设的程序逻辑计算出每根手指对应的目标角度。信号输出Arduino通过5个独立的数字引脚向对应的5个伺服电机发送PWM控制信号。动作执行伺服电机根据信号旋转到目标角度。旋转运动转化为收线或放线。机械传动鱼线被收紧拉动手指指骨克服橡皮筋的拉力使手指关节弯曲。电机反转时鱼线放松橡皮筋的弹性使手指伸直。动作反馈完成抓握、伸展等动作。这个闭环指令-处理-驱动-动作是大多数机器人控制系统的基本模型本项目提供了一个非常清晰的实体化示例。3. 机械结构制作详解与实操要点3.1 精确测量与个性化纸样设计制作的第一步不是切割而是精确测量。因为机械手是基于你自己的手型制作的这能确保结构的合理性和舒适度。测量项目手指测量每根手指拇指、食指、中指、无名指、小指三个指节的长度和指节处的宽度。建议手指微微弯曲测量指节背面的弧线长度这更符合运动时的状态。手掌测量手掌的宽度从拇指根到小指根和长度从手腕到中指根。前臂支撑段测量你打算让机械手“佩戴”的前臂部分的长度和周长这将做成一个开放的“C”形槽用于固定整个装置。绘制纸样在纸上按1:1比例画出所有部件。手指画成长条矩形并根据测量的指节位置画线分隔。在指节线两侧画出用于穿鱼线的孔位标记靠近手指背部。手掌画成一个近似梯形或根据你手掌形状描绘的轮廓。前臂支撑画成一个长条矩形然后在其一侧画出锯齿状或平滑的曲线以便用扎带固定。将纸样剪下放在手背上进行比对检查比例是否协调关节位置是否大致对应。实操心得不要只测量伸直状态的长度。尝试做出抓握动作测量此时指节间的距离这个数据对于后续确定鱼线有效行程和伺服电机旋转范围至关重要。可以拍下手指弯曲的侧视图作为设计的参考。3.2 泡沫骨架的切割、打磨与关节成型这是将二维图纸转化为三维结构的关键步骤耐心和精细决定最终效果。转印与切割用胶水或双面胶将纸样临时固定在泡沫板上。使用美工刀Exacto knife进行切割。刀片一定要锋利采用多次轻划的方式切割而不是试图一刀切透这样边缘会更整齐不易产生碎屑。切割手指沿外轮廓切出五个手指条。切割手掌与前臂将其作为一个整体部件切出增强结构强度。塑造指节圆柱面手指不是扁平的需要将其打磨成近似的圆柱形以便更自然地弯曲也便于后续粘贴“关节”。用砂纸或砂块将手指条的四个棱角慢慢打磨圆滑。重点打磨指腹正面一侧使其弧度更大手指背部反面可以保留稍平一些用于粘贴后续的“关节限制块”。注意事项打磨要均匀经常比对手指避免一侧磨得过多导致不对称。打磨产生的泡沫粉尘较多建议在通风处操作并佩戴口罩。创建指关节根据纸样上标记的指节线用美工刀在手指背部即将来穿鱼线的一面刻出浅浅的V型槽或U型槽。这个槽的深度约为泡沫板厚度的一半它将成为手指的“铰链”引导弯曲发生在正确位置。另一种更可靠的方法是将每个指节单独切割出来然后用一小块结实的布料如帆布或薄皮革作为“关节衬垫”用强力胶粘在指节间的侧面形成真正的柔性铰链。这种方法耐久性更好。3.3 “肌腱”与“韧带”系统的组装这是让手指动起来的传动系统组装精度直接影响动作的顺滑度和一致性。穿引“肌腱”鱼线为每根手指准备一根长约40-50cm的鱼线。穿线顺序从指尖开始。在指尖顶部中心位置钻一个小孔将鱼线一端打结固定结可以埋入一个预先挖的小凹槽并用胶水封住避免凸起。沿着手指背部在每个指节线的上方靠近指尖一侧钻孔或使用烧红的针烫出小孔。将鱼线依次穿过这些孔。这样当拉紧鱼线时拉力作用在指节上方才能有效地使手指向下向掌心方向弯曲。鱼线另一端暂时留长待连接伺服电机。安装“韧带”橡皮筋与关节限位橡皮筋安装在手指的掌侧即手心那一面粘贴橡皮筋。位置与背部的鱼线孔相对应但在指节线的下方。橡皮筋的作用是提供与鱼线拉力相反的回复力。可以使用多条细橡皮筋并联以调整回复力的大小。关节限位为了防止手指过度反向弯曲向后折需要在手指背部每个关节处粘贴一小块泡沫或塑料片作为“限位块”。这模拟了人类手指关节的解剖学限制。关键技巧在粘贴橡皮筋和限位块之前先将手指弯曲到预期的最大抓握角度在这个姿态下进行粘贴可以确保橡皮筋在手指伸直时具有预紧力而在弯曲时又不会过度拉伸。使用快干胶如CA胶或热熔胶固定热熔胶操作更灵活但体积较大。制作线缆导向与张紧机构鱼线从手指根引出后需要被引导至伺服电机。在手掌和前臂结构上安装一系列“导线环”。可以使用回形针弯成小圆环或用小螺丝固定的小型滑轮更顺滑确保鱼线走线路径顺畅、摩擦小。在鱼线末端与伺服电机摇臂连接处必须设计张紧调节机构。最简单的方法是在鱼线末端打一个活结并让鱼线穿过一个在伺服电机附近固定的小线扣通过拉动鱼线来调节松紧后再最终固定。确保所有手指在伸直状态时鱼线都处于略微松弛无张力状态在伺服电机旋转到最大角度时鱼线能紧绷并将手指拉到预定位置。4. 电路连接与伺服电机安装4.1 伺服电机布局与固定五根手指需要至少五个舵机。布局原则是重心平衡、走线方便、便于维护。布局规划将五个舵机并排或分成两组安装在前臂结构的内侧或外侧。可以考虑3D打印或使用轻木制作一个紧凑的舵机支架将所有舵机整合成一个模块再整体固定到前臂上。这样比单个粘贴更稳固、更整洁。固定方法使用热熔胶或螺丝固定。热熔胶方便但怕持续震动和高温螺丝固定最可靠。可以在泡沫底座上嵌入螺母或使用穿通螺丝加垫片的方式。摇臂与鱼线连接将舵机摇臂通常随舵机附赠多种形状安装到舵机输出轴上。在摇臂最外端的孔上系紧鱼线。关键点确保当舵机处于初始位置通常是0度或90度取决于你程序的定义时手指处于完全伸直状态此时鱼线应松弛。舵机向一个方向旋转时收线拉弯手指。4.2 Arduino控制系统电路搭建电路连接非常简单但务必准确避免短路或接反。所需元件Arduino Nano 开发板 x1微型9g舵机180度 x5USB数据线 x1面包板及杜邦线公对公、公对母若干外部5V/2A直流电源推荐或容量足够的移动电源 x1连接步骤供电警告切勿仅通过Arduino Nano的USB口为5个舵机供电舵机在启动和堵转时瞬时电流很大USB口或Arduino板载稳压芯片无法提供足够电流会导致板子复位或损坏。正确接法使用一个外部的5V稳压电源如常见的手机充电器改接或专用的5V DC电源。将外部电源的正极5V连接到面包板的正极总线负极GND连接到面包板的负极总线。将所有5个舵机的红线VCC连接到面包板的正极总线。将所有5个舵机的棕线或黑线GND连接到面包板的负极总线。将所有5个舵机的橙线或黄线信号线分别连接到Arduino Nano的数字引脚~3, ~5, ~6, ~9, ~10这些引脚都支持PWM输出。最后将Arduino Nano的VIN引脚如果使用外部7-12V电源或5V引脚如果使用外部5V电源需谨慎连接到面包板正极总线并将Arduino Nano的任意一个GND引脚连接到面包板负极总线。这样Arduino和舵机就实现了共地。电路连接示意表组件引脚/线色连接到舵机1信号线橙Arduino D3舵机2信号线橙Arduino D5舵机3信号线橙Arduino D6舵机4信号线橙Arduino D9舵机5信号线橙Arduino D10所有舵机电源线红外部5V电源所有舵机地线棕/黑外部5V电源-Arduino NanoGND外部5V电源- (共地)Arduino NanoVIN/5V*外部电源注意若外部电源为5V可接Nano的5V引脚但需确保电源非常稳定若为7-12V接VIN引脚更安全。最稳妥的方案是使用一个独立的5V稳压模块为舵机供电同时通过USB为Arduino供电两者GND相连即可。5. Arduino控制程序编写与调试5.1 基础单舵机测试与校准在编写复杂手势前必须确保每个舵机都能被单独正确控制。安装开发环境从Arduino官网下载并安装Arduino IDE。基础测试程序打开IDE编写以下代码上传到Arduino Nano。这个程序会让连接在D3引脚上的舵机往复转动。#include Servo.h // 调用舵机库 Servo myServo; // 创建一个舵机对象 int servoPin 3; // 舵机信号线接在D3引脚 void setup() { myServo.attach(servoPin); // 将舵机对象绑定到指定引脚 // 许多舵机在attach()时脉宽范围被默认设置为544-2400微秒对应0-180度。 // 如果你的舵机运动范围不对可以在此校准myServo.attach(servoPin, 500, 2500); } void loop() { myServo.write(0); // 命令舵机转到0度位置 delay(1000); // 等待1秒 myServo.write(90); // 命令舵机转到90度位置 delay(1000); myServo.write(180); // 命令舵机转到180度位置 delay(1000); }机械校准上传代码后观察舵机运动。记录下当舵机在myServo.write(0)和myServo.write(180)时摇臂的实际位置。物理校准断开电源手动将舵机摇臂转到与你想要的“0度”手指伸直和“180度”手指最大弯曲对应的物理位置然后重新装上摇臂。这一步至关重要能确保软件指令和物理位置对齐。软件微调如果物理校准后运动范围仍不精确可以使用writeMicroseconds()函数进行更精细的控制。例如myServo.writeMicroseconds(1500)通常对应中立位置90度。5.2 多舵机协同与手势编程控制五根手指意味着要协调五个舵机。我们需要为每个手指定义一个舵机对象并规划它们在不同手势中的目标角度。定义与初始化#include Servo.h // 为每个手指创建一个舵机对象 Servo thumbServo; Servo indexServo; Servo middleServo; Servo ringServo; Servo pinkyServo; // 定义每个舵机连接的引脚 const int thumbPin 3; const int indexPin 5; const int middlePin 6; const int ringPin 9; const int pinkyPin 10; // 存储每个手指的当前角度和目标角度 int thumbAngle 0, indexAngle 0, middleAngle 0, ringAngle 0, pinkyAngle 0; int thumbTarget 0, indexTarget 0, middleTarget 0, ringTarget 0, pinkyTarget 0; void setup() { Serial.begin(9600); // 初始化串口通信用于调试 // 将每个舵机对象绑定到对应的引脚 thumbServo.attach(thumbPin); indexServo.attach(indexPin); middleServo.attach(middlePin); ringServo.attach(ringPin); pinkyServo.attach(pinkyPin); // 初始化所有手指为伸直状态假设0度为伸直 openHand(); delay(1000); } void loop() { // 主循环可以监听串口命令或按顺序执行预设手势 // 示例通过串口发送字符‘1’执行抓握发送‘2’执行OK手势 if (Serial.available() 0) { char command Serial.read(); switch (command) { case 1: grip(); break; case 2: okSign(); break; case o: openHand(); break; } } }编写手势函数 手势函数的核心是为每个手指设定一组目标角度并让舵机平滑地运动到那些位置。// 张开手所有手指伸直 void openHand() { thumbTarget 0; indexTarget 0; middleTarget 0; ringTarget 0; pinkyTarget 0; smoothMove(); // 调用平滑移动函数 } // 抓握手势所有手指弯曲拇指内收 void grip() { thumbTarget 120; // 拇指弯曲角度较大可能需要单独校准 indexTarget 100; middleTarget 110; // 中指通常弯曲最多 ringTarget 105; pinkyTarget 90; smoothMove(); } // OK手势拇指和食指弯曲并接触其他手指伸直 void okSign() { thumbTarget 80; indexTarget 80; middleTarget 0; ringTarget 0; pinkyTarget 0; smoothMove(); } // 平滑移动函数让所有手指从当前角度逐步变化到目标角度避免动作生硬 void smoothMove() { int stepDelay 15; // 每步延迟毫秒数控制速度 while (!anglesReached()) { // 循环直到所有手指到达目标角度 // 更新每个手指的当前角度向目标角度靠近一步 thumbAngle updateAngle(thumbAngle, thumbTarget); indexAngle updateAngle(indexAngle, indexTarget); middleAngle updateAngle(middleAngle, middleTarget); ringAngle updateAngle(ringAngle, ringTarget); pinkyAngle updateAngle(pinkyAngle, pinkyTarget); // 将新角度写入舵机 thumbServo.write(thumbAngle); indexServo.write(indexAngle); middleServo.write(middleAngle); ringServo.write(ringAngle); pinkyServo.write(pinkyAngle); delay(stepDelay); } } // 更新单个角度的辅助函数 int updateAngle(int current, int target) { if (current target) { return current 1; } else if (current target) { return current - 1; } else { return current; } } // 检查所有角度是否已达到目标的辅助函数 bool anglesReached() { return (thumbAngle thumbTarget) (indexAngle indexTarget) (middleAngle middleTarget) (ringAngle ringTarget) (pinkyAngle pinkyTarget); }5.3 利用Python进行辅助计算与串口控制正如摘要中提到的可以用Python进行一些数学计算如根据抓取物体尺寸估算手指角度并通过串口与Arduino通信实现更复杂的上位机控制。安装PySerial库在命令行中运行pip install pyserial。编写Python控制脚本import serial import time # 配置串口端口名‘COM3’Windows或‘/dev/ttyUSB0’Linux/Mac需根据实际情况修改 ser serial.Serial(COM3, 9600, timeout1) time.sleep(2) # 等待Arduino重启 def send_command(command_char): 向Arduino发送单个字符命令 ser.write(command_char.encode()) print(fSent: {command_char}) def calculate_angles_for_cylinder(diameter, hand_scale): 一个简化的示例函数根据要抓取的圆柱体直径估算各手指角度伪代码 # 这里需要你根据自己机械手的几何尺寸建立数学模型 # 例如角度 k * (直径 - 手指自然间距) 基础角度 # 以下为示意值 base_angle 20 k 5 estimated_angle base_angle k * diameter # 限制角度在0-180之间 estimated_angle max(0, min(180, estimated_angle)) return [estimated_angle] * 5 # 假设所有手指角度相同 # 示例控制机械手 if __name__ __main__: try: print(机械手控制开始。输入命令1(抓握), 2(OK), o(张开), q(退出)) while True: user_input input(请输入命令: ).strip() if user_input q: break elif user_input in [1, 2, o]: send_command(user_input) elif user_input.startswith(grab): # 假设命令格式为 grab 50表示抓取直径50mm的物体 _, diam_str user_input.split() diameter float(diam_str) angles calculate_angles_for_cylinder(diameter, 1.0) # 这里需要扩展协议将角度数组发送给Arduino而不仅仅是单个字符 # 例如可以发送类似“a90,80,100,85,75\n”的字符串 print(f计算得到角度: {angles} (此功能需要扩展Arduino代码)) else: print(未知命令) except KeyboardInterrupt: pass finally: ser.close() print(串口关闭。)这个Python脚本打开了一个交互式控制台你可以输入简单命令来控制手势并预留了根据物体尺寸计算角度的函数接口。要真正实现角度传输需要定义更复杂的串口通信协议例如发送一串以逗号分隔的角度值以换行符结束并在Arduino端编写相应的解析代码。6. 系统总装、调试与问题排查6.1 总装流程与功能测试在机械结构和电路代码分别测试无误后进行总装整合机械与电路将安装好舵机的前臂结构与手掌、手指部分连接固定。仔细整理鱼线确保其在导线环中滑动顺畅没有缠绕或过度摩擦。将舵机信号线、电源线沿着前臂结构捆扎好连接到位于前臂末端的Arduino控制板和电源模块上。上电前最终检查检查所有电路连接确保正负极没有接反、短路。用手轻轻拨动每个手指检查是否有卡滞鱼线是否绷得太紧或太松。确保所有舵机摇臂处于“零位”手指伸直状态。分阶段上电测试首先只给Arduino上电通过USB打开串口监视器看是否有正常输出程序是否运行。然后再接通外部舵机电源。注意安全此时手指可能会突然运动。通过串口发送‘o’命令测试所有手指是否能平滑伸直。依次测试‘1’抓握、‘2’OK等手势观察动作是否协调、到位。6.2 常见问题与解决方案速查表在调试过程中你几乎一定会遇到下面这些问题。这里是我踩过坑后总结的排查清单问题现象可能原因排查与解决方法某个手指完全不动1. 舵机信号线接触不良或断开。2. 该舵机供电不足或损坏。3. Arduino对应引脚损坏或程序未初始化该舵机。1. 检查杜邦线连接换用其他引脚测试。2. 单独给该舵机供电测试听是否有吱吱声或尝试用手轻轻转动齿轮需断电感觉是否有阻力。3. 检查代码中attach的引脚号是否正确。手指运动无力无法弯曲到位1. 鱼线太松有效行程不足。2. 舵机扭矩不足可能因电源电压低导致。3. 机械结构摩擦过大如鱼线孔不光滑、关节过紧。1. 重新调整鱼线张紧度确保在舵机初始位时鱼线松弛在最大角度时紧绷。2. 检查外部电源电压是否稳定在5V以上电流是否足够建议2A以上。3. 在鱼线经过的孔洞处涂抹少许润滑油如硅脂检查关节活动是否顺滑。手指运动时抖动或跳动1. 电源功率不足导致舵机供电波动。2. 机械阻力不均匀或鱼线有打结。3. 程序中没有使用平滑移动函数角度变化过于突兀。1. 使用更强劲的独立电源为舵机供电并与Arduino电源共地。2. 检查并理顺鱼线路径确保无卡顿。3. 使用类似smoothMove()的函数让角度渐变而非跳变。所有舵机同时运动时Arduino重启典型供电不足。舵机启动电流极大拉低了整个系统的电压。必须使用独立电源为舵机组供电确保Arduino的GND与外部电源GND相连。这是本项目中最常见的电路问题。手指回位不准确或缓慢1. 橡皮筋老化或拉力不足。2. 鱼线与孔洞摩擦力过大。3. 舵机在回位方向没有足够的“放松”空间即初始位鱼线仍被轻微拉紧。1. 更换新的、拉力合适的橡皮筋。2. 使用更光滑的导线环或小滑轮。3. 重新校准舵机初始位确保手指在伸直时鱼线完全松弛。串口命令无响应1. Arduino与电脑串口端口选择错误或波特率不匹配。2. 程序中的Serial.read()逻辑有误或缓冲区有残留字符。1. 在IDE工具菜单中确认端口号并检查代码与监视器的波特率是否都是9600。2. 在loop()中打印接收到的字符进行调试Serial.print(Received: ); Serial.println(command);6.3 优化与扩展思路当基础功能实现后你可以考虑以下方向进行优化和扩展让这个机器人手更具挑战性和实用性增加传感器反馈触觉在指尖粘贴薄膜压力传感器FSR感知抓握力度实现自适应抓取。位置在指关节处安装弯曲传感器Flex Sensor实时读取手指弯曲角度实现更精确的闭环控制。视觉配合一个简单的摄像头和OpenCV库让机械手能够识别并抓取特定颜色的物体。改进机械设计使用3D打印PLA/ABS或激光切割亚克力、椴木板制作更坚固、更精密的零件替换泡沫结构。设计更符合生物力学的多关节连杆手指实现更复杂的运动轨迹。为拇指添加一个旋转底座实现对立抓握捏取这是实现灵巧操作的关键。升级控制系统换用更强大的控制器如Arduino Mega更多IO口、ESP32集成Wi-Fi/蓝牙或树莓派可运行复杂视觉算法。开发图形化上位机软件用Processing或Python Tkinter通过滑块实时控制每个手指并保存和回放手势序列。尝试用机器学习如TensorFlow Lite训练一个简单的手势分类模型让机械手模仿你的手部动作。制作这样一个机器人手的过程远不止于得到一件会动的玩具。它是一次对机电一体化系统从概念到实物的完整演练。从最初的尺寸测量、结构设计到中期的精细加工、传动组装再到最后的电路连接、编程调试每一个环节出现问题都会导致最终失败。而解决问题的过程正是经验积累和能力提升的核心。我自己的第一个版本因为鱼线张紧没调好手指动作歪歪扭扭又因为供电不足一抓东西就重启。反复调整了三四次才达到比较满意的效果。所以如果你在制作中也遇到了麻烦别气馁那正是学习的精华所在。拿起万用表检查电压用串口监视器观察数据耐心地调整鱼线长度和胶水点位这个过程本身就是成为一名实干派工程师的必修课。