MML命令控制

主视区下方区域为命令输入区和命令可视化输入区。可通过选择MML(Man Machine Language)命令+操作对象+参数的方式输入命令,达到实现对关节/机械手的控制。

1.MML命令控制关节

关节电机支持的MML命令包括如下:

命令

功能

SET RUNMODE

设置运行模式

SET DEVICEPARA

设置设备参数

SET CURRENTPARA

设置电流参数

SET SPEEDPARA

设置速度参数

SET POSITIONPARA

设置位置参数

SET SYSCMD

设置系统命令参数

SET COMMUPARA

设置通信参数

SET MOTIONPARA

设置运动控制参数

1.1.操作前准备

    使用MML命令控制,需要确保关节电机/机械手处于连接状态。请参考对应章节操作。

1.2.操作步骤

   以下以设置电机的速度参数为例,列出MML命令控制的操作步骤。
   step 1. COMMAND选择MML命令SET SPEEDPARA
   step 2. OBJECT根据关节名称选择操作对象Joint0
   step 3. PRARTYPE选择最大速度参数类型MAX_SPEED
   step 4. MaxSpeed输入速度参数1000
   setp 5. MML命令文本框自动生成MML命令脚本
   setp 6. 点击运行按钮实现最大速度参数的设置
../../_images/command_step.png

1.3.设置运行模式 SET RUNMODE

使用运行模式命令,可实现对关节电机的运动控制。以下列出支持的运行模式命令:

RUNMODE

功能

参数名称

参数含义

SPEED

设置关节电机运行模式为速度模式

SPEED

速度模式的速度值,转化为度每秒公式:(速度值/100/减速比)*360

CURRENT

设置关节电机运行模式为电流模式

CURRENT

电流模式的电流值,单位为mA

POSITION

设置关节电机运行模式为位置模式

POSITION

目标位置的cnt值,转化为减速机角度公式:(位置值(cnt)/65536/减速比)*360

STOP

设置关节电机运行模式为停止模式

NA

1.4.设置设备参数 SET DEVICEPARA

使用设备参数命令,可实现对关节电机的设备参数设置。以下列出支持的设备参数命令:

PARATYPE

功能

参数名称

参数含义

MAX_MOTORTEMP

设置关节电机温度保护值

MaxMotorTemp

电机温度保护值,单位为℃

MAX_PCBTEMP

设置关节电机主板温度保护值

MaxPCBTemp

电机主板温度保护值,单位为℃

MAX_VOL

设置最大电压

MaxVoltage

最大电压,单位为V

MIN_VOL

设置最小电压

MinVoltage

最小电压,单位为V

1.5.设置电流参数 SET CURRENTPARA

使用电流参数命令,可实现对关节电机的电流参数设置。以下列出支持的电流参数命令:

PARATYPE

功能

参数名称

参数含义

MAX_CURRENT

设置最大正电流

MaxCurrent

最大正电流,单位为mA

MIN_CURRENT

设置最小负电流

MinCurrent

最小负电流,单位为mA

PROPORTIONAL

设置电流环比例

Proportional

电流环比例

INTEGRAL

设置电流环积分

Integral

电流环积分

1.6.设置速度参数 SET SPEEDPARA

使用速度参数命令,可实现对关节电机的速度参数设置。以下列出支持的速度参数命令:

PARATYPE

功能

参数名称

参数含义

MAX_ACC

设置最大正向加速度

MaxAcceleration

最大正向加速度,为每毫秒允许速度增加的值

MIN_ACC

设置最小负向加速度

MinAcceleration

最大负向加速度,为每毫秒允许速度增加的值

MAX_SPEED

设置最大正向允许速度

MaxSpeed

最大正向速度,转化为度每秒公式:(速度值/100/减速比)*360

MIN_SPEED

设置最小负向允许速度

MinSpeed

最小负向速度,转化为度每秒公式:(速度值/100/减速比)*360

PROPORTIONAL

设置速度环比例

Proportional

速度环PID控制的P参数

INTEGRAL

设置速度环积分

Integral

速度环PID控制的I参数

1.7.设置位置参数 SET POSITIONPARA

使用位置参数命令,可实现对关节电机的位置参数设置。以下列出支持的位置参数命令:

PARATYPE

功能

参数名称

参数含义

MAX_POS

设置最大正向位置

MaxPosition

最大正向位置cnt值,位置值为(减速机目标角度/360)减速比65536

MIN_POS

设置最小负向位置

MinPosition

最小负向位置cnt值,位置值为(减速机目标角度/360)减速比65536

PROPORTIONAL

设置位置环比例

Proportional

位置环常用PD控制

DIFFERENTIAL

设置位置环微分

DIFFERENTIAL

位置环常用PD控制

Offset

设置位置偏移

Offset

设置偏移值和目标位置(目标位置=编码器位置 - 偏移值)

1.8.设置系统命令参数 SET SYSCMD

使用系统命令参数命令,可实现对关节电机的系统命令参数设置。以下列出支持的系统命令:

