RoArm-M2-S 机械臂控制

来自Waveshare Wiki
跳转至: 导航搜索

MOVING CTRL - 机械臂运动控制

RoArm-M2-S_Web端使用中,介绍了如何通过Web端来控制机械臂运动,其中包含关节角度控制和三维直角坐标控制。

在本教程中,将介绍机械臂运动控制的JSON指令具体含义。主要包括关节角度控制和三维直角坐标控制的JSON指令含义,关节角度控制分为以角度制形式和弧度制形式来进行控制,三维直角坐标控制是针对机械臂末端点的坐标位置来进行控制。

这一章节的JSON指令快捷输入位于Web端界面的“MOVING CTRL”模块中。


复位

CMD_MOVE_INIT - 运动到初始位置

{"T":100}
  • 100:表示这条指令为CMD_MOVE_INIT,让机械臂的所有关节转动到初始位置。

正常情况下机械臂开机时会自动转动到初始位置。 该指令会引起进程阻塞。


关节角度控制

CMD_SINGLE_JOINT_CTRL - 单独关节控制(弧度制)

{"T":101,"joint":0,"rad":0,"spd":0,"acc":10}
  • 101:表示这条指令为CMD_SINGLE_JOINT_CTRL,以弧度制形式来控制机械臂某个关节的转动。
  • joint:关节序号。
    • 1:BASE_JOINT基础关节。
    • 2:SHOULDER_JOINT肩关节。
    • 3:ELBOW_JOINT肘关节。
    • 4:EOAT_JOINT手腕/夹爪关节。
  • rad:为需要转动到的角度(以弧度制形式来显示),以各个关节的初始位置为准,各个关节的默认角度和转动方向如下:
    • BASE_JOINT的初始位置默认角度为 0,角度转动范围为 3.14 至 -3.14 之间。角度增加时,基础关节向左转动;角度减少时,基础关节向右转动。
    • SHOULDER_JOINT的初始位置默认角度为 0,角度转动范围为 1.57 至 -1.57 之间。角度增加时,肩关节向前转动;角度减少时,肩关节会向后转动。
    • ELBOW_JOINT的初始位置默认角度为 1.570796,角度转动范围为 3.14 至 -1.11 之间。角度增加时,肘关节向下转动;角度减少时,肘关节会往反方向转动。
    • EOAT_JOINT的初始位置默认角度为 3.141593。产品默认的是夹爪关节,角度转动范围为 1.08 至 3.14 之间,角度减少时,夹爪关节会张开。若更换为手腕关节,角度转动范围为 1.08 至 5.20 之间,角度增加时,手腕关节向下转动;角度减少时,手腕关节向上转动。
  • spd:转动的速度,速度单位为步/秒,舵机的一圈为 4096 步,数值越大速度越快,当速度值为 0 时,以最大速度转动。
  • acc:转动开始和结束时的加速度,数值越小启停越平滑,数值可以为 0-254 ,单位为 100 步/秒^2。如设置为 10 时,则按照 1000 步每秒的平方加速度变速。当加速度值为 0 时,则按照最大的加速度运行。


CMD_JOINTS_RAD_CTRL - 全部关节控制(弧度制)

{"T":102,"base":0,"shoulder":0,"elbow":1.57,"hand":3.14,"spd":0,"acc":10}
  • 102:表示这条指令为CMD_JOINTS_RAD_CTRL,以弧度制形式来控制机械臂全部关节的转动。
  • base:基础关节的角度,角度转动范围见上方“CMD_SINGLE_JOINT_CTRL”指令中rad键的说明。
  • shoulder:肩关节的角度。
  • elbow:肘关节的角度。
  • hand:夹爪/手腕关节的角度。
  • spd:转动的速度,速度单位为步/秒,舵机的一圈为4096步,数值越大速度越快,当速度值为0时,以最大速度转动。
  • acc:转动开始和结束时的加速度,数值越小启停越平滑,数值可以为0-254,单位为100步/秒^2。如设置为10时,则按照1000步每秒的平方加减速度变速。当加速度值为0时,则按照最大的加速度运行。


CMD_EOAT_HAND_CTRL - 末端关节控制(弧度制)

