导入
方法
方法参考
获取一个机械臂 Net
按名称和类型获取一个机械臂 Net 实例。
返回: 机械臂 Net 实例,带有下面列出的全部方法
该 Net 打开地址中带有相应 USB 序列号的那台机械臂。它还会读取机械臂的固件版本。
arm.firmware_version 是形如 (2, 3, 5) 的元组;机械臂未报告版本时为 None。
position()
获取机械臂当前位置。
tuple[float, float, float] - (x, y, z) 坐标,单位毫米
move_to(x, y, z, timeout=15.0)
把机械臂移到绝对坐标,并阻塞等待。
抛出:
- 目标超出工作空间范围时抛出
OutOfBoundsError。此时不会向机械臂发送任何内容。 - 机械臂固件低于 V2.1.4,或机械臂未报告版本时,抛出
UnsupportedFirmwareError。此时不会向机械臂发送任何内容。 - 机械臂上电后尚未归位时抛出
NotHomedError - 在超时时间内未到达目标位置时抛出
MovementTimeoutError
move_relative(dx=0, dy=0, dz=0, timeout=15.0)
相对当前位置移动。
返回:
tuple[float, float, float] - 移动之后新的 (x, y, z) 位置
抛出:
- 机械臂固件低于 V2.1.4,或机械臂未报告版本时,抛出
UnsupportedFirmwareError。此时不会向机械臂发送任何内容。 - 当前位置加上偏移量超出工作空间范围时抛出
OutOfBoundsError。机械臂不会移动。 - 机械臂上电后尚未归位时抛出
NotHomedError
go_home(timeout=20.0)
把机械臂移到归位位置(X=0、Y=300、Z=0)。机械臂到达归位位置时该方法才返回。机械臂上电后请先调用它,因为固件在归位之前拒绝运动。
timeout 秒内没有到达归位位置时抛出 RuntimeError
enable_motor()
使能机械臂电机。
disable_motor()
禁用机械臂电机(机械臂会变成松弛状态)。
save_position()
重新标定机械臂。save_position() 发送 M889,它用机械臂的当前姿态替换已保存的标定。机械臂之后的每一次移动都基于这份标定计算。
get_full_position()
获取包含关节角度的完整位置。
tuple[float, ...] - (x, y, z, e, a, b, c),其中 a、b、c 是关节角度
如果机械臂固件不报告关节角度,a、b 和 c 为 None。
末端执行器方法
软性夹爪
气动吸盘
激光模块
传送带方法
滑轨方法
实用方法
delay_ms(value) / delay_s(value)
向机械臂的命令队列中加入延时。
set_acceleration(acceleration, travel_acceleration, retract_acceleration=60)
设置打印、空程和回抽加速度,单位 mm/s^2。该方法发送 M204 P<acceleration> T<travel_acceleration> R<retract_acceleration>。
set_module_type(module_type)
设置所安装的模块类型。
get_module_type()
获取当前检测到的模块类型。
示例
基本移动
取放操作
自动化测试定位
错误处理
受支持的硬件
异常
说明
- 请始终使用上下文管理器(
with语句),以确保正确清理 - 机械臂上电后请调用
go_home()。固件在归位之前拒绝运动。 move_to()和move_relative()需要机械臂固件 V2.1.4 或更高版本。Rotrics 在 V2.1.4 中交换了 X 轴和 Y 轴,因此更旧的固件在另一个坐标系中移动。- 移动超时错误表示机械臂没有到达。原因可能是有阻挡、范围内存在无法到达的目标,或者移动距离较长。移动距离较长时请传入更大的
timeout。 - 关节角度(a、b、c)使用机械臂的内部坐标系
- 位置校验的默认容差是 0.5mm
- 机械臂通过 USB VID/PID(0x0483:0x5740)自动检测
- Box 只在扫描仪器时才会发现机械臂。扫描只探测具有该 USB ID 的端口,并且机械臂必须报告 USB 序列号。关于
LAGER_ARM_PROBE设置,请参阅 检测。 Dexarm定义了大致的工作空间范围:X 为 -300 至 300 mm,Y 为 170 至 360 mm,Z 为 -140 至 100 mm。对于超出这些范围的目标,move_to()和move_relative()会抛出OutOfBoundsError,与lager armCLI 的行为一致。move_to_blocking()、move_to_gcode()和fast_move_to()不检查范围,也不检查固件版本。