PARATYPE

功能

RESET_FAULT

清除告警

STORE_FLASH

储存参数到Flash

1.9.设置通信参数 SET COMMUPARA

使用通信参数命令,可实现对关节电机的CAN通信参数设置。以下列出支持的通信参数命令:

PARATYPE

功能

参数名称

参数含义

CAN_ID

设置CAN ID

CanId

关节电机用于CAN通信的Can Id值,范围为:1到127

BAUD_RATE

设置CAN通信波特率

BaudRate

CAN通信波特率,有效值为:1000、500、250、125、100、50,单位Kbps

1.10.设置运动控制参数 SET MOTIONPARA

使用运动控制参数命令,可实现对关节电机的运动控制。以下列出支持的运动控制参数命令:

PARATYPE

功能

参数名称

参数含义

ANGLE

设置关节角度

Angle

使用位置模式控制电机,其中位置值=(设置的角度参数/360)减速比65536

REDUCE_RATIO

设置关节电机减速比

ReduceRatio

关节电机减速比

2.MML命令控制机械手

机械手支持的MML命令包括如下,操作步骤和关节电机控制类似。操作前请先确认机械手处于连接状态。以下列出支持的MML命令:

命令

功能

SET HANDACTION

设置手势动作

SET HANDPOS

设置手指位姿

SET FINGERPOS

设置单手指位姿

2.1.设置手势动作 SET HANDACTION

使用手势动作命令,可控制机械手做成设定动作手势。以下列出支持的手势参数:

ACTION

功能

OPEN

动作:伸展手势

CLOSE

动作:握拳手势

MOVE_INDEX

动作:伸出食指

MOVE_MID

动作:伸出中指

MOVE_RING

动作:伸出无名指

MOVE_LITTLE

动作:伸出小拇指

OK_GESTURE

动作:OK姿势

2.2.设置手指位姿 SET HANDPOS

使用手指位姿命令,可控制机械手各个手指按指定的角度做出对应的位姿。以下列出支持的位姿参数:

TYPE

功能

参数1名称

参数1含义

参数2名称

参数2含义

参数3名称

参数3含义

ALLPOS

设置手指位姿

LittleFinger

小拇指位姿角度

RingFinger

无名指位姿角度

MiddleFinger

中指位姿角度

参数4名称

参数4含义

参数5名称

参数5含义

参数6名称

参数6含义

IndexFinger

食指位姿角度

ThumbUpFinger

大拇指上段位姿角度

ThumbDownFinger

大拇指下段位姿角度

2.3.设置单手指位姿 SET FINGERPOS

使用单手指位姿命令,可控制机械手单个手指按指定的角度做出对应的位姿。以下列出支持的位姿参数:

FINGER

功能

参数名称

参数含义

LITTLE_FINGER

设置小拇指位姿

Position

小拇指位姿角度

RING_FINGER

设置无名指位姿

Position

无名指位姿角度

MIDDLE_FINGER

设置中指位姿

Position

中指位姿角度

INDEX_FINGER

设置食指位姿

Position

食指位姿角度

THUMB_UP

设置大拇指上段位姿

Position

大拇指上段位姿角度

THUMB_DOWN

设置大拇指下段位姿

Position

大拇指下段位姿角度

3.批处理对象模式

关节电机/机械手均支持通过OBJECT对象类型为"ALL"的方式,对所有关节电机/机械手进行操作控制。
例如选择COMMAND命令为"SET SPEEDPARA",选择OBJECT对象为"ALL",选择PARATYPE参数为"MAX_SPEED",MaxSpeed参数为1000,即可实现对所有关节电机的最大速度设置。
../../_images/command_all_object.png

4.批处理MML命令模式

MML命令编辑区可通过输入多条MML命令,实现批处理控制功能。
例如,可以在MML命令文本框中输入以下命令,实现对所有关节电机的最大速度/最小速度设置。
SET SPEEDPARA: OBJECT="ALL", PARATYPE="MAX_SPEED", MaxSpeed=1000;
SET SPEEDPARA: OBJECT="ALL", PARATYPE="MIN_SPEED", MinSpeed=-1000;
../../_images/command_batch_run.png

5.延时模式

延时模式可以控制MML命令的执行等待时长。有两种方式可以达到延时的目的:
1. 通过MML命令后面的StayTime参数设置该MML命令执行后的延时等待时长,单位为ms.
    SET MOTIONPARA: OBJECT="Joint0", PARATYPE="ANGLE", Angle=100, StayTime=1000;
2. 通过独立的MML命令"SET SUSPENDTIME",针对特定的关节电机/机械手并指定StayTime参数的延时等待时长。命令为:
  SET SUSPENDTIME: OBJECT="Joint0", PARATYPE="BY_TIME", StayTime=1000;

6.重复模式

重复模式可以控制MML批处理命令的重复执行次数。可以通过指定"Repeat"参数的次数为非0值,达到重复执行对应次数的批处理命令。

