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_Web端使用
- RoArm-M2-S_开发工具使用
- RoArm-M2-S_JSON指令含义
- RoArm-M2-S_WIFI配置
- RoArm-M2-S_机械臂控制
- RoArm-M2-S_末端关节设置
- RoArm-M2-S_FLASH文件系统操作
- RoArm-M2-S_步骤录制和重现
- RoArm-M2-S_ESP-NOW控制
- RoArm-M2-S_Python串口通信控制
- RoArm-M2-S_Python HTTP请求通信