{"T":106,"cmd":3.14,"spd":0,"acc":0}
  • 106:这条指令为CMD_EOAT_HAND_CTRL,用来设置夹爪/手腕关节的转动角度。
  • cmd:为需要转动到的角度(以弧度制来显示)。EOAT_JOINT的初始位置默认角度为3.141593。
    • 产品默认的是夹爪关节,角度转动范围为1.08至3.14之间,角度减少时,夹爪关节会张开。
    • 若更换为手腕关节,角度转动范围为1.08至5.20之间,角度增加时,手腕关节向下转动;角度减少时,手腕关节向上转动。
  • spd:转动的速度,速度单位为步/秒,舵机的一圈为4096步,数值越大速度越快,当速度值为0时,以最大速度转动。
  • acc:转动开始和结束时的加速度,数值越小启停越平滑,数值可以为0-254,单位为100步/秒^2。如设置为10时,则按照1000步每秒的平方加减速度变速。当加速度值为0时,则按照最大的加速度运行。


CMD_SINGLE_JOINT_ANGLE - 单独关节控制(角度制)

{"T":121,"joint":1,"angle":0,"spd":10,"acc":10}
  • 121:这条指令为CMD_SINGLE_JOINT_ANGLE,以角度制形式来控制机械臂某个关节的转动。
  • joint:关节序号。
    • 1:BASE_JOINT基础关节。
    • 2:SHOULDER_JOINT肩关节。
    • 3:ELBOW_JOINT肘关节。
    • 4:EOAT_JOINT手腕/夹爪关节。
  • angle:为需要转动到的角度,以各个关节的初始位置为准,各个关节的默认角度和转动方向如下:
    • BASE_JOINT的初始位置默认角度为0°,角度转动范围为180°至-180°之间。角度增加时,基础关节向左转动;角度减少时,基础关节向右转动。
    • SHOULDER_JOINT的初始位置默认角度为0°,角度转动范围为90°至-90°之间。角度增加时,肩关节向前转动;角度减少时,肩关节会向后转动。
    • ELBOW_JOINT的初始位置默认角度为90°,角度转动范围为180°至-45°之间。角度增加时,肘关节向下转动;角度减少时,肘关节会往反方向转动。
    • EOAT_JOINT的初始位置默认角度为180°。产品默认的是夹爪关节,角度转动范围为45°至180°之间,角度减少时,夹爪关节会张开。若更换为手腕关节,角度转动范围为45°至315°之间,角度增加时,手腕关节向下转动;角度减少时,手腕关节向上转动。
  • spd:转动的速度,速度单位为°/s,数值越大速度越快,当速度值为0时,以最大速度转动。
  • acc:转动开始和结束时的加速度,数值越小启停越平滑,单位为°/s^2。当加速度值为0时,则按照最大的加速度运行。


CMD_JOINTS_ANGLE_CTRL - 全部关节控制(角度制)

{"T":122,"b":0,"s":0,"e":90,"h":180,"spd":10,"acc":10}
  • 122:这条指令为CMD_JOINTS_ANGLE_CTRL,以角度制形式来控制机械臂所有关节的转动。
  • b:基础关节的角度,角度转动范围见“CMD_SINGLE_JOINT_ANGLE”指令中angle键的说明。
  • s:肩关节的角度。
  • e:肘关节的角度。
  • h:夹爪/手腕关节的角度。
  • spd:转动的速度,速度单位为°/s,数值越大速度越快,当速度值为0时,以最大速度转动。
  • acc:转动开始和结束时的加速度,数值越小启停越平滑,数值可以为0-254,单位为°/s^2。当加速度值为0时,则按照最大的加速度运行。


三维直角坐标控制

CMD_SINGLE_AXIS_CRTL - 机械臂末端点的单独轴位置控制(逆运动学)

{"T":103,"axis":2,"pos":0,"spd":0.25}

机械臂的坐标轴定义基于右手定则,机械臂的正前方为X轴正方向,机械臂的前方的左侧为Y轴正方向,机械臂的竖直正上方为Z轴正方向。

  • 103:表示这条指令为CMD_SIGNLE_AXIS_CRTL,以给机械臂末端点单独轴的坐标位置来控制机械臂运动。
  • axis:表示为轴的序号。1-X轴;2-Y轴;3-Z轴;4-T轴,夹爪/手腕的角度,弧度制。
  • pos:某个轴的具体位置,单位为mm。例如上方的例子就是让机械臂末端点运动至Y轴的0位置,也就是机械臂的正前方。
  • spd:运动的速度,该数值越大速度越快,本移动命令底层包含了曲线速度控制函数,所以速度并不是恒定的。

