恩培-计算机视觉

 找回密码
 立即注册
搜索
查看: 1079|回复: 0

[Episode1 六机械臂资料] Episode1 资料中心(驱动、上位机、机械臂参数、API开发)

[复制链接]

192

主题

114

回帖

4695

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
4695
发表于 2025-3-13 09:27:47 | 显示全部楼层 |阅读模式

[toc]

一、资料下载

类型 版本 下载地址 功能 新版本更新点
USB2CAN驱动 / 1.Windows10及以上<br /><br />2.Linux /
Episode1 校准测试软件<img src="https://enpei-md.oss-cn-hangzhou.aliyuncs.com/202503111004243.png?x-oss-process=style/wp" alt="img" style="zoom: 25%;" /> V 0.9.1 Windows V0.9.2版本<br /><br />Linux V0.9.1版本<br />源码版本(待发布) 角度读取<br />设置回零参数<br />顺序回零<br />检查相电流<br />修改单个电机回零参数<br />夹爪控制<br />测试旋转 1.第5号电机放行1000ma回零电流
Episode1 上位机软件<img src="https://enpei-md.oss-cn-hangzhou.aliyuncs.com/202503182100366.png?x-oss-process=style/wp" style="zoom: 25%;" /> V 0.9.2 Windows 0.9.2版本<br /><br />Linux 0.9.1版本<br />源码版本(待发布) IP、端口设置<br />USB ID设置<br />TCP API服务<br />恢复模式<br />Robodk启用<br />位置、关节角显示<br />运行日志 兼容CPP API Demo代码
Episode1 RoboDK驱动 V 1.0 点击下载 支持IP、端口<br />支持MoveJ<br />支持MoveL<br />支持示教
Episode1 RoboDK机器人建模文件 V 1.0 点击下载 /
Episode1 RoboDK参考案例 V1.0 点击下载 /
二次开发SDK Demo(Python) V1.1 点击下载 急停<br />角度模式<br />位置模式<br />直线模式<br />欧拉角模式<br />负压吸盘<br />二指舵机夹爪<br />自由移动<br />获取角度<br />Robodk孪生同步 pickle改json
二次开发SDK Demo(C++) V1.0 点击下载 同上

二、机械臂参数

2.1. 机械臂本体参数

  • 自由度:6 轴
  • 驱动系统:步进电机 + 高精度行星减速器
  • 控制模式:FOC(磁场定向控制)闭环控制
  • 通讯接口:CAN 总线
  • 有效负载能力:500 g
  • 最大工作半径:510 mm
  • 重复定位精度:±0.03 mm(非国标测试方法,仅供参考)
  • 回零方式:机械限位 + 编码器自动回零
  • 供电要求:12V DC / 10 A
  • 本体重量:8.3 kg(不含夹爪)
  • 材质:PLA外壳+ 金属连接件
  • 安装方式:标准 M6 螺栓固定,底座尺寸点击下载
  • 安全特性:软件限位 / 支持软件急停
  • 工作环境温度:0°C ~ 45°C
  • 工作噪音:低于 55 dB
  • 关节旋转角度范围: | 关节编号 | 旋转角度范围 (°) | | -------- | ----------------- | | J1 | 0 ~ 340 | | J2 | 0 ~ 180 | | J3 | 0 ~ 163 | | J4 | 0 ~ 335 | | J5 | 0 ~ 220 | | J6 | 0 ~ 335 |
  • DH参数 | 关节 i | a (mm) | α (弧度) | d (mm) | θ (范围) | | ------ | ------ | --------- | ------ | --------------- | | 1 | 55 | π/2 | 166 | [-180°, 160°] | | 2 | 200 | 0 | 0 | [0°, 180°] | | 3 | 56 | π/2 | 0 | [-80°, 83°] | | 4 | 0 | -π/2 | 192 | [-30°, 305°] | | 5 | 0 | π/2 | 0 | [-110°, 110°] | | 6 | 0 | 0 | 55 | [-30°, 305°] |

2.2 末端夹爪系统参数

2.2.1. 负压吸盘夹爪

  • 驱动方式:负压真空吸附
  • 控制单元:基于 STM32 主控
  • 通讯协议:CAN 总线控制
  • 额定负压吸力:-0.04Mpa
  • 电源输入:12 V DC

2.2.2. 二指舵机夹爪

  • 驱动方式:高扭矩 25 KG·cm 数字舵机
  • 控制单元:基于 STM32 主控
  • 通讯协议:CAN 总线控制
  • 舵机电压范围:6~7.4 V DC