7.示例

7.1.机器人招手

找到下方指令区域,先选择要控制的对象,再填写角度,点击运行,可以看到招手机器人成功"招手"了。可以看到上方命令输入区同时生成了一条等效命令,我们同样可以使用命令去进行控制。

../../_images/shake.png

掌握命令控制方式,可以实现更复杂的动作。输入以下命令,设置重复次数,点击运行,便可以看到我们的招手机器人开始左右招手。

SET MOTIONPARA: OBJECT="Joint16", PARATYPE="ANGLE", Angle=30, StayTime=2000;
SET MOTIONPARA: OBJECT="Joint16", PARATYPE="ANGLE", Angle=-30, StayTime=2000;
//参考命令,更多命令见"2.3命令控制"
../../_images/shakerepeat.png ../../_images/shakeRepeatShow.png

7.2.机器人摆头招手

接下来尝试一个更复杂的逻辑–左右摆头招手,让机械手先转向左,再招手,然后再转向右,再招手,命令如下。

SET MOTIONPARA: OBJECT="Joint14", PARATYPE="ANGLE", Angle=90, StayTime=4000;
SET SUSPENDTIME: OBJECT="ALL", PARATYPE="BY_TIME", StayTime=1500;
SET MOTIONPARA: OBJECT="Joint16", PARATYPE="ANGLE", Angle=30, StayTime=2000;
SET MOTIONPARA: OBJECT="Joint16", PARATYPE="ANGLE", Angle=-30, StayTime=2000;
SET MOTIONPARA: OBJECT="Joint16", PARATYPE="ANGLE", Angle=0, StayTime=2000;
SET SUSPENDTIME: OBJECT="ALL", PARATYPE="BY_TIME", StayTime=2000;
SET MOTIONPARA: OBJECT="Joint14", PARATYPE="ANGLE", Angle=-90, StayTime=4000;
SET MOTIONPARA: OBJECT="Joint16", PARATYPE="ANGLE", Angle=30, StayTime=2000;
SET MOTIONPARA: OBJECT="Joint16", PARATYPE="ANGLE", Angle=-30, StayTime=2000;
SET MOTIONPARA: OBJECT="Joint16", PARATYPE="ANGLE", Angle=0, StayTime=2000;
SET SUSPENDTIME: OBJECT="ALL", PARATYPE="BY_TIME", StayTime=2000;
SET MOTIONPARA: OBJECT="Joint14", PARATYPE="ANGLE", Angle=0, StayTime=2000;
//参考命令,更多命令见"2.3命令控制"
../../_images/shakeRepeat2.png ../../_images/shakeRepeatShow2.png

7.3.机器人170A控制案例

这一节将展示如何通过搭建的模型对大型机器人进行控制,如果你手边有一台"170A"的机器人,则可以直接使用官方提供的模型而不需要自己搭建。

如下图,直接加载我们在model文件夹里提供的"TH-T70A.json"文件,可以看到连接后,模型自动同步了机器人的电机角度(左腿向内弯曲)。

../../_images/loadRobot.png

通过命令组合对大型的机器人进行控制,效果如下图。

//左手作揖
SET MOTIONPARA: OBJECT="L_SHOULDER_P", PARATYPE="ANGLE", Angle=-75;
SET MOTIONPARA: OBJECT="L_SHOULDER_R", PARATYPE="ANGLE", Angle=45;
SET MOTIONPARA: OBJECT="L_SHOULDER_Y", PARATYPE="ANGLE", Angle=-20;
SET MOTIONPARA: OBJECT="L_ELBOW_R", PARATYPE="ANGLE", Angle=-80;
SET MOTIONPARA: OBJECT="L_WRIST_P", PARATYPE="ANGLE", Angle=0;
SET MOTIONPARA: OBJECT="L_WRIST_Y", PARATYPE="ANGLE", Angle=0;
SET MOTIONPARA: OBJECT="L_WRIST_R", PARATYPE="ANGLE", Angle=40;
SET HANDACTION: OBJECT="L_HAND", ACTION="OPEN";

//右手作揖
SET MOTIONPARA: OBJECT="R_SHOULDER_P", PARATYPE="ANGLE", Angle=65;
SET MOTIONPARA: OBJECT="R_SHOULDER_R", PARATYPE="ANGLE", Angle=-45;
SET MOTIONPARA: OBJECT="R_SHOULDER_Y", PARATYPE="ANGLE", Angle=20;
SET MOTIONPARA: OBJECT="R_ELBOW_R", PARATYPE="ANGLE", Angle=80;
SET MOTIONPARA: OBJECT="R_WRIST_P", PARATYPE="ANGLE", Angle=0;
SET MOTIONPARA: OBJECT="R_WRIST_Y", PARATYPE="ANGLE", Angle=0;
SET MOTIONPARA: OBJECT="R_WRIST_R", PARATYPE="ANGLE", Angle=-40;
//参考命令,更多命令见"2.3命令控制"
../../_images/handsup.png