delta机器人制作

99ANYc3cd6 机器人 2

Delta机器人制作全攻略

Delta机器人是一种并联机器人,以其高速度、高精度和轻量化而闻名,非常适合用于分拣、包装、3D打印、绘画等任务。

delta机器人制作-第1张图片-广州国自机器人
(图片来源网络,侵删)

第一部分:核心概念与工作原理

在开始制作前,理解其基本原理至关重要。

  • 结构组成:

    1. 固定基座: 顶部的静止平台,所有伺服电机都安装在这里。
    2. 伺服电机: 三个(或更多)电机,负责驱动机器人的主要运动。
    3. 主动臂: 连接在电机输出轴和“中心平台”之间的连杆,它们只做旋转运动。
    4. 从动臂: 连接在主动臂末端和“中心平台”之间的连杆,它们将主动臂的旋转转化为中心平台的平移。
    5. 中心平台: 机器人的“末端执行器”,即我们想要移动的部分,它由三组平行四边形连杆机构支撑,确保其始终保持水平,只进行XY平移和Z轴升降。
    6. 末端执行器: 安装在中心平台上的工具,如吸盘、夹爪、笔等。
  • 工作原理: 三个伺服电机分别转动,带动各自的主动臂旋转,主动臂通过球关节或万向节驱动从动臂,从而精确控制中心平台在三维空间中的位置,由于三组连杆形成一个闭环结构,其运动解算(即已知电机角度求末端位置)相对复杂,需要用到逆向运动学。


第二部分:设计与选材

设计与3D建模

这是最关键的一步,您可以选择自己设计,也可以使用现成的开源设计。

delta机器人制作-第2张图片-广州国自机器人
(图片来源网络,侵删)
  • 推荐开源项目(强烈推荐新手使用):

    • Mecademic's R5: 这是一款经典的工业级Delta机器人,其设计图纸和原理图被广泛公开,是学习的绝佳范本。
    • Open Source Delta Robot: 在Thingiverse、Printables等网站上可以找到大量免费的开源3D模型文件,搜索 "Delta Robot" 或 "Delta Printer",您会找到很多设计。
    • GitHub: 搜索 "delta robot",可以找到包含完整机械设计、电子和代码的项目。
  • 设计软件:

    • Fusion 360: 首选,集CAD、CAM于一体,非常适合机械设计。
    • SolidWorks / Creo: 专业级CAD软件。
    • Tinkercad: 简单易用,适合非常基础的设计。
  • 设计要点:

    • 尺寸比例: 主动臂和从动臂的长度直接影响机器人的工作范围和速度,从动臂略长于主动臂。
    • 关节: 主动臂与电机、主动臂与从动臂、从动臂与中心平台的连接处都需要灵活的关节,最常见的设计是使用球头和球窝,或者万向节,以允许多方向自由旋转。
    • 轻量化: 中心平台和连杆的质量越小,电机需要提供的力就越小,机器人就能运动得越快,设计时要尽量减轻不必要的重量。

材料选择

  • 3D打印部件:

    • 材料: PETG, ABS, Nylon, 或碳纤维增强PLA,PETG是很好的选择,它既有强度又有一定的韧性。
    • 建议: 如果您没有3D打印机,可以在线下或通过云打印服务订购这些零件。
  • 结构件:

    • 基座: 可以用亚克力板铝型材木板切割/组装而成,铝型材是最坚固和专业的选择。
    • 连杆: 通常直接用3D打印件,如果需要更高强度,可以考虑使用碳纤维杆或轻质铝合金杆。
  • 电子元件:

    • 伺服电机: 必选大扭力、高转速的数字舵机
      • 型号推荐: MG996R (便宜,但精度和寿命一般), DS3218 (性能较好,常用), Dynamixel AX-12A (智能舵机,可以编码反馈,但价格昂贵),对于小型桌面Delta,3个DS3218是很好的起点。
    • 控制器:
      • Arduino Uno/Nano: 最常用,社区支持强大,足够处理Delta机器人的控制逻辑。
      • ESP32/ESP8266: 如果您需要Wi-Fi或蓝牙控制,这是绝佳选择。
    • 电机驱动: 如果您使用的是普通舵机,可以直接由Arduino的5V引脚供电(但电流要足够),如果使用多个大功率舵机或Dynamixel舵机,需要专门的驱动板。
    • 电源: 舵机需要较大电流,一个5V/10A或20A的开关电源是必需的。千万不要用电脑USB口直接给多个舵机供电!
    • 其他: 杜邦线、面包板(用于原型测试)、螺丝、螺母等。