2.2.3. 通用夹具接口

  • 末端法兰盘孔位 M3×4,直径 44 mm,安装尺寸点击下载

3. 软件系统

  • 上位机控制软件:实时监控 / API服务/ 手动控制 / 回零校准 / 拖拽示教
  • 校准软件:支持视觉标定、机械手眼标定
  • 仿真软件支持:RoboDK 官方模型,计划支持 ROS + MoveIt 仿真环境

4.开发者 SDK 支持

  • 通信协议:TCP 协议
  • API 支持语言:Python、C++、C#、Java
  • 提供运动模式接口:
    • MoveJ(关节角度运动)
    • MoveL(直线插补运动)
    • 坐标位置模式(笛卡尔空间控制)
    • 欧拉角模式(姿态调节)
  • 免费提供丰富 Demo 示例代码:
    • 视觉手眼标定
    • 3D 点云自动抓取
    • 6D 位姿捕获抓取

后期若开发出稳定易用的开源仿真环境(如 ROS MoveIt 一键配置包),将在官网及文档中免费提供教程与使用指南,供开发者与学习者参考使用。

三、SDK API介绍

<font color="red">先更新上位机到V 0.9.1以上</font>

<font color="red">先更新上位机到V 0.9.1以上</font>

<font color="red">先更新上位机到V 0.9.1以上</font>

下面介绍如何使用客户端发送指令给服务器来控制机械臂。每条指令都封装为一个json格式数据,通过 TCP 连接发送给服务器,服务器解析指令后返回执行结果。下文列出了各个指令的用途、参数说明和示例。

完整示例代码在上方资料表格中下载。

3.1. emergency_stop

用途 急停或解除急停操作。

参数

  • 1:执行急停
  • 0:解除急停

返回值

  • 固定返回 0.05(单位:秒),建议客户端等待此时间后再发送下一条指令。

示例代码

command = {
    'action': 'emergency_stop',
    'params': 1  # 1 表示急停;0 表示解除急停
}
result = client.send_command(command)
print("响应结果:", result)

3.2. angle_mode

用途 通过角度模式控制电机运动,使电机移动到指定的关节角度。

参数

  • 第一个参数:各电机目标角度的列表(例如 [10, 20, 30, 40, 50, 60])。
  • 第二个参数:运动速度比例(浮点数,范围 0~1,默认 1,超过该范围会自动截断)。

返回值

  • 0:表示所有电机均不需要转动
  • -1:表示电机角度求解无解
  • >0:表示有解,返回预计运动时间(单位:秒),建议客户端等待该时间后再发送下一条指令

示例代码

command = {
    'action': 'angle_mode',
    'params': ([10, 20, 30, 40, 50, 60], 0.8)  # 角度列表和速度比例
}
result = client.send_command(command)
print("响应结果:", result)

3.3. move_xyz_rotation

用途 通过 XYZ 坐标和欧拉角控制电机运动,采用普通位姿模式。