该指令会引起进程阻塞。


CMD_XYZT_GOAL_CTRL - 机械臂末端点位置控制(逆运动学)

{"T":104,"x":235,"y":0,"z":234,"t":3.14,"spd":0.25}
  • 104:表示这条指令为CMD_XYZT_GOAL_CTRL,可以控制机械臂末端点位置的运动。
  • x,y,z,t:分别为四个轴的具体位置,单位为mm。具体可参考上方CMD_SINGLE_AXIS_CTRL指令中的介绍。
  • spd :运动的速度,该数值越大速度越快,本移动命令底层包含了曲线速度控制函数,所以速度并不是恒定的。

该指令会引起进程阻塞。


CMD_XYZT_DIRECT_CTRL - 机械臂末端点位置控制(逆运动学)

{"T":1041,"x":235,"y":0,"z":234,"t":3.14}
  • 1041:表示这条指令为CMD_XYZT_DIRECT_CTRL,可以控制机械臂末端点位置的运动。
  • x, y, z, t :分别为四个轴的具体位置,单位为mm。具体可参考上方CMD_SINGLE_AXIS_CTRL指令中的介绍。

注意:该命令与上一个命令的区别在于,该命令不会引起进程阻塞。因为底层没有插值计算,调用该指令后机械臂会以最快的速度运动到目标点。适合通过该命令连续给新的目标点的情况,且每个命令之间的目标点位置相差不要太大。


CMD_SERVO_RAD_FEEDBACK - 获得机械臂的反馈

{"T":105}
  • 105:表示这条指令为CMD_SERVO_RAD_FEEDBACK,可以获得机械臂末端点位置坐标和各关节角度、负载的反馈。

输入该指令后,会反馈如下信息:

{"T":1051,"x":309.0444117,"y":3.318604879,"z":238.2448043,"b":0.010737866,"s":-0.004601942,"e":1.570796327,"t":3.141592654,"torB":-56,"torS":-20,"torE":0,"torH":0}
  • x、y、z:分别代表末端点X轴、Y轴、Z轴的坐标。
  • b、s、e、t:分别代表基础关节、肩关节、肘关节、末端关节角度,以弧度制形式显示。
  • torB、torS、torE、torH:分别代表基础关节、肩关节、肘关节、末端关节的负载。


CMD_CONSTANT_CTRL - 连续运动控制(角度控制 + 逆运动学控制)

{"T":123,"m":0,"axis":0,"cmd":0,"spd":0}
  • 123:这条指令为CMD_CONSTANT_CTRL,使机械臂各关节或机械臂末端点在输入指令后可以连续运动。
  • m:表示连续运动控制模式。
    • 0:角度控制模式。
    • 1:坐标控制模式。
  • axis:不同模式下控制转动的部位不一样。
    • 角度控制模式下:m值为0时,控制的是机械臂各关节角度的转动。1 - BASE基础关节;2 - SHOULDER肩关节;3 - ELBOW肘关节;4 - HAND夹爪/手腕关节。
    • 坐标控制模式下:m的值为1时,控制的是机械臂末端点坐标的转动。1 - X轴;2 - Y轴;3 - Z轴;4 - HAND夹爪/手腕关节。
  • cmd:运动的状态。
    • 0 - STOP停止运动。
    • 1 - INCREASE角度控制模式,增加角度;逆运动学控制模式,增加坐标轴值。
    • 2 - DECREASE角度控制模式,减少角度;逆运动学控制模式,减少坐标轴值。
  • spd:速度系数,数值越大速度越快,由于各个关节转速有上限,因此建议在0-20之间取值。


本章节介绍了机械臂运动控制JSON指令的使用含义,回到RoArm-M2-S主界面学习机械臂更多方面的使用。


RoArm-M2-S 教程目录

RoArm-M2-S 使用教程

RoArm-M2-S ROS2基础教程