# Troubleshooting

**影响机械臂运动尺寸偏差的几大因素：**

**1. 机械臂初始标定位置**，即大小臂摆到最大位置，底座摆到中间位置。

![](https://lh3.googleusercontent.com/kTVl8caIJ17fHBGgmrnFot-zEQCdIr_sGxVL9Gw9KmXGofeRVSMJekulTTsyB2qS8TTllOn5DolZAt5Fj5Tiq6wG0OtFveOPHzGfUuyznpph6G6EHFYutKWAsK4UPvTYzltkPW9B)

* 机械臂的运动学逆解(inverse kinematics)是基于初始标定位置开始计算
* M1111指令可以让机械臂回到初始标定位置，如果发现位置出现偏差需要重新标定
* 将机械臂大小臂摆到最大位置，底座摆到中间位置，然后发送M889，重新标定初始位置
* HOME(M1112指令)可以让机械臂前端运动到X300 Y0 Z0的位置

**2. 前端模块偏置尺寸**

* 机械臂的运动学逆解(inverse kinematics)同样需要前端模块偏置尺寸，如果模块尺寸错误，会造成Y轴出现较大偏差。
* M888 Pn可以设置模块，M888不带P参数，可以查看当前模块尺寸
* 还要注意笔的安装，笔必须与笔模块平行。之前有用户的笔与笔模块出现较大夹角(前端模块尺寸不再正确)导致最终尺寸出现很大的偏差。
* 通常情况下错误的前端模块偏置尺寸会造成Y轴出现较大偏差。

**3. Leveling系数**

* 当工作平面(如3D打印玻璃平面)与机械臂底座平面不平整时，通常需要进行Leveling
* 如果桌面平整时，一般不需要进行调平，可以通过M891 X0 Y0进行清零
* 发送M892调平命令后，必须重启才能生效。M892是读取Leveling系数，此命令不需要重启。
* 通常情况下，在较平整的桌面，M891 X0 Y0即可完成写字画画激光等功能
* 如果在Leveling过程中发现，XY系数过大，请重新检查工作平面及计算方法。由于机械臂的运动学结构原因，不建议设置过大的XY系数。

**4. 故障反馈**

&#x20;   如果以上检查仍无法解决问题，请整理以下故障反馈信息并反馈给我们

* 当前Firmware、Rotroics Studio的版本信息
* 出现问题的gcode文件
* 请标注出现偏差的轴，方便我们排查故障，例如通常情况下错误的前端模块偏置会造成Y轴出现较大偏差。
* 最好有工作视频，方便我们观察可能的原因.

## **机械臂超限/碰撞的解决办法**

**原理：**&#x673A;械臂主要通过位于三轴电机上的磁编码器获得绝对位置，从而计算并完成后续的运动。如果机械臂没有正确标定初始位置，或者在没有获得位置信息的情况下开始运动，均会造成运动超限或碰撞。

解决办法：

1. 重新标定初始位置
2. 机械臂开机后，在执行常规运动指令(如G0 G1)前，请务必执行HOME指令(M1112),机械臂后续运动均是以HOME位置开始计算。
3. 在调平RESET时，客户端或触摸屏会执行系数清零并重启指令，重启后也需要执行HOME指令
4. 同样的，调平设置完成时，客户端或触摸屏会执行保存系数并重启指令，重启后也需要执行HOME指令
5. 另外在不经意的坐标系变换后，也会出现超限或碰撞功能，例如G92 X0 Y0 Z0之后
6. 根据大家的反馈，为了保护机械臂发生超限或碰撞，我们会在下一版固件中，增加更多的保护功能，如必须执行HOME指令后，才能执行常规运动指令(如G0 G1)