参数列表格式,共 8 个参数:

  • 前3个:目标三维空间位置

    1. x
    2. y
    3. z
  • 后3个:欧拉角,默认 [90,0,180]

    • 如旋转顺序选择为 "xyz",则为

      1. 绕 X 轴旋转角度
      2. 绕 Y 轴旋转角度
      3. 绕 Z 轴旋转角度
    • 如旋转顺序选择为 "zyx",则为

      1. 绕 Z 轴旋转角度
      2. 绕 Y 轴旋转角度
      3. 绕 X 轴旋转角度
  • 最后2个:

    1. rotation_order:旋转顺序(默认 "zyx",支持 "zyx""xyz"
    2. speed_ratio:运动速度比例(浮点数,0~1,默认1,超过该范围会自动截断)。

返回值

  • -1:表示 IK 无解
  • >0:表示有解,返回预计运动时间(单位:秒),建议客户端等待该时间后再发送下一条指令

示例代码

command = {
    'action': 'move_xyz_rotation',
    'params': [100, 200, 300, 10, 20, 30, "zyx", 0.9]
}
result = client.send_command(command)
print("预计运动时间:", result)

3.4. move_linear_xyz_rotation

用途 采用直线模式,通过 XYZ 坐标和欧拉角控制电机运动。直线模式下无法调整速度,运动过程中服务器会先返回运动时间再执行运动操作。

参数

列表格式,共 7 个参数:

  • 前3个:目标三维空间位置

    1. x
    2. y
    3. z
  • 后3个:欧拉角,默认 [90,0,180]

    • 如旋转顺序选择为 "xyz",则为

      1. 绕 X 轴旋转角度
      2. 绕 Y 轴旋转角度
      3. 绕 Z 轴旋转角度
    • 如旋转顺序选择为 "zyx",则为

      1. 绕 Z 轴旋转角度
      2. 绕 Y 轴旋转角度
      3. 绕 X 轴旋转角度
  • 最后1个:

    1. rotation_order:旋转顺序(默认 "zyx",支持 "zyx""xyz"

返回值

  • -1:表示 IK 求解无解
  • >0:表示有解,返回预计运动时间(单位:秒),建议客户端等待该时间后再发送下一条指令

示例代码

command = {
    'action': 'move_linear_xyz_rotation',
    'params': [100, 200, 300, 10, 20, 30, "xyz"]
}
result = client.send_command(command)
print("预计运动时间:", result)

3.5. gripper_on

用途 启动负压吸盘抓取操作。

参数

返回值

  • 固定返回 0.05(单位:秒),建议客户端等待该时间后再发送下一条指令

示例代码

command = {
    'action': 'gripper_on'
}
result = client.send_command(command)
print("响应结果:", result)

3.6. gripper_off

用途 负压吸盘释放操作。

参数

返回值

  • 固定返回 0.05(单位:秒),建议客户端等待该时间后再发送下一条指令

示例代码

command = {
    'action': 'gripper_off'
}
result = client.send_command(command)
print("响应结果:", result)

3.7. servo_gripper

用途通过舵机控制夹爪角度。

舵机夹爪上电的时候会自动回到90度,注意安全。

参数

  • angle(整数):设置夹爪的角度,范围是:0~110,超过会自动截断

返回值

  • 固定返回 1(单位:秒),建议客户端等待该时间后再发送下一条指令

示例代码

command = {
    'action': 'servo_gripper',
    'params': 45.0  # 例如设置夹爪角度为 45 度
}
result = client.send_command(command)
print("响应结果:", result)

3.8. robodk_simu

用途控制 Robodk 同步模拟开关。注意开启模拟后机械臂会进入自由运动状态,需要提醒用户准备好托举。

需要保证机械臂在RoboDK中的节点是 episode1 0307

<img src="https://enpei-md.oss-cn-hangzhou.aliyuncs.com/202503202203763.png?x-oss-process=style/wp" style="zoom:33%;" />

参数

  • 1:开启模拟
  • 0:关闭模拟

返回值

  • 固定返回 0.05(单位:秒),建议客户端等待该时间后再发送下一条指令

示例代码

command = {
    'action': 'robodk_simu',
    'params': 1  # 1 表示开启模拟,0 表示关闭模拟
}
result = client.send_command(command)
print("响应结果:", result)

3.9. set_free_mode

用途 设置电机自由模式。注意:在进入自由模式前需要提醒用户准备好托举。

参数

  • 1:进入自由模式
  • 0:退出自由模式

返回值

  • 固定返回 0.1(单位:秒),建议客户端等待该时间后再发送下一条指令

示例代码

command = {
    'action': 'set_free_mode',
    'params': 1  # 1 进入自由模式;0 退出自由模式
}
result = client.send_command(command)
print("响应结果:", result)

3.10. get_motor_angles

用途 获取当前电机的角度信息。

参数

返回值

  • 返回一个长度为 6 的角度列表(单位:度)。
  • 注意:由于 CAN 总线阻塞(如同时有其他控制指令的时候),有时部分电机角度读取可能失败,此时返回 None

示例代码

command = {
    'action': 'get_motor_angles'
}
result = client.send_command(command)
print("当前电机角度:", result)

3.11 使用方式

  1. 建立连接确保客户端已正确初始化并设置了服务器的 IP 和端口号。
  2. 构造命令根据需要使用上述指令中的任意一种,构造一个包含 action 和(可选)params 的json数据。
  3. 发送命令与接收结果调用客户端的 send_command 方法发送命令,服务器会返回一个结果。返回的数值通常代表预计运动时间,客户端应等待对应时间后再发送下一条指令。
  4. 异常处理 若返回值为 None,请检查网络连接或指令参数是否正确。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

恩培-计算机视觉

GMT+8, 2025-4-1 06:05 , Processed in 0.154949 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表