Skip to content

10. 机械臂状态与模式说明

控制器提供7种运动模式和6种状态,对应PythonSDK中_set_mode_, _set_state_函数。

10.1 机械臂模式

模式0:位置控制模式

控制器启动后默认进入的模式。

1. 关节运动

实现关节空间的点对点运动(单位:度/弧度),每个指令之间速度不连续。
示例代码:set_servo_angle

注意:此例子适用于xArm6,使用xArm5与xArm7请减少或增加对应关节角。

2. 直线运动

实现笛卡尔坐标之间的直线运动(单位:毫米),每个指令之间速度不连续。
可以用Roll/Pitch/Yaw表示机械臂姿态,也可以用轴角Rx/Ry/Rz表示机械臂姿态。
示例代码:set_position, set_position_aa

3. 直线圆弧运动

实现笛卡尔坐标之间的直线运动(单位:毫米),在两条直线直接插入圆弧过渡,每个指令之间速度连续。
示例代码:move_arc_lines

4. 圆及圆弧运动

实现圆弧运动,根据三点坐标计算出空间圆的轨迹,三点坐标分别为(起点、参数1、参数2)。
示例代码:move_circle

模式1:伺服模式(servoj)

此模式对于上位机实时性要求很高,建议使用打了实时补丁的Linux系统。

1. 关节伺服模式

机械臂可以接受最高以250HZ频率发送的关节位置指令。每收到一条指令机械臂会立刻响应,并以最大速度(180°/s)和加速度执行移动至给定的关节位置,此命令不设置缓冲区,仅执行最新收到的目标点。若发送指令的频率超过250HZ,则多余的指令将会丢失。

目前提供的SDK接口预留了速度、加速度和时间,但目前不起作用。如果客户有能力完成速度、加速度平滑的运动轨迹轨迹并映射到关节空间,servoj模式下可以代替控制器的规划,而令机械臂执行用户自己或第三方(比如ROS Moveit!)的规划算法,如果用户无法自己实现轨迹规划及运动学逆解,请不要使用此模式。
示例代码:set_servo_angle_j

2. 笛卡尔伺服模式

机械臂可以接受最高以250HZ频率发送的笛卡尔位置指令。每收到一条指令机械臂会立刻响应,并以最大速度和加速度执行移动至给定的笛卡尔位置,此命令不设置缓冲区,仅执行最新收到的目标点。若发送指令的频率超过250HZ,则多余的指令将会丢失。

建议使用方法:以固定的频率(100HZ或200HZ)发布经过插值的平滑轨迹点(两点之间的单步距离不超过10mm),切勿一次性给出过远的目标位置。
用户发布指令频率控制在30HZ-250HZ的范围内,若低于30HZ,机械臂运动可能会不连续。使用此模式需要规划每一个轴的精细位置和预测机械臂的运动行为,开发难度很大。
示例代码:set_servo_cartesian , set_servo_cartesian_aa

模式2:关节示教模式(手动模式)

此模式下,机械臂进入零重力模式,用户可以自由拖动机械臂各连杆完成示教功能。如果拖动示教完成,请切换回模式0。
注意:开启示教模式之前,务必确认机械臂安装方向和TCP负载设置正确,否则手臂可能会由于重力补偿不准确而无法自我保持静止!
示例代码:

python
   arm.set_mode(2)
   arm.set_state(0)

模式4:关节速度控制模式

指定所有关节目标速度(单位:rad/s),最大关节加速度可通过 set_joint_maxacc 设置。
示例代码:vc_set_joint_velocity

模式5:笛卡尔速度控制模式

指定TCP笛卡尔线速度(mm/s)和姿态角速度(rad/s),最大加速度可通过 set_tcp_maxacc 设置。
示例代码:vc_set_cartesian_velocity

模式6:关节在线规划模式

关节在线轨迹规划(控制器固件版本≥v1.10.0),实现关节指令的动态响应。当收到新的运动指令时,立刻当断当前正在进行的关节指令,从当前位置开始规划执行新的关节指令。
示例代码:set_servo_angle

模式7:笛卡尔在线规划模式

笛卡尔在线轨迹规划(控制器固件版本≥v1.10.0),实现笛卡尔指令的动态响应。当收到新的运动指令时,立刻当断当前正在进行的笛卡尔指令,从当前位置开始规划执行新的笛卡尔指令。

注意:使用此模式时,set_position_aa 中的is_tool_coord必须为False,即只能以基坐标系为参考,不能以工具坐标系做相对运动。
示例代码:set_position

10.2 机械臂状态

状态0:开启运动

可设置,手臂准备好运动或运动就绪状态。此状态下,机械臂能正常响应和执行运动指令。设置完成后,状态反馈自动调整为状态2(READY)。如果机械臂从错误、断电或停止状态中恢复,请在发送运动指令前将状态设置为0,否则发送的指令将被丢弃。

状态1:手臂正在运动中

反馈。

状态2:READY

反馈,手臂已准备好,可以接收执行指令。

状态3:暂停

可设置可反馈。

状态4:停止

可设置可反馈。
设置:立即停止运动,并清除所有缓存指令。之前发送的指令作废切无法接受新的指令,直至状态被设置回0。
反馈:无法接收新的指令,出现错误码自动跳转为此状态。

状态5:系统重置

反馈。指系统设置(比如模式、负载、偏移、灵敏度等)发生了变化,自动跳转为MODE_CHANGED状态,无法接收执行新的指令,直到收到set_state(0)

状态6:减速停止

可设置可反馈。