第三部分:组装步骤

  1. 打印所有部件: 确保您的3D打印机设置正确,打印出所有需要的零件,包括基座、电机支架、连杆、中心平台等。
  2. 组装基座: 将伺服电机牢固地安装在基座上,确保电机安装面平整,螺丝拧紧,否则在高速旋转时会产生振动。
  3. 连接主动臂: 将主动臂的一端连接到电机的输出轴上,另一端准备连接从动臂,通常使用螺丝和螺母固定。
  4. 组装从动臂和中心平台: 将从动臂连接到主动臂的末端,然后将从动臂的另一端连接到中心平台的三个角上。确保三组连杆形成的平行四边形结构非常灵活且无卡顿,这是保证平台水平的关键。
  5. 电气连接:
    • 舵机控制线: 将三个舵机的信号线(通常是橙色或黄色)连接到Arduino的数字PWM引脚(如~3, ~5, ~6),将它们的VCC线(红色)连接到外部5V电源的正极,GND线(棕色/黑色)连接到外部电源的负极。
    • Arduino供电: 将Arduino通过USB连接到电脑,或者使用一个独立的5V电源为其供电。
    • 共地: 非常重要! 将外部电源的GND和Arduino的GND连接在一起,确保它们有共同的参考地。
  6. 初步测试: 在上传任何代码之前,先通电检查,用手轻轻转动每个电机,看是否能顺畅地带动整个机械臂运动,没有碰撞或干涉。

第四部分:编程与控制

这是让机器人“活”起来的部分。

核心算法:逆向运动学

  • 问题: 已知中心平台的目标坐标,计算出三个电机需要转动的角度。
  • 解决方案: 这需要一些三角学知识,网上有大量的现成公式和代码,您可以直接找到Delta机器人的IK算法库并集成到您的项目中。

硬件控制

  • 库推荐: 使用 Servo.h 库来控制Arduino的舵机。

    #include <Servo.h>
    Servo servo1, servo2, servo3; // 创建三个舵机对象
    void setup() {
      servo1.attach(3);  // 将舵机1连接到引脚3
      servo2.attach(5);  // 将舵机2连接到引脚5
      servo3.attach(6);  // 将舵机3连接到引脚6
    }
    void loop() {
      // 示例:将所有舵机转到90度位置
      servo1.write(90);
      servo2.write(90);
      servo3.write(90);
      delay(1000);
    }

软件实现(以Python为例)

使用Python和PyFirmata库可以通过电脑来控制Arduino,更便于调试。

  1. 在Arduino上上传Firmata固件: 使用Arduino IDE的 "File -> Examples -> Firmata -> StandardFirmata" 并上传到您的Arduino板。

  2. Python环境安装:

    pip install pyfirmata
  3. Python控制代码示例:

    from pyfirmata import Arduino, util
    import time
    # 替换为您的Arduino端口
    board = Arduino('COM3') 
    # 定义连接舵机的引脚
    servo_pin1 = board.get_pin('d:3:s') # 'd'代表digital, 's'代表servo
    servo_pin2 = board.get_pin('d:5:s')
    servo_pin3 = board.get_pin('d:6:s')
    # 这里应该是您的逆向运动学函数
    # 输入 x, y, z 坐标,输出三个角度 angle1, angle2, angle3
    def inverse_kinematics(x, y, z):
        # 这是一个简化的伪代码,您需要实现真实的IK算法
        # ...
        angle1 = ... 
        angle2 = ...
        angle3 = ...
        return angle1, angle2, angle3
    try:
        while True:
            # 示例:让机器人画一个正方形
            # 移动到点A
            angles = inverse_kinematics(100, 100, -50) # 假设的坐标
            servo_pin1.write(angles[0])
            servo_pin2.write(angles[1])
            servo_pin3.write(angles[2])
            time.sleep(1)
            # 移动到点B
            angles = inverse_kinematics(100, -100, -50)
            servo_pin1.write(angles[0])
            servo_pin2.write(angles[1])
            servo_pin3.write(angles[2])
            time.sleep(1)
            # ... 其他点
    except KeyboardInterrupt:
        print("程序停止")
        board.exit()

可视化与轨迹规划

为了让机器人执行复杂任务(如画画、分拣),您需要:

  • 可视化工具: 使用 Processingp5.js 创建一个简单的2D/3D可视化界面,在电脑上模拟机器人的运动,并将鼠标点击的坐标发送给Python脚本,再由Python计算角度并控制Arduino。
  • 轨迹规划: 编写函数,让机器人平滑地从一个点移动到另一个点,而不是瞬间跳转,这通常通过插值(如线性插值或样条曲线)来实现。

第五部分:调试与优化

  1. 校准: 每个舵机的“0度”位置可能不同,您需要校准,确保当所有舵机都在中位(如90度)时,中心平台处于正中央且水平。
  2. 检查干涉: 运行时,确保连杆之间或连杆与基座之间没有碰撞。
  3. 平滑运动: 如果运动不平稳,可能是电源供电不足或代码中的角度变化太快,尝试更换大功率电源或在代码中加入延时。
  4. 增加限位开关: 为了防止机器人运动到极限位置损坏电机或结构,可以安装限位开关来限制运动范围。

第六部分:进阶项目

  • 3D Delta打印机: 将末端执行器换成挤出头,就是一个Delta结构的3D打印机。
  • Pick and Place机器: 在末端执行器上安装电磁铁或真空吸盘,实现自动分拣和放置小零件。
  • 绘图机器人: 换上不同粗细的笔,可以绘制复杂的图案。
  • 使用Dynamixel舵机: 升级到更智能的舵机,可以获得更精确的位置、速度和力反馈,实现更高级的控制。

祝您制作顺利!这是一个回报率极高的项目,当您看到自己亲手制作的机器人高速、精准地运动时,成就感是无与伦比的。

抱歉,评论功能暂时关闭!