函数说明#

实例连接控制#

DucoCobot ( string ip, unsigned int port )

函数说明:

创建机器人远程连接的实例。

参数说明:

ip : 远程连接机器人的ip地址。

port : 远程连接机器人的端口地址,固定为7003。

返回值:

机器人实例。


open ()

函数说明:

打开机器人连接。

参数说明:

无。

返回值:

Int类型,-1:打开失败;0:打开成功。


close ()

函数说明:

关闭机器人连接。

参数说明:

无。

返回值:

Int类型,-1:关闭失败;0:关闭成功。


rpc_heartbeat ( int time )

函数说明:

该指令用于确保机器人远程连接断开时,机器人自动产生一条stop指令以停止当前运动。使用该函数需要单独创建一个线程周期性调用,且在线程中新创建一个DucoCobot对象。不使用该函数时,远程连接断开后,机器人不再主动产生stop指令。

参数说明:

time : 心跳延时时间,单位(ms)。

返回值:

无。

系统控制#

当通讯断开连接,所有函数的返回值变为-1


power_on ( bool block )

函数说明:

机器人上电。

参数说明:

block : 指令是否阻塞型指令,如果为false表示非阻塞指令,指令会立即返回。

返回值:

当配置为阻塞执行,返回值代表当前任务结束时的状态,当配置为非阻塞执行,返回值代表当前任务的id信息,用户可以调用get_noneblock_taskstate(id)函数查询当前任务的执行状态。


power_off ( bool block )

函数说明:

机器人下电。

参数说明:

block : 指令是否阻塞型指令,如果为false表示非阻塞指令,指令会立即返回。

返回值:

当配置为阻塞执行,返回值代表当前任务结束时的状态,当配置为非阻塞执行,返回值代表当前任务的id信息,用户可以调用get_noneblock_taskstate(id)函数查询当前任务的执行状态。


enable ( bool block )

函数说明:

机器人上使能。

参数说明:

block : 指令是否阻塞型指令,如果为false表示非阻塞指令,指令会立即返回。

返回值:

当配置为阻塞执行,返回值代表当前任务结束时的状态,当配置为非阻塞执行,返回值代表当前任务的id信息,用户可以调用get_noneblock_taskstate(id)函数查询当前任务的执行状态。


disable ( bool block )

函数说明:

机器人下使能。

参数说明:

block : 指令是否阻塞型指令,如果为false表示非阻塞指令,指令会立即返回。

返回值:

当配置为阻塞执行,返回值代表当前任务结束时的状态,当配置为非阻塞执行,返回值代表当前任务的id信息,用户可以调用get_noneblock_taskstate(id)函数查询当前任务的执行状态。


shutdown ( bool block )

函数说明:

机器人关机。

参数说明:

block : 指令是否阻塞型指令,如果为false表示非阻塞指令,指令会立即返回。

返回值:

当配置为阻塞执行,返回值代表当前任务结束时的状态,当配置为非阻塞执行,返回值代表当前任务的id信息,用户可以调用get_noneblock_taskstate(id)函数查询当前任务的执行状态。


restart ( bool block )

函数说明:

机器人重启。

参数说明:

block : 指令是否阻塞型指令,如果为false表示非阻塞指令,指令会立即返回。

返回值:

当配置为阻塞执行,返回值代表当前任务结束时的状态,当配置为非阻塞执行,返回值代表当前任务的id信息,用户可以调用get_noneblock_taskstate(id)函数查询当前任务的执行状态。

任务控制#

stop(bool block)

函数说明:

停止所有任务。

参数说明:

block : 指令是否阻塞型指令,如果为false表示非阻塞指令,指令会立即返回。

返回值:

当配置为阻塞执行,返回值代表当前任务结束时的状态,当配置为非阻塞执行,返回值代表当前任 务的id信息,用户可以调用get_noneblock_taskstate(id)函数查询当前任务的执行状态。


pause ( bool block )

函数说明:

暂停所有任务。

参数说明:

block : 指令是否阻塞型指令,如果为false表示非阻塞指令,指令会立即返回。

返回值:

当配置为阻塞执行,返回值代表当前任务结束时的状态,当配置为非阻塞执行,返回值代表当前任务的id信息,用户可以调用get_noneblock_taskstate(id)函数查询当前任务的执行状态。


resume ( bool block )

函数说明:

恢复所有暂停的任务。

参数说明:

block : 指令是否阻塞型指令,如果为false表示非阻塞指令,指令会立即返回。

返回值:

当配置为阻塞执行,返回值代表当前任务结束时的状态,当配置为非阻塞执行,返回值代表当前任 务的id信息,用户可以调用get_noneblock_taskstate(id)函数查询当前任务的执行状态。


!注意

由于运动类脚本调用大多使用阻塞型指令,因此任务控制指令需要在新建的线程中,重新实例化DucoCobot(string ip,unsigned int port),并在新的实例中调用任务控制函数。

脚本控制#

run_program ( string name, bool block )

函数说明:

运行程序脚本。

参数说明:

name : 脚本程序名称。

block : 指令是否阻塞型指令,如果为false表示非阻塞指令,指令会立即返回。

返回值:

当配置为阻塞执行,返回值代表当前任务结束时的状态,当配置为非阻塞执行,返回值代表当前任务的id信息,用户可以调用get_noneblock_taskstate(id)函数查询当前任务的执行状态。


get_current_project ( string &path )

函数说明:

获取当前工程的路径。

参数说明:

path : 当前工程路径。

返回值:

无。


get_files_list ( map<string, int> &fileslist, const string &path )

函数说明:

获取指定路径下的文件列表。

参数说明:

filelist : 文件列表和类型;0:文件夹;1:文件。

path : 当前工程路径。

返回值:

无。

示例:

string project_path(“”);

get_current_project(project_path);

map<string, int> file_map;

get_files_list(file_map, project_path + “program”);

移动控制#

struct Op { char time_or_dist_1; char trig_io_1; bool trig_value_1; double trig_time_1; double trig_dist_1; string trig_event_1; char time_or_dist_2; char trig_io_2; bool trig_value_2; double trig_time_2; double trig_dist_2; string trig_event_2; char time_or_dist_3; char trig_io_3; bool trig_value_3; double trig_time_3; double trig_dist_3; string trig_event_3; }

特殊类型说明:

该参数类型用于控制机械臂在移动过程中控制机器人系统IO与寄存器输出。

参数说明:

time_or_dist_1:轨迹起始点触发类型,0:不启用,1:时间触发,2:距离触发。

trig_io_1::轨迹起始点目标触发IO或寄存器索引号,定义如下:1-16为控制柜通用IO输出1-16,101-164为bool寄存器输出1-64,201-232为word寄存器输出1-32,301-332为float寄存器输出1-32,401-402为机器人末端IO输出1-2。

trig_value_1::轨迹起始点目标触发IO或寄存器目标值。当目标触发类型为IO时,0为低电平,非零为搞定平。当目标触发类型为寄存器时,trig_value_1的值会根据目标寄存器数据类型进行强制转换后输出。

trig_time_1:轨迹起始点触发时间参数。当且仅当time_or_dist_1为时间触发时有效,代表轨迹运行多少时间长度触发IO,单位ms。

trig_dist_1:轨迹起始点触发距离参数。当time_or_dist_1为距离触发时,代表轨迹运行多少距离长度触发IO,单位m。

trig_event_1 : 轨迹起始点触发目标用户自定义事件名称。目标触发触发事件需要预先在机器人系统事件功能中定义且名称匹配。事件触发优先级高于IO或寄存器触发优先级,即若存在目标触发自定义事件,则不会触发目标IO或寄存器。若目标触发IO或寄存器,该参数写空。

time_or_dist_2:轨迹结束点触发类型,0:不启用,1:时间触发,2:距离触发。

trig_io_2:轨迹结束点目标触发IO或寄存器索引号,定义如下:1-16为控制柜通用IO输出1-16,101-164为bool寄存器输出1-64,201-232为word寄存器输出1-32,301-332为float寄存器输出1-32,401-402为机器人末端IO输出1-2。

trig_value_2:轨迹结束点目标触发IO或寄存器目标值。当目标触发类型为IO时,0为低电平,非零为搞定平。当目标触发类型为寄存器时,trig_value_2的值会根据目标寄存器数据类型进行强制转换后输出。 。 trig_time_2:轨迹结束点触发时间参数。对于 time_or_dist_2为时间触发时有效。当trig_time_2 > =0时,代表轨迹运行剩余多少时间长度触发目标IO或寄存器,单位ms; 当trig_time_2 < 0时,代表代表轨迹运行结束后多少时间长度后触发目标IO与寄存器。

trig_dist_2:轨迹结束点触发距离参数。对于 time_or_dist_2为距离触发时有效,当trig_dist_2 > =0时,代表轨迹运行剩余多少距离长度触发IO,单位m; 当trig_dist _2 < 0时,代表代表轨迹运行结束后多少距离长度后触发目标IO与寄存器。

trig_event_2:轨迹结束点触发目标用户自定义事件名称。目标触发触发事件需要预先在机器人系统事件功能中定义且名称匹配。事件触发优先级高于IO或寄存器触发优先级,即若存在目标触发自定义事件,则不会触发目标IO或寄存器。若目标触发IO或寄存器,该参数写空。

time_or_dist_3:轨迹暂停或停止触发类型,0:不启用,1:时间触发。

trig_io_3:轨迹触发目标触发IO或寄存器索引号,定义如下:1-16为控制柜通用IO输出1-16,101-164为bool寄存器输出1-64,201-232为word寄存器输出1-32,301-332为float寄存器输出1-32,401-402为机器人末端IO输出1-2。

trig_value_3:轨迹触发目标触发IO或寄存器目标值。当目标触发类型为IO时,0为低电平,非零为搞定平。当目标触发类型为寄存器时,trig_value_2的值会根据目标寄存器数据类型进行强制转换后输出。

trig_time_3:轨迹暂停或停止触发时间参数。对于 time_or_dist_3为时间触发时有效。当trig_time_3 > =0时,代表轨迹运行剩余多少时间长度触发目标IO或寄存器,单位ms; 当trig_time_3 < 0时,代表代表轨迹运行结束后多少时间长度后触发目标IO与寄存器。

trig_dist_3:当前暂停与停止触发不支持基于距离的触发方式,该参数无效。

trig_event_3:轨迹暂停或停止触发目标用户自定义事件名称。目标触发触发事件需要预先在机器人系统事件功能中定义且名称匹配。事件触发优先级高于IO或寄存器触发优先级,即若存在目标触发自定义事件,则不会触发目标IO或寄存器。若目标触发IO或寄存器,该参数写空。


struct MoveJogTaskParams { int jog_direction; int jog_type; int axis_num; double vel; int jog_coordinate; bool use_step; double step_jointValue; double step_cartValue; }

特殊类型说明:

该参数类型用于控制机械臂执行关节和笛卡尔空间点动。

参数说明:

jog_direction : 运动方向,-1:负方向,1:正方向。

jog_type : 运动方式,1:空间Jog,2:关节Jog。

axis_num : 关节的索引号。

vel : 速度百分比。

jog_coordinate : 参考的坐标系,0:世界,1:基座,2:工具,3:工件。

use_step : 步进模式,true:步进模式,false:连续模式。

step_jointValue : 关节步进距离,单位:m、rad。

step_cartValue : 空间步进距离,单位:m、rad。


movej2 ( vector<double> joints_list, double v, double a, double rad, bool block, Op op = op_, bool def_acc = true )

函数说明:

该指令控制机械臂从当前状态,按照关节运动的方式移动到目标关节角状态。

参数说明:

joints_list: axis数组对应1-6关节的目标关节角度,范围[-2*PI, 2*PI],单位rad。

v : 最大关节角速度指令,范围[0.01*PI/180, 1.25*PI],单位(rad/s)。

a : 最大关节角加速度指令,范围[0.01*PI/180, ∞],单位(rad/s2)。

rad : 轨迹融合半径,单位m,默认值为 0,表示无融合。当数值大于0时表示与下一条运动融合。产生融合运动时,机器人程序会根据融合预读取设定参数在运动指令执行过程中尝试提前获取后续运动函数。

block : 指令是否阻塞型指令,如果为false表示非阻塞指令,指令会立即返回。

op : 详见上方Op特殊类型说明(距离触发无效),可缺省参数。

def_acc : 是否使用默认加速度,默认为false,可缺省参数。当开启默认加速度时,执行运动时最大加速度参数不在生效,系统将会根据实际工况计算机器人可以产生的最大加速度指令进行运动,从而提升节拍。

返回值:

当配置为阻塞,返回值代表当前任务结束时状态,若无融合为Finished,若有融合为Interrupt。当配置为非阻塞,返回值代表当前任务的id信息,用户可以调用get_noneblock_taskstate(id)函数查询当前任务的执行状态。


movej_pose2 ( vector<double> p, double v, double a, double r, vector<double> q_near, string tool, string wobj, bool block, Op op = op_, bool def_acc = true )

函数说明:

该指令控制机械臂从当前状态,按照各关节相位同步运动的方式移动到末端目标位置。

参数说明:

p : 目标机器人工具在参考机器人工件坐标系中的位姿,位置单位m,姿态以Rx、Ry、Rz表示,范围[-2*PI, 2*PI],单位 (rad)。

v : 最大关节角速度,范围[0.01*PI/180, 1.25*PI],单位(rad/s)。

a : 最大关节加速度,范围[0.01*PI/180, ∞],单位(rad/s2)。

r : 轨迹融合半径,单位m,默认值为 0,表示无融合。当数值大于0时表示与下一条运动融合。产生融合运动时,机器人程序会根据融合预读取设定参数在运动指令执行过程中尝试提前获取后续运动函数。

q_near: 目标点附近位置对应的关节角度,用于确定逆运动学选解。

tool : 设置使用的工具的名称,为空时默认为当前使用的工具。

wobj : 设置使用的工件坐标系的名称,为空时默认为当前使用的工件坐标系。

block : 指令是否阻塞型指令,如果为false表示非阻塞指令,指令会立即返回。

op: 详见上方Op特殊类型说明(距离触发无效),可缺省参数。

def_acc : 是否使用默认加速度,默认为false,可缺省参数。当开启默认加速度时,执行运动时最大加速度参数不在生效,系统将会根据实际工况计算机器人可以产生的最大加速度指令进行运动,从而提升节拍。

返回值:

当配置为阻塞执行,返回值代表当前任务结束时的状态,若无融合为Finished,若有融合为Interrupt。当配置为非阻塞执行,返回值代表当前任务的id信息,用户可以调用get_noneblock_taskstate(id)函数查询当前任务的执行状态。


movel ( vector<double> p, double v, double a, double rad, vector<double> q_near, string tool, string wobj, bool block, Op op = op_, bool def_acc = true )

函数说明:

该指令控制机械臂末端从当前状态按照直线路径移动到目标位姿。

参数说明:

p : 目标机器人工具在参考机器人工件坐标系中的位姿,位置单位m,姿态以Rx、Ry、Rz表示,范围[-2*PI, 2*PI],单位(rad)。

v : 最大末端线速度,范围[0.01, 5],单位(m/s)。

a : 最大末端线加速度,范围[0.01, ∞],单位(m/s2)。

rad : 轨迹融合半径,单位(m),默认值为 0,表示无融合。当数值大于0时表示与下一条运动融合。产生融合运动时,机器人程序会根据融合预读取设定参数在运动指令执行过程中尝试提前获取后续运动函数。

qnear : 目标点附近位置对应的关节角度,用于校验机器人运动过程中逆运动学选解空间。

tool : 设置使用的工具的名称,为空时默认为当前使用的工具。

wobj : 设置使用的工件坐标系的名称,为空时默认为当前使用的工件坐标系。

block : 指令是否阻塞型指令,如果为false表示非阻塞指令,指令会立即返回。

op: 详见上方Op特殊类型说明,可缺省参数。

def_acc : 是否使用默认加速度,默认为false,可缺省参数。当开启默认加速度时,执行运动时最大加速度参数不在生效,系统将会根据实际工况计算机器人可以产生的最大加速度指令进行运动,从而提升节拍。

返回值:

当配置为阻塞执行,返回值代表当前任务结束时的状态,若无融合为Finished,若有融合为Interrupt。当配置为非阻塞执行,返回值代表当前任务的id信息,用户可以调用get_noneblock_taskstate(id)函数查询当前任务的执行状态。


movec ( vector<double> p1, vector<double> p2, double v, double a, double r, int mode, vector<double> q_near, string tool, string wobj, bool block, Op op = op_, bool def_acc = true )

函数说明:

该指令控制机械臂做圆弧运动,起始点为当前位姿点,途径p1点,终点为p2点。

参数说明:

p1 :圆弧运动过程中任意机器人工具在参考机器人工件坐标系中的位姿中间点,位置单位m,姿态以Rx、Ry、Rz表示范围[-2*PI, 2*PI],单位(rad) 。

p2 :目标机器人工具在参考机器人工件坐标系中的位姿,位置单位m,姿态以Rx、Ry、Rz表示范围[-2*PI, 2*PI],单位(rad) 。

v : 最大末端线速度,范围[0.01, 5],单位(m/s)。

a : 最大末端线加速度,范围[0.01, ∞],单位(m/s2)。

r : 轨迹融合半径,单位m,默认值为 0,表示无融合。当数值大于0时表示与下一条运动融合。产生融合运动时,机器人程序会根据融合预读取设定参数在运动指令执行过程中尝试提前获取后续运动函数。

mode : 姿态控制模式。

0:姿态与终点保持一致,即机器人会以p2点的姿态为目标姿态,平滑运动到目标姿态。

1:姿态与起点保持一致,即机器人会以开始执行movec函数时机器人末端工具坐标系在工件坐标系中的姿态为准,始终保持该姿态值。

2:姿态受圆心约束,即机器人会以开始执行movec函数时机器人末端工具坐标系与目标圆弧路径起点处切线方向间关系为参考,在圆弧运动过程中始终保持末端工具与圆弧实时运动所处位置切线方向参考关系。

qnear : 目标点附近位置对应的关节角度,用于校验机器人运动过程中逆运动学选解空间。

tool : 设置使用的工具的名称,为空时默认为当前使用的工具。

wobj : 设置使用的工件坐标系的名称,为空时默认为当前使用的工件坐标系。

block : 指令是否阻塞型指令,如果为false表示非阻塞指令,指令会立即返回。

op : 详见上方Op特殊类型说明,可缺省参数。

def_acc : 是否使用默认加速度,默认为false,可缺省参数。当开启默认加速度时,执行运动时最大加速度参数不在生效,系统将会根据实际工况计算机器人可以产生的最大加速度指令进行运动,从而提升节拍。

返回值:

当配置为阻塞执行,返回值代表当前任务结束时的状态,若无融合为Finished,若有融合为Interrupt。当配置为非阻塞执行,返回值代表当前任务的id信息,用户可以调用get_noneblock_taskstate(id)函数查询当前任务的执行状态。


move_circle ( vector<double> p1, vector<double> p2, double v, double a, double rad, int mode, vector<double> qnear, string tool, string wobj, bool block, Op op = op_, bool def_acc = true )

函数说明:

该指令控制机械臂做圆周运动,起始点为当前位姿点,途径p1点和p2点

参数说明:

p1 圆周运动过程中任意机器人工具在参考机器人工件坐标系中的位姿中间点1,位置单位m,姿态以Rx、Ry、Rz表示范围[-2*PI, 2*PI],单位(rad) 。

p2 :圆周运动过程中任意机器人工具在参考机器人工件坐标系中的位姿中间点2,最终以机器人初始运动位置-p1-p2的顺序决定最终整圆轨迹,位置单位m,姿态以Rx、Ry、Rz表示范围[-2*PI, 2*PI],单位(rad) 。

v : 最大末端线速度,范围[0.01, 5],单位(m/s)。

a : 最大末端线加速度,范围[0.01, ∞],单位(m/s2)。

rad : 轨迹融合半径,单位m,默认值为 0,表示无融合。当数值大于0时表示与下一条运动融合。产生融合运动时,机器人程序会根据融合预读取设定参数在运动指令执行过程中尝试提前获取后续运动函数。

mode : 姿态控制模式。

1:姿态与起点保持一致,即机器人会以开始执行movec函数时机器人末端工具坐标系在工件坐标系中的姿态为准,始终保持该姿态值。

2:姿态受圆心约束,即机器人会以开始执行movec函数时机器人末端工具坐标系与目标圆弧路径起点处切线方向间关系为参考,在圆弧运动过程中始终保持末端工具与圆弧实时运动所处位置切线方向参考关系。

qnear : 目标点附近位置对应的关节角度,用于校验机器人运动过程中逆运动学选解空间。

tool : 设置使用的工具的名称,默认为当前使用的工具。

wobj : 设置使用的工件坐标系的名称,默认为当前使用的工件坐标系。

block : 指令是否阻塞型指令,如果为false表示非阻塞指令,指令会立即返回,默认为阻塞。

op : 详见上方Op特殊类型说明,可缺省参数。

def_acc : 是否使用默认加速度,默认为false,可缺省参数。当开启默认加速度时,执行运动时最大加速度参数不在生效,系统将会根据实际工况计算机器人可以产生的最大加速度指令进行运动,从而提升节拍。

返回值:

当配置为阻塞执行,返回值代表当前任务结束时的状态,若无融合为Finished,若有融合为Interrupt。当配置为非阻塞执行,返回值代表当前任务的id信息,用户可以调用get_noneblock_taskstate(id)函数查询当前任务的执行状态。


tcp_move ( vector<double> pose_offset, double v, double a, double r, string tool, bool block, Op op = op_, bool def_acc = true )

函数说明:

该指令控制机械臂沿工具坐标系直线移动一个增量。

参数说明:

pose_offset:pose数据类型,或者长度为6的number型数组,表示工具坐标系下的位姿偏移量。偏移量将会转换为齐次变换矩阵右乘于当前机器人末端位姿之上。

v:最大末端线速度,范围[0.01, 5],单位m/s,当x、y、z均为0时,线速度按比例换算成角速度。

a : 最大末端线加速度,范围[0.01, ∞],单位(m/s2)。

r : 轨迹融合半径,单位m,默认值为 0,表示无融合。当数值大于0时表示与下一条运动融合。产生融合运动时,机器人程序会根据融合预读取设定参数在运动指令执行过程中尝试提前获取后续运动函数。

tool : 设置使用的工具的名称,为空时默认为当前使用的工具。

block : 指令是否阻塞型指令,如果为false表示非阻塞指令,指令会立即返回。

op : 详见上方Op特殊类型说明,可缺省参数。

def_acc : 是否使用默认加速度,默认为false,可缺省参数。当开启默认加速度时,执行运动时最大加速度参数不在生效,系统将会根据实际工况计算机器人可以产生的最大加速度指令进行运动,从而提升节拍。

返回值:

当配置为阻塞执行,返回值代表当前任务结束时的状态,若无融合为Finished,若有融合为Interrupt。当配置为非阻塞执行,返回值代表当前任务的id信息,用户可以调用get_noneblock_taskstate(id)函数查询当前任务的执行状态。


tcp_move_2p ( vector<double> p1, vector<double> p2, double v, double a, double r, string tool, string wobj , bool block, Op op = op_, bool def_acc = true )

函数说明:

该指令控制机器人沿工具坐标系直线移动一个增量,增量为p1与p2点之间的差,运动的目标点为:当前点*p1-1*p2。

参数说明:

p1 : 表示工具坐标系下的位姿偏移量计算点1。

p2 : 表示工具坐标系下的位姿偏移量计算点2。

v:最大末端线速度,范围[0.01, 5],单位(m/s),当x、y、z均为0时,线速度按比例换算成角速度。

a : 最大末端线加速度,范围[0.01, ∞],单位(m/s2)。

r :轨迹融合半径,单位m,默认值为 0,表示无融合。当数值大于0时表示与下一条运动融合。产生融合运动时,机器人程序会根据融合预读取设定参数在运动指令执行过程中尝试提前获取后续运动函数。

tool : 设置使用的工具的名称,默认为当前使用的工具。

wobj : 设置使用的工件坐标系的名称,默认为当前使用的工件坐标系。

block : 指令是否阻塞型指令,如果为false表示非阻塞指令,指令会立即返回。

op : 详见上方Op特殊类型说明,可缺省参数。

def_acc : 是否使用默认加速度,默认为false,可缺省参数。当开启默认加速度时,执行运动时最大加速度参数不在生效,系统将会根据实际工况计算机器人可以产生的最大加速度指令进行运动,从而提升节拍。

返回值:

当配置为阻塞执行,返回值代表当前任务结束时的状态,若无融合为Finished,若有融合为Interrupt。当配置为非阻塞执行,返回值代表当前任务的id信息,用户可以调用get_noneblock_taskstate(id)函数查询当前任务的执行状态。


wobj_move(vector<double> pose_offset, double v ,double a, double r, string wobj, bool block, Op op = op _, bool def_acc = true)

函数说明:

该指令控制机械臂沿工件坐标系直线移动一个增量。

参数说明:

pose_offset:pose数据类型,或者长度为6的number型数组,表示工件坐标系下的位姿偏移量。

v:最大末端线速度,范围[0.01, 5],单位m/s,当x、y、z均为0时,线速度按比例换算成角速度。

a : 最大末端线加速度,范围[0.01, ∞],单位(m/s2)。

r : 轨迹融合半径,单位m,默认值为 0,表示无融合。当数值大于0时表示与下一条运动融合。产生融合运动时,机器人程序会根据融合预读取设定参数在运动指令执行过程中尝试提前获取后续运动函数。

wobj : 设置使用的工件的名称,为空时默认为当前使用的工件。

block : 指令是否阻塞型指令,如果为false表示非阻塞指令,指令会立即返回。

op: 详见上方Op特殊类型说明,可缺省参数。

def_acc : 是否使用默认加速度,默认为false,可缺省参数。当开启默认加速度时,执行运动时最大加速度参数不在生效,系统将会根据实际工况计算机器人可以产生的最大加速度指令进行运动,从而提升节拍。

返回值:

当配置为阻塞执行,返回值代表当前任务结束时的状态,若无融合为Finished,若有融合为 Interrupt。当配置为非阻塞执行,返回值代表当前任务的id信息,用户可以调用 get_noneblock_taskstate(id)函数查询当前任务的执行状态。


wobj_move_2p (vector<double> p1, vector<double> p2, double v, double a, double r, string tool, string wobj , bool block, Op op = op _, bool def_acc = true)

函数说明:

该指令控制机器人沿工件坐标系直线移动一个增量,增量为p1与p2点之间的位姿偏移在工件坐标系下的描述offsetwobj,运动的目标点为:当前点* offsetwobj

参数说明:

p1 :表示工件坐标系下的位姿偏移量计算点1。

p2 :表示工件坐标系下的位姿偏移量计算点2。

v:最大末端线速度,范围[0.01, 5],单位(m/s),当x、y、z均为0时,线速度按比例换算成角速度。

a :最大末端线 加速度,范围[0.01, ∞],单位(m/s2)。

rad : 轨迹融合半径,单位m,默认值为 0,表示无融合。当数值大于0时表示与下一条运动融合。产生融合运动时,机器人程序会根据融合预读取设定参数在运动指令执行过程中尝试提前获取后续运动函数。

tool : 参考点使用的工具的名称,默认为当前使用的工具。

wobj : 参考点使用的工件坐标系的名称,默认为当前使用的工件坐标系。

block : 指令是否阻塞型指令,如果为false表示非阻塞指令,指令会立即返回,默认为阻塞。

op:详见上方Op特殊类型说明,可缺省参数。

def_acc : 是否使用默认加速度,默认为false,可缺省参数。当开启默认加速度时,执行运动时最大加速度参数不在生效,系统将会根据实际工况计算机器人可以产生的最大加速度指令进行运动,从而提升节拍。

返回值:

当配置为阻塞执行,返回值代表当前任务结束时的状态,若无融合为Finished,若有融合为 Interrupt。当配置为非阻塞执行,返回值代表当前任务的id信息,用户可以调用 get_noneblock_taskstate(id)函数查询当前任务的执行状态。


speedj ( vector<double> joints_list, double a, int time, bool block )

函数说明:

该指令控制机械臂每个关节按照给定的速度一直运动,函数执行后会直接运行后续指令。运行speedj函数后,机械臂会持续运动并忽略后续运动指令,直到接收到speed_stop()函数后停止。

参数说明:

joints_list : 每个关节的速度,范围[0.01*PI/180, 1.25*PI],单位(rad/s)。

a : 主导轴的关节加速度,范围[0.01*PI/180, ∞],单位(rad/s2)。

time : 运行时间,到达时间后会停止运动,单位(ms)。默认-1表示一直运行。

block : 指令是否阻塞型指令,如果为false表示非阻塞指令,指令会立即返回。

返回值:

当配置为阻塞执行,返回值代表当前任务结束时的状态,当配置为非阻塞执行,返回值代表当前任 务的id信息,用户可以调用get_noneblock_taskstate(id)函数查询当前任务的执行状态。


speedl ( vector<double> pose_list, double a, int time, bool block )

函数说明:

该指令控制机械臂末端按照给定的速度一直运动,函数执行后会直接运行后续指令。运行speedl函数后,机械臂会持续运动并忽略后续运动指令,直到接收到speed_stop()函数后停止。

参数说明:

pose_list : 末端速度向量,线速度范围[0.00001, 5],线速度单位(m/s),角速度范围(0, 1.25*PI],角速度范围(0, 2*PI],角速度单位(rad/s)。

a : 末端的线性加速度,范围[0.00001, ∞],单位(rad/s2)。

time : 运行时间,到达时间会停止运动,单位(ms)。默认-1表示一直运行。

block : 指令是否阻塞型指令,如果为false表示非阻塞指令,指令会立即返回。

返回值:

当配置为阻塞执行,返回值代表当前任务结束时的状态,当配置为非阻塞执行,返回值代表当前任务的id信息,用户可以调用get_noneblock_taskstate(id)函数查询当前任务的执行状态。


speed_stop ( bool block )

函数说明:

停止speedj及speedl函数的运动。

参数说明:

block : 指令是否阻塞型指令,如果为false表示非阻塞指令,指令会立即返回。

返回值:

当配置为阻塞执行,返回值代表当前任务结束时的状态,当配置为非阻塞执行,返回值代表当前任务的id信息,用户可以调用get_noneblock_taskstate(id)函数查询当前任务的执行状态。


teach_mode ( bool block )

函数说明:

该函数用于控制机器人进入牵引示教模式。

参数说明:

block: 指令是否阻塞型指令,如果为false表示非阻塞指令,指令会立即返回。

返回值:

当配置为阻塞执行,返回值代表当前任务结束时的状态,当配置为非阻塞执行,返回值代表当前任务的id信息,用户可以调用get_noneblock_taskstate(id)函数查询当前任务的执行状态。


end_teach_mode ( bool block )

函数说明:

该函数用于控制机器人退出牵引示教模式。

参数说明:

block: 指令是否阻塞型指令,如果为false表示非阻塞指令,指令会立即返回。

返回值:

当配置为阻塞执行,返回值代表当前任务结束时的状态,当配置为非阻塞执行,返回值代表当前任务的id信息,用户可以调用get_noneblock_taskstate(id)函数查询当前任务的执行状态。


set_hand_teach_parameter ( int32_t space, const std::vector<int32_t> & joint_scale, const std::vector<int32_t> & cart_scale, int32_t coord_type, const std::vector<bool> & direction )

函数说明:

设置牵引时的参数。

参数说明:

space: 牵引类型, 0: 关节空间, 1: 笛卡尔空间。

joint_scale: 关节柔顺度, 元素数量必须为机器人关节数量。

cart_scale: 笛卡尔柔顺度, 元素数量必须为6个。

coord_type: 笛卡尔示教参考坐标系类型, 0: 世界, 1: 基座, 2: 工具, 3: 工件。

direction: 牵引方向激活, true: 激活, false: 不激活。

返回值:

返回值代表当前任务结束时的状态。


replay ( string name, int v, int mode )

函数说明:

该函数用于对记录的轨迹基于关节空间(或基于笛卡尔空间)复现。

参数说明:

name:轨迹名称。

v: 轨迹速度,(系统设定速度的百分比%),取值范围(0,100]。

mode : 复现方式,0:基于关节空间,1:基于笛卡尔空间。

返回值:

无。


spline ( vector< vector<double> > p_list, double v, double a, string tool, string wobj, bool block, Op op = op_, double r = 0, bool def_acc = true )

函数说明:

样条运动函数,该指令控制机器人按照空间样条进行运动。

参数说明:

p_list:在设置工件坐标系下的末端位姿列表,最多不超过50个点,格式如下:

[p1,p2,p3,…,pi,…]

其中pi为空间位姿,如[0.4,0.5,0.5,1.2,0.717,1.414]。

v : 最大末端线速度,范围[0.01, 5],单位(m/s)。

a : 最大末端线加速度,范围[0.01, ∞],单位(m/s2)。

tool : 设置使用的工具的名称,为空时默认为当前使用的工具。

wobj : 设置使用的工件坐标系的名称,为空默认为当前使用的工件坐标系

block : 指令是否阻塞型指令,如果为false表示非阻塞指令,指令会立即返回。

op : 详见上方Op特殊类型说明,可缺省参数。

r :轨迹融合半径,单位m,默认值为 0,表示无融合。当数值大于0时表示与下一条运动融合。

def_acc : 是否使用默认加速度,默认为false,可缺省参数。当开启默认加速度时,执行运动时最大加速度参数不在生效,系统将会根据实际工况计算机器人可以产生的最大加速度指令进行运动,从而提升节拍。

返回值:

当配置为阻塞执行,返回值代表当前任务结束时的状态,若无融合为Finished,若有融合为Interrupt。当配置为非阻塞执行,返回值代表当前任务的id信息,用户可以调用get_noneblock_taskstate(id)函数查询当前任务的执行状态。

警告

连续两条spline一起使用时,需要注意前一条的spline结束点与后一条的spline起始点,不能是同一个点。


spline_op ( vector<PointOP> & pose_list, double v, double a, const string& tool, const string& wobj, bool block, const OP &op = op_, double r = 0, bool def_acc = false )

函数说明:

样条运动函数, 控制机器人按照空间样条进行运动, 在运动过程中触发对应点位的OP操作。

参数说明:

pose_list : 在设置工件坐标系下的末端位姿列表,最多不超过50个点,格式如下:

{{p_1,op_1},{p_2,op_2},......,{p_i,op_i}}

v : 末端速度,范围[0.00001, 5],单位(m/s)。

a : 末端加速度,范围[0.00001, ∞],单位(m/s2)。

tool : 设置使用的工具的名称,为空时默认为当前使用的工具。

wobj : 设置使用的工件坐标系的名称,为空默认为当前使用的工件坐标系

block : 指令是否阻塞型指令,如果为false表示非阻塞指令,指令会立即返回。

op : 详见上方Op特殊类型说明,可缺省参数。

r : 融合半径,单位m,默认值为 0,表示无融合。当数值大于0时表示与下一条运动融合,可缺 省参数。

def_acc : 是否使用系统默认加速度, false表示使用自定义的加速度值, true表示使用系统自动规划的加速度值, 可缺省, 默认为false。

返回值:

当配置为阻塞执行,返回值代表当前任务结束时的状态,若无融合为Finished,若有融合为Interrupt。当配置为非阻塞执行,返回值代表当前任务的id信息,用户可以调用get_noneblock_taskstate(id)函数查询当前任务的执行状态。

警告

连续两条spline一起使用时,需要注意前一条的spline结束点与后一条的spline起始点,不能是同一个点。


servoj ( vector<double> joints_list, double v, double a, bool block, double kp, double kd, double smooth_vel, double smooth_acc)

函数说明:

该指令控制机械臂从当前状态,按照机器人各关节独立运动的方式移动到目标关节角状态,运动过程中不考虑笛卡尔空间路径且不保证各关节间的运动规划相位同步。当在servoj运动过程中收到一条新的servoj运动指令时,机器人将会以当前运动规划状态向新的关节目标位置移动,舍弃之前的目标位置。

参数说明:

joints_list: axis数组对应1-6关节的目标关节角度,范围[-2*PI, 2*PI],单位rad。

v : 最大关节角速度,范围[0.01*PI/180, 1.25*PI],单位(rad/s)。当用户使用servoj指令连续发送较为密集的关节位置指令时,此时默认用户对轨迹路径以及速度存在软实时插补(无法保证加速度及速度平滑连续),此时推荐用户将v设置为关节最大速度保护值,并通过调整连续离散点位的发送时间间隔来控制机器人最终运动速度。当用户使用servoj指令发送非连续目标位置以控制机器人到达不同的关节位置时,此时servoj指令作用同时涵盖路径插补以及运动学插补,此时推荐用户将v设置为目标关节产生运动的最大速度,直接通过servoj函数实现对最终运动速度指令的规划。

a : 最大关节加速度,范围[0.01*PI/180, ∞],单位(rad/s2)。最大关节加速度的设定值方法与最大关节角速度设定方法雷同,根据用户使用servoj运动产生目标运动方案的不同存在一定差异性。

block : 指令是否阻塞型指令,如果为false表示非阻塞指令,指令会立即返回, 默认值false,可缺省。

kp:比例参数,默认值200,可缺省,建议使用默认参数。

kd:微分参数,默认值25,可缺省,建议使用默认参数。

smooth_vel: 速度平滑系数,范围[1,100],当用户连续使用servoj指令发送连续离散关节位置点时,若由于发送的连续点位间经过时间差分不连续或发送周期抖动较大无法有效保证最终速度稳定性时,可以通过调整该平滑系数进行最终运动速度指令的稳定性。平滑系数越大,对速度的平滑效果越强,同时会引入更大的跟随滞后。

smooth_acc: 加速度平滑系数,范围[0,1],与速度平滑系数雷同,当用户连续使用servoj指令发送连续离散关节位置点时,若由于发送的连续点位间经过时间差分不连续或发送周期抖动较大无法有效保证最终加速度稳定性时,可以通过调整该平滑系数进行最终运动加速度指令的稳定性。平滑系数越大,对速度的加平滑效果越强,同时会引入更大的跟随滞后。

返回值:

返回值代表当前任务的id信息,用户可以调用get_noneblock_taskstate(id)函数查询当前任务的执行状态。


servoj_pose ( vector<double> p, double v, double a, vector<double> qnear, string tool, string wobj, bool block, double kp, double kd, double smooth_vel, double smooth_acc )

函数说明:

该指令控制机械臂从当前状态,按照机器人各关节独立运动的方式移动到目标机器人末端在参考工件坐标系中的位姿,运动过程中不考虑笛卡尔空间路径且不保证各关节间的运动规划相位同步。当在servoj_pose运动过程中收到一条新的servoj_pose运动指令时,机器人将会以当前运动规划状态向新的关节目标位置移动,舍弃之前的目标位置。

参数说明:

p : 目标工具在参考工件坐标系下的末端位姿,单位(m/rad)。

v : 最大关节角速度,范围[0.01*PI/180, 1.25*PI],单位(rad/s)。当用户使用servoj_pose指令连续发送较为密集的关节位置指令时,此时默认用户对轨迹路径以及速度存在软实时插补(无法保证加速度及速度平滑连续),此时推荐用户将v设置为关节最大速度保护值,并通过调整连续离散点位的发送时间间隔来控制机器人最终运动速度。当用户使用servoj_pose指令发送非连续目标位置以控制机器人到达不同的关节位置时,此时servoj_pose指令作用同时涵盖路径插补以及运动学插补,此时推荐用户将v设置为目标关节产生运动的最大速度,直接通过servoj_pose函数实现对最终运动速度指令的规划。

a : 最大关节角加速度,范围[0.01*PI/180, ∞],单位(rad/s2)。最大关节加速度的设定值方法与最大关节角速度设定方法雷同,根据用户使用servoj_pose运动产生目标运动方案的不同存在一定差异性。

qnear : 目标点位置对应的关节角度,用于确定逆运动学选解,单位rad

tool : 设置使用的工具的名称,为空时默认为当前使用的工具。

wobj : 设置使用的工件坐标系的名称,为空默认为当前使用的工件坐标系。

block : 指令是否阻塞型指令,如果为false表示非阻塞指令,指令会立即返回, 默认值false,可缺省。

kp:比例参数,默认值200,可缺省,建议使用默认参数。

kd:微分参数,默认值25,可缺省,建议使用默认参数。

smooth_vel: 速度平滑系数,范围[1,100],当用户连续使用servoj_pose指令发送连续离散关节位置点时,若由于发送的连续点位间经过时间差分不连续或发送周期抖动较大无法有效保证最终速度稳定性时,可以通过调整该平滑系数进行最终运动速度指令的稳定性。平滑系数越大,对速度的平滑效果越强,同时会引入更大的跟随滞后。

smooth_acc: 加速度平滑系数,范围[0,1],与速度平滑系数雷同,当用户连续使用servoj_pose指令发送连续离散关节位置点时,若由于发送的连续点位间经过时间差分不连续或发送周期抖动较大无法有效保证最终加速度稳定性时,可以通过调整该平滑系数进行最终运动加速度指令的稳定性。平滑系数越大,对速度的加平滑效果越强,同时会引入更大的跟随滞后。

返回值:

非阻塞执行,返回值代表当前任务的id信息,用户可以调用get_noneblock_taskstate(id)函数查询当前任务的执行状态。


servo_tcp ( vector<double> pose_offset, double v, double a, string tool, bool block, double kp, double kd, double smooth_vel, double smooth_acc )

函数说明:

该指令控制机械臂从当前状态,按照机器人各关节独立运动的方式移动到参考当前机器人末端在参考工件坐标系中的位姿叠加目标位姿增量后的位姿,运动过程中不考虑笛卡尔空间路径且不保证各关节间的运动规划相位同步。当在servoj_pose运动过程中收到一条新的servoj_pose运动指令时,机器人将会以当前运动规划状态向新的关节目标位置移动,舍弃之前的目标位置。

参数说明:

p : 目标工具在参考工件坐标系下参考机器人当前目标位姿的参考增量,单位(m/rad)。

v : 最大关节角速度,范围[0.01*PI/180, 1.25*PI],单位(rad/s)。当用户使用servo_tcp指令连续发送较为密集的关节位置指令时,此时默认用户对轨迹路径以及速度存在软实时插补(无法保证加速度及速度平滑连续),此时推荐用户将v设置为关节最大速度保护值,并通过调整连续离散点位的发送时间间隔来控制机器人最终运动速度。当用户使用servo_tcp指令发送非连续目标位置以控制机器人到达不同的关节位置时,此时servo_tcp指令作用同时涵盖路径插补以及运动学插补,此时推荐用户将v设置为目标关节产生运动的最大速度,直接通过servo_tcp函数实现对最终运动速度指令的规划。

a : 最大关节角加速度,范围[0.01*PI/180, ∞],单位(rad/s2)。最大关节加速度的设定值方法与最大关节角速度设定方法雷同,根据用户使用servo_tcp运动产生目标运动方案的不同存在一定差异性。

tool : 设置使用的工具的名称,为空时默认为当前使用的工具。

block : 指令是否阻塞型指令,如果为false表示非阻塞指令,指令会立即返回, 默认值false,可缺省。

kp:比例参数,默认值200,可缺省,建议使用默认参数。

kd:微分参数,默认值25,可缺省,建议使用默认参数。

smooth_vel: 速度平滑系数,范围[1,100],当用户连续使用servo_tcp指令发送连续离散关节位置点时,若由于发送的连续点位间经过时间差分不连续或发送周期抖动较大无法有效保证最终速度稳定性时,可以通过调整该平滑系数进行最终运动速度指令的稳定性。平滑系数越大,对速度的平滑效果越强,同时会引入更大的跟随滞后。

smooth_acc: 加速度平滑系数,范围[0,1],与速度平滑系数雷同,当用户连续使用servo_tcp指令发送连续离散关节位置点时,若由于发送的连续点位间经过时间差分不连续或发送周期抖动较大无法有效保证最终加速度稳定性时,可以通过调整该平滑系数进行最终运动加速度指令的稳定性。平滑系数越大,对速度的加平滑效果越强,同时会引入更大的跟随滞后。

返回值:

非阻塞执行,返回值代表当前任务的id信息,用户可以调用get_noneblock_taskstate(id)函数查询当前任务的执行状态。


servol(std::vector<double> &pose_list, double v, double a, std::vector<double> &q_near, string &tool, string &wobj, bool block, double kp, double kd, double smooth_vel, double smooth_acc)

函数说明:

该指令控制机械臂从当前状态,按照机器人各关节独立运动的方式移动到目标机器人末端在参考工件坐标系中位姿,运动过程中不考虑笛卡尔空间路径且不保证各笛卡尔方向的运动规划相位同步。当在servol运动过程中收到一条新的servol运动指令时,机器人将会以当前运动规划状态向新的关节目标位置移动,舍弃之前的目标位置。

参数说明:

p : 目标工具在参考工件坐标系下参考机器人当前目标位姿,单位(m/rad)。

v : 最大关节角速度,范围[0.01*PI/180, 1.25*PI],单位(rad/s)。当用户使用servol指令连续发送较为密集的关节位置指令时,此时默认用户对轨迹路径以及速度存在软实时插补(无法保证加速度及速度平滑连续),此时推荐用户将v设置为关节最大速度保护值,并通过调整连续离散点位的发送时间间隔来控制机器人最终运动速度。当用户使用servol指令发送非连续目标位置以控制机器人到达不同的关节位置时,此时servol指令作用同时涵盖路径插补以及运动学插补,此时推荐用户将v设置为目标关节产生运动的最大速度,直接通过servol函数实现对最终运动速度指令的规划。

a : 最大关节角加速度,范围[0.01*PI/180, ∞],单位(rad/s2)。最大关节加速度的设定值方法与最大关节角速度设定方法雷同,根据用户使用servol运动产生目标运动方案的不同存在一定差异性。

tool : 设置使用的工具的名称,为空时默认为当前使用的工具。

block : 指令是否阻塞型指令,如果为false表示非阻塞指令,指令会立即返回, 默认值false,可缺省。

kp:比例参数,默认值200,可缺省,建议使用默认参数。

kd:微分参数,默认值25,可缺省,建议使用默认参数。

smooth_vel: 速度平滑系数,范围[1,100],当用户连续使用servol指令发送连续离散关节位置点时,若由于发送的连续点位间经过时间差分不连续或发送周期抖动较大无法有效保证最终速度稳定性时,可以通过调整该平滑系数进行最终运动速度指令的稳定性。平滑系数越大,对速度的平滑效果越强,同时会引入更大的跟随滞后。

smooth_acc: 加速度平滑系数,范围[0,1],与速度平滑系数雷同,当用户连续使用servol指令发送连续离散关节位置点时,若由于发送的连续点位间经过时间差分不连续或发送周期抖动较大无法有效保证最终加速度稳定性时,可以通过调整该平滑系数进行最终运动加速度指令的稳定性。平滑系数越大,对速度的加平滑效果越强,同时会引入更大的跟随滞后。

返回值:

非阻塞执行,返回值代表当前任务的id信息,用户可以调用get_noneblock_taskstate(id)函数查询当前任务的执行状态。

备注

当前所有servo运动仅支持同类型servo运动间连续控制,当接收到一条不同类型的servo运动时,新收到的servo运动会被暂时挂起,直到当前正在执行的servo运动运行完成后,继续执行新收到的servo运动。


move_spiral ( vector<double> p1, vector<double> p2, double rev, double len, double rad, int mode, double v, double a, vector<double> qnear, string tool, string wobj, bool block, Op op = op_, bool def_acc = true )

函数说明:

该指令通过参数或者结束点两种设置方式,在笛卡尔空间做螺旋轨迹运动。

参数说明:

p1 : 螺旋线中心点位姿。

p2 : 螺旋线的目标点位姿,参数设置模式时不参考此参数。

rev : 总旋转圈数,rev < 0,表示顺时针旋转;rev > 0,表示逆时针旋转。

len : 轴向移动距离,正负号遵循右手定则,结束点设置模式时不参考此参数,单位(m)。

red : 目标点半径,结束点设置模式时不参考此参数,单位(m)。

mode : 螺旋线示教模式,0:参数设置,1:结束点设置。

v : 最大末端线速度,范围[0.01, 5],单位(m/s)。

a : 最大末端线加速度,范围[0.01, ∞],单位(m/s2)。

qnear : 目标点位置对应的关节角度,用于确定逆运动学选解,单位(rad)

tool : 设置使用的工具的名称,为空时默认为当前使用的工具。

wobj : 设置使用的工件坐标系的名称,为空默认为当前使用的工件坐标系。

block : 指令是否阻塞型指令,如果为false表示非阻塞指令,指令会立即返回。

op : 详见上方Op特殊类型说明,可缺省参数。

def_acc : 是否使用默认加速度,默认为false,可缺省参数。当开启默认加速度时,执行运动时最大加速度参数不在生效,系统将会根据实际工况计算机器人可以产生的最大加速度指令进行运动,从而提升节拍。

返回值:

当配置为阻塞执行,返回值代表当前任务结束时的状态。当配置为非阻塞执行,返回值代表当前任务的id信息,用户可以调用get_noneblock_taskstate(id)函数查询当前任务的执行状态。


move_jog ( const MoveJogTaskParams& param, bool block )

函数说明:

该指令控制机械臂在关节或者笛卡尔空间做点动。

参数说明:

param : Jog运动的相关参数,参考MoveJogTaskParams。

block : 指令是否阻塞型指令,如果为false表示非阻塞指令,指令会立即返回。

返回值:

当配置为阻塞执行,返回值代表当前任务结束时的状态,若无融合为Finished,若有融合为Interrupt。当配置为非阻塞执行,返回值代表当前任务的id信息,用户可以调用get_noneblock_taskstate(id)函数查询当前任务的执行状态。


stop_manual_move ( bool block )

函数说明:

该指令结束机械臂的关节或者笛卡尔Jog。

参数说明:

block : 指令是否阻塞型指令,如果为false表示非阻塞指令,指令会立即返回。

返回值:

当配置为阻塞执行,返回值代表当前任务结束时的状态,若无融合为Finished,若有融合为Interrupt。当配置为非阻塞执行,返回值代表当前任务的id信息,用户可以调用get_noneblock_taskstate(id)函数查询当前任务的执行状态。


set_blend_ahead ( int per, int num )

函数说明:

该指令设置融合预读取的百分比。

参数说明:

per : 融合预读取的百分比,单位:%,通常设为0或者50。

num:当前仅当融合预读取百分比参数设置为0时生效,可缺省,范围[1,3],默认为1,即仅额外预读取一行运动指令。在机器人目标工作在高速连续短轨迹融合运动时,若不存在过程逻辑问题,应尽可能设置较大的预读取轨迹数量以保证融合稳定性。

返回值:

返回值代表当前任务结束时的状态。

can及485总线#

set_baudrate_485 ( int value, bool block )

函数说明:

该函数用于设置485的波特率。

参数说明:

value : 波特率。

block : 指令是否阻塞型指令,如果为false表示非阻塞指令,指令会立即返回。

返回值:

当配置为阻塞执行,返回值代表当前任务结束时的状态,当配置为非阻塞执行,返回值代表当前任 务的id信息,用户可以调用get_noneblock_taskstate(id)函数查询当前任务的执行状态。


read_raw_data_485 ( vector<int8_t> _return, int len )

函数说明:

485端口读取长度为len的字节数据。

参数说明:

_return : 读取到的数据,未读到数据返回空列表。

len : 需要读取的长度。

返回值:

无。


read_raw_data_485_h ( vector<int8_t > _return, vector<int8_t > head, int len )

函数说明:

匹配头head后读取到长度为len的一帧数据。

参数说明:

_return : 读取到的数据,未读到数据返回空列表。

head : 需要匹配的头数据。

len : 需要读取的长度。

返回值:

无。

示例:

vector<int8_t> _return;

vector<int8_t> head = {255,1};

read_raw_data_485_h (_return, head, 10)


read_raw_data_485_ht ( vector< int8_t > _return, vector<int8_t> head, vector<int8_t> tail )

函数说明:

匹配头head和尾tail读取到一帧匹配的数据。

参数说明:

_return : 读取到的数据,未读到数据返回空列表。

head : 需要匹配的头数据。

tail : 需要匹配的尾数据。

返回值:

无。

示例:

vector<int8_t> _return;

vector<int8_t> head = {255,1};

vector<int8_t> tail = {255,1};

read_raw_data_485_ht (_return, head, tail);


write_raw_data_485 ( vector<int8_t> value )

函数说明:

485写原生数据,将表value中的数据写入485端口。

参数说明:

data : 需要写入的数据列表。

返回值:

true : 成功。

false : 失败。

示例:

vector<int8_t> data={255,1};

bool rlt = write_raw_data_485(data);


write_raw_data_485_h ( vector<int8_t> value, vector<int8_t> head )

函数说明:

485写原生数据,将列表value中的数据加上head写入485端口。

参数说明:

value : 需要写入的数据列表。

head : 需要添加的头。

返回值:

true : 成功。

false : 失败

示例:

vector<int8_t> data={1,2,3};

vector<int8_t> head={255,255};

bool rlt = write_raw_data_485_h (data, head)


write_raw_data_485_ht ( vector<int8_t> value, vector<int8_t> head, vector<int8_t> tail )

函数说明:

485写原生数据,将列表value中的数据加上头head和尾tail写入485端口。

参数说明:

value : 需要写入的数据列表。

head : 需要添加的头。

tail : 需要添加的尾。

返回值:

true : 成功。

false : 失败。

示例:

vector<int8_t> data={1,2,3};

vector<int8_t> head={255,255};

vector<int8_t> tail={255,255};

bool rlt = write_raw_data_485_ht (data, head, tail)


tool_read_raw_data_485 ( vector<int8_t> _return , int len )

函数说明:

末端485端口读取长度为len的字节数据。

参数说明:

_return : 读取到的数据,未读到数据返回空列表。

len : 需要读取的长度。

返回值:

无。

示例:

vector<int8_t> data;

tool_read_raw_data_485 (data, 10);


tool_read_raw_data_485_h ( vector<int8_t> _return, vector<int8_t> head, int:len )

函数说明:

末端485匹配头head后读取到长度为len的一帧数据。

参数说明:

_return : 读取到的数据,未读到数据返回空列表。

head : 需要匹配的头数据。

len : 需要读取的长度。

返回值:

无。

示例:

vector<int8_t> data;

vector<int8_t> head={255,255};

tool_read_raw_data_485_h (data, head, 10);


tool_read_raw_data_485_ht ( vector<int8_t> _return, vector<int8_t> head, vector<int8_t> tail )

函数说明:

末端485匹配头head和尾tail读取到一帧匹配的数据。

参数说明:

_return : 读取到的数据,未读到数据返回空列表。

head : 需要匹配的头数据。

tail : 需要匹配的尾数据。

返回值:

无。

示例:

vector<int8_t> data;

vector<int8_t> head={255,1};

vector<int8_t> tail={1,255};

tool_read_raw_data_485_ht (data, head, tail);


tool_write_raw_data_485 ( vector<int8_t> data )

函数说明:

末端485写原生数据,将表data中的数据写入485端口。

参数说明:

data : 需要写入的数据列表。

返回值:

true : 成功。

false : 失败。

示例:

vector<int8_t> data = {1,2,3};

tool_write_raw_data_485 (data);


tool_write_raw_data_485_h ( vector<int8_t> value, vector<int8_t> head )

函数说明:

末端485写原生数据,将表value中的数据加上head写入485端口。

参数说明:

value : 需要写入的数据列表。

head : 需要添加的头。

返回值:

true : 成功。

false : 失败

示例:

vector<int8_t> data = {1,2,3};

vector<int8_t> head={255,1};

tool_write_raw_data_485_h (data, head)


tool_write_raw_data_485_ht ( vector<int8_t> value, vector<int8_t> head, vector<int8_t> tail )

函数说明:

末端485写原生数据,将表value中的数据加上头head和尾tail写入485端口。

参数说明:

value : 需要写入的数据列表。

head : 需要添加的头。

tail : 需要添加的尾。

返回值:

true : 成功。

false : 失败。

示例:

vector<int8_t> data = {1,2,3};

vector<int8_t> head={255,1};

vector<int8_t> tail={1,255};

tool_write_raw_data_485_ht (data, head, tail)


set_baudrate_can ( int value, bool block )

函数说明:

该函数用于设置CAN的波特率。

参数说明:

value : 波特率;

block : 指令是否阻塞型指令,如果为false表示非阻塞指令,指令会立即返回。

返回值:

当配置为阻塞执行,返回值代表当前任务结束时的状态,当配置为非阻塞执行,返回值代表当前任务的id信息,用户可以调用get_noneblock_taskstate(id)函数查询当前任务的执行状态。


read_raw_data_can ( vector<int8_t> data )

函数说明:

读取一帧can的字节数据。

参数说明:

data : 读取到的数据,未读到数据返回空列表,读到数据时,列表的第一个数据为发送端的can帧id。

返回值:

无。


write_raw_data_can ( double id, vector<int8_t> data )

函数说明:

can写帧为id,数据为data的原生数据。

参数说明:

id : 数据帧的id。

data : 要发送的数据列表。

返回值:

true : 成功。

false : 失败。

系统函数及外设#

!注意

若范围参数越界,函数将返回false或0


set _digital_out_mode ( int16_t num, int16_t type, int freq, int duty_cycle )

函数说明:

该函数可设置控制柜上的通用IO输出的信号类型。

参数说明:

num : 控制柜上的IO输出口序号,范围从1-16。

type : 0为电平模式,1为周期脉冲模式。

freq : 频率,单位:Hz,范围从1-100。

duty_cycle : 占空比,单位:%,1-100。

参数错误时函数不改变IO输出信号类型。

类型设置完成后,若设置未电平迷失,则需要主动发送输出信号才能生效。若设置成周期脉冲模式后,需要发送一个高电平的启动信号。

返回值:

当前任务结束时的状态。


备注

若要将通用output修改为脉冲输出,在对通用IO输出类型完成配置后,仍然需要使用set_standard_digital_out函数来控制脉冲的有无。当前仅允许对脉冲类型统一设置,无法对不同通用output口,设置不同的脉冲类型。脉冲脉宽的最小识别率为1ms。即当频率为100hz时,占空比最小值为10。若超出范围将关闭脉冲输出。


set_standard_digital_out ( int num, bool val, bool block )

函数说明:

该函数可控制控制柜上的IO输出口的高低电平。

参数说明:

num : 控制柜上的IO输出口序号,范围从1-16。

val : true为高电平,false为低电平。

参数错误时函数不改变IO输出。

block : 指令是否阻塞型指令,如果为false表示非阻塞指令,指令会立即返回。

返回值:

当配置为阻塞执行,返回值代表当前任务结束时的状态,当配置为非阻塞执行,返回值代表当前任务的id信息,用户可以调用get_noneblock_taskstate(id)函数查询当前任务的执行状态。


get_standard_digital_out ( int num )

函数说明:

该函数可获取控制柜上通用IO输出口的高低电平,返回true为高电平,false为低电平。

参数说明:

num : 控制柜上的IO输出口序号,范围从1-16。

返回值:

bool,返回true为高电平,false为低电平。


get_standard_digital_in ( int num )

函数说明:

该函数可读取控制柜上的用户IO输入口的高低电平,返回true为高电平,false为低电平。

参数说明:

num : 控制柜上的IO输入口序号,范围从1-16。

返回值:

bool,返回true为高电平,false为低电平。


set_tool_digital_out ( int num, bool val, bool block )

函数说明:

该函数可控制机械臂末端的IO输出口的高低电平。

参数说明:

num : 机械臂末端的IO输出口序号,范围从1-2。

val : true为高电平,false为低电平。

参数错误时函数不改变IO输出。

block : 指令是否阻塞型指令,如果为false表示非阻塞指令,指令会立即返回。

返回值:

当配置为阻塞执行,返回值代表当前任务结束时的状态,当配置为非阻塞执行,返回值代表当前任务的id信息,用户可以调用get_noneblock_taskstate(id)函数查询当前任务的执行状态。


get_tool_digital_out ( int num )

函数说明:

该函数可读取机械臂末端的IO输入口的高低电平,返回true为高电平,false为低电平。

参数说明:

num : 机械臂末端的IO输出口序号,范围从1-2。

返回值:

bool,返回true为高电平,false为低电平。


get_tool_digital_in ( int num )

函数说明:

该函数可读取机械臂末端的IO输入口的高低电平,返回true为高电平,false为低电平。

参数说明:

num : 机械臂末端的IO输出口序号,范围从1-2。

返回值:

bool,返回true为高电平,false为低电平。


get_function_digital_in ( int portnum )

函数说明:

该函数可读取控制柜功能输入IO高低电平,返回true为高电平,false为低电平。

参数说明:

ortnum : 控制柜功能IO输入口序号,范围从1-8。

返回值:

ool,返回true为高电平,false为低电平。


get_function_digital_out ( int portnum )

函数说明:

该函数可读取控制柜功能输出IO高低电平,返回true为高电平,false为低电平。

参数说明:

portnum : 控制柜功能IO输出口序号,范围从1-8。

返回值:

bool,返回true为高电平,false为低电平。


get_standard_analog_voltage_in ( int num )

函数说明:

该函数可读取控制柜上的模拟电压输入。

参数说明:

num : 控制柜上的模拟电压通道序号,范围从1-4。

返回值:

对应通道的模拟电压值。


set_standard_analog_voltage_out ( int num, double value, bool block )

函数说明:

该函数可设置控制柜上的模拟电压输出。

参数说明:

num : 控制柜上的模拟电压通道序号,范围从1-4;

value : 设置的模拟电压值,范围[0,10],单位V;

block : 指令是否阻塞型指令,如果为false表示非阻塞指令,指令会立即返回。

返回值:

当配置为阻塞执行,返回值代表当前任务结束时的状态,当配置为非阻塞执行,返回值代表当前 任务的id信息,用户可以调用get_noneblock_taskstate(id)函数查询当前任务的执行状态。


get_tool_analog_voltage_in ( int num )

函数说明:

该函数可读取机械臂末端的模拟电压输入,单位V。

参数说明:

num : 机械臂末端的模拟电压通道序号,范围从1-2。

返回值:

对应通道的模拟电压值。


get_standard_analog_current_in ( int num )

函数说明:

该函数可读取控制柜上的模拟电流输入,单位mA。

参数说明:

num : 控制柜上的模拟电流通道序号,范围从1-4。

返回值:

对应通道的模拟电流值


set_standard_analog_current_out ( int num, double value, bool block )

函数说明:

该函数可设置控制柜上的模拟电流输出。

参数说明:

num : 控制柜上的模拟电流通道序号,范围从1-4;

value : 设置的模拟电流值, 范围[4,20], 单位mA;

block : 指令是否阻塞型指令,如果为false表示非阻塞指令,指令会立即返回。

返回值:

当配置为阻塞执行,返回值代表当前任务结束时的状态,当配置为非阻塞执行,返回值代表当前任务的id信息,用户可以调用get_noneblock_taskstate(id)函数查询当前任务的执行状态。


write_bool_reg ( int num, bool value )

函数说明:

该函数可修改内部bool寄存器的值。

参数说明:

num : 内部寄存器序号, num范围为1-64。

val : true表示真,false表示假。

参数错误时函数不改变内部寄存器数值。

返回值:

返回当前任务结束时的状态 。


write_word_reg ( int num, int value )

函数说明:

该函数可修改内部word寄存器的值。

参数说明:

num : 内部寄存器序号, num范围为1-32。

val : 修改的寄存器的值。

参数错误时函数不改变内部寄存器数值。

返回值:

返回当前任务结束时的状态 。


write_float_reg ( int num, double value )

函数说明:

该函数可修改内部float寄存器的值。

参数说明:

num : 内部寄存器序号, num范围为1-32。

val : 修改的寄存器的值。

参数错误时函数不改变内部寄存器数值。

返回值:

返回当前任务结束时的状态 。


read_bool_reg ( int num )

函数说明:

该函数可返回内部bool寄存器的值。

参数说明:

num : 内部寄存器序号, num范围为1-64

返回值:

true表示真,false表示假。


read_word_reg( int num )

函数说明:

该函数可返回内部word寄存器的值。

参数说明:

num : 内部寄存器序号, num范围为1-32

返回值:

word寄存器的值


read_float_reg ( int num )

函数说明:

该函数可返回内部float寄存器的值。

参数说明:

num : 内部寄存器序号, num范围为1-32

返回值:

float寄存器的值


get_function_reg_in ( int num )

函数说明:

该函数可读取功能输入寄存器的值。

参数说明:

num : 内部寄存器序号,范围从1-16。

返回值:

bool寄存器的值。


get_function_reg_out ( int num )

函数说明:

该函数可读取功能输出寄存器的值。

参数说明:

num : 内部寄存器序号,范围从1-16。

返回值:

bool寄存器的值。


set_wobj_offset (std::vector<double> & wobj, bool active)

函数说明:

基于当前的工件坐标系设置一个偏移量,后续的move类脚本的参考工件坐标系上都将添加这个偏移量。该偏移量以右乘的形式叠加在当前工件坐标系的初始值上。

参数说明:

wobj_offset : {x, y, z, rx, ry, rz}工件坐标系偏移量(单位:m,rad)。

active : true为启用偏移量,false为取消偏移量。

返回值:


set_tool_data ( string name, vector<double> tool_offset, vector<double> payload, vector<double> inertia_tensor )

函数说明:

设置工具末端相对于法兰面坐标系的偏移,设置成功后,后续运动函数中的TCP设置为该TCP或者为空时,使用该TCP参数。

参数说明:

name : 工具坐标系的名字,类型string,最长不超过32个字节长度。

tool_offset : 工具TCP偏移量 [x_off,y_off,z_off,rx,ry,rz],单位(m,rad)。

payload : 末端负载质量,质心,[mass,x_cog,y_cog,z_cog],单位(kg,m)。

inertia_tensor : 末端工具惯量矩阵参数,参数1-6分别对应矩阵xx、xy、xz、yy、yz、zz元素,单位kg*m^2。

返回值:

返回当前任务结束时的状态 。


cal_ikine ( vector<double> _return, vector<double> p, vector<double> q_near, vector<double> tool, vector<double> wobj )

函数说明:

基于目标工具在工件坐标系中的笛卡尔空间位姿,通过机器人逆运动学计算机器人对应的关节角位置,在求解过程中,会选取靠近参考关节角位置或当前机械臂关节位置的解。

参数说明:

_return : 关节位置。

p:需要计算的末端位姿在设置工件坐标系的值,包含当前有效的工具偏移量,位置单位m,姿态单位rad。

q_near :用于计算逆运动学的参考关节位置,为空时使用当前关节值。

tcp : 工具坐标系信息,tcp偏移量{x_off,y_off,z_off,rx,ry,rz},(单位:m,rad),为空使用当前工具。

wobj: 工件坐标系相对于世界坐标系的位移{x, y, z, rx, ry, rz},(单位:m,rad),为空使用当前工件坐标系。

返回值:

无。


cal_fkine ( vector<double> _return, vector<double> joints_position, vector<double> tool, vector<double> wobj )

函数说明:

基于目标机器人关节角位置,通过机器人正运动学计算目标工具在目标工件坐标系中的笛卡尔空间位姿。

参数说明:

_return : 末端姿态。

joints_position : 需要计算正解的关节角,单位rad。

tool : 工具坐标系信息,tcp偏移量[x_off,y_off,z_off,rx,ry,rz],(单位:m,rad),为空使用当前tcp值。

wobj : 工件坐标系相对于基坐标系的位移[x, y, z, rx, ry, rz],(单位:m,rad),为空使用当前wobj。

返回值:

无。


get_tcp_pose ( vector<double> data )

函数说明:

该函数可获取当前状态下机械臂工具末端点在基坐标系下的位姿。

参数说明:

data:末端位置。

返回值:

无。


get_tcp_pose_coord ( vector<double> &data, const string& tool, const string& wobj )

函数说明:

该函数可获取末端法兰在工具坐标系和工件坐标系下的位姿。

参数说明:

data:末端法兰的位姿。

tool : 工具坐标系名称,默认为当前使用的坐标系。

user : 工件坐标系名称,默认为当前使用的坐标系。

返回值:

无。


get_tcp_speed ( vector<double> data )

函数说明:

该函数可获取当前状态下机械臂当前生效工具末端原点的空间速度。

参数说明:

data : 末端速度列表,单位m/s,rad/s。

返回值:

无。


get_tcp_acceleration ( vector<double> data )

函数说明:

该函数可获取当前状态下机械臂工具当前生效工具末端原点的空间加速度。

参数说明:

data:末端加速度列表,单位m/ s2,rad/ s2。

返回值:

无。


get_tcp_force ( vector<double> data )

函数说明:

该函数可获取当前机械臂工具当前生效工具末端原点的空间力信息。该函数当且仅当安装了末端力传感器并正确配置启用时有效。

参数说明:

data:末端力矩信息,[Fx,Fy,Fz,Mx,My,Mz],单位N、N.m。

返回值:

无。


get_tcp_force_tool ( vector<double>& data, const string& tool )

函数说明:

该函数可获取机械臂工具末端在目标工具坐标系下的力矩信息。该函数当且仅当安装了末端力传感器并正确配置启用时有效。

参数说明:

data : 末端力矩信息,[Fx,Fy,Fz,Mx,My,Mz],单位N、N.m。

tool : 工具坐标系名称,默认为当前使用的坐标系。

返回值:

无。


get_tcp_offset ( vector<double> data )

函数说明:

该函数可获取当前状态下机械臂有效的末端工具的偏移量。

参数说明:

data:[x_off,y_off,z_off,rx,ry,rz]返回TCP偏移量信息,单位m,rad。

返回值:

无。


get_tool_load ( vector<double> data )

函数说明:

该函数可获取当前设置工具的负载质量及质心位置。

参数说明:

data:质量单位kg,质心位置单位m,[mass,x_cog,y_cog,z_cog]。

返回值:

无。


get_wobj ( vector<double> data )

函数说明:

该函数可获取当前设置的工件坐标系的值。

参数说明:

data:[x, y, z, rx, ry, rz]工件坐标系相对于基坐标系的位移(单位:m,rad)。

返回值:

无。


get_actual_joints_position ( vector<double> data )

函数说明:

该函数可获取当前状态下机械臂各关节的角度。

参数说明:

data : 1-6轴关节角度列表,单位rad。

返回值:

无。


get_target_joints_position ( vector<double> data )

函数说明:

该函数可获取当前状态下机械臂各关节的规划角度。

参数说明:

data : 1-6轴目标关节角度列表,单位rad。

返回值:

无。


get_actual_joints_speed ( vector<double> data )

函数说明:

该函数可获取当前状态下机械臂各关节角速度。

参数说明:

data : 1-6轴关节速度列表,单位rad/s。

返回值:

无。


get_target_joints_speed ( vector<double> data )

函数说明:

该函数可获取当前状态下机械臂各关节规划角速度。

参数说明:

data : 1-6轴目标关节速度列表,单位rad/s。

返回值:

无。


get_actual_joints_acceleration ( vector<double> data )

函数说明:

该函数可获取当前状态下机械臂各关节角加速度。

参数说明:

data : 1-6轴关节加速度列表,单位rad/ s2。

返回值:

无。


get_target_joints_acceleration ( vector<double> data )

函数说明:

该函数可获取当前状态下机械臂各关节角规划加速度。

参数说明:

data : 1-6轴目标关节加速度列表,单位rad/ s2。

返回值:

无。


get_actual_joints_torque ( vector<double> data )

函数说明:

该函数可获取当前状态下机械臂各关节力矩。

参数说明:

data : 1-6轴关节力矩列表,单位N.m。

返回值:

无。


get_target_joints_torque ( vector<double> data )

函数说明:

该函数可获取当前状态下机械臂各关节目标力矩。

参数说明:

data : 1-6轴关节加速度列表,单位rad/ s2。

返回值:

无。


get_flange_pose ( vector<double> pose )

函数说明:

该函数可获取当前状态下机械臂末端法兰在基坐标系下的位姿。

参数说明:

pose:末端法兰位置pose。

返回值:

无。


get_flange_speed ( vector<double> vel )

函数说明:

该函数可获取当前状态下机械臂末端法兰在基坐标系下的速度。

参数说明:

vel:末端法兰速度列表,单位m/s,rad/s。

返回值:

无。


get_flange_acceleration ( vector<double> acc )

函数说明:

该函数可获取当前状态下机械臂末端法兰在基坐标系下的加速度。

参数说明:

acc : 末端法兰加速度列表,单位m/ s2,rad/ s2。

返回值:

无。


get_robot_state ( vector<int8_t> data )

函数说明:

该函数可获取当前机器人状态。

参数说明:

data : 机器人状态信息列表,data[0]表示机器人状态,data [1]表示程序状态,data [2]表示安全控制器状态,data [3]表示操作模式。(各状态列表详见第1.2章节)

返回值:

无。


simulation ( bool sim, bool block )

函数说明:

切换机器人到仿真或者真机模式。在使用该函数前,需要保证机器人完全处于静止状态,否则会引起机器人异常运动并停机报警。

参数说明:

sim : true:仿真,false:真机

block : 指令是否阻塞型指令,如果为false表示非阻塞指令,指令会立即返回。

返回值:

当配置为阻塞执行,返回值代表当前任务结束时的状态,当配置为非阻塞执行,返回值代表当前任务的id信息,用户可以调用get_noneblock_taskstate(id)函数查询当前任务的执行状态。


speed ( double val )

函数说明:

设置机器人全局速度百分比。

参数说明:

val : 设置机器人全局速度,范围[1,100]。

返回值:

返回当前任务结束时的状态 。


set_load_data ( vector<double> load )

函数说明:

设置抓取负载。可以在程序运行过程中设置机器人当前的负载(质量、质心)。

参数说明:

load : 末端工具抓取负载质量,质心,{mass,x_cog,y_cog,z_cog},相对于工具坐标系,质量范围[0, 35],单位(kg,m)。

返回值:


stop_record_track ()

函数说明:

该函数停止轨迹记录。

参数说明:

无。

返回值:


start_record_track ( string name, number mode, string tool, string wobj )

函数说明:

该函数开启轨迹记录,当超过允许记录的轨迹长度(针对基于位置记录)或允许记录的时长时(针对基于时间记录),会自动停止文件记录,并且暂停当前运行的程序。文件会记录机器人的各关节弧度值和选定工具、工件坐标系下的笛卡尔空间位姿。

参数说明:

name : 轨迹名称。

mode : 轨迹类型,mode=0基于位置记录(与上一记录点所有关节偏移总量到达5°时记录新点);mode=1基于时间记录(与上一记录点间隔250ms记录新点)

tool : 工具坐标系名称。

wobj : 工件坐标系名称。

返回值:

当前任务的id。


collision_detect ( int level )

函数说明:

设置碰撞检测等级。

参数说明:

level : 0:关闭碰撞检测,1-5:对应设置碰撞检测等级1到等级5。

返回值:

任务结束时状态。


collision_detection_reset ()

函数说明:

重置碰撞检测警告。

参数说明:

无。

返回值:


set_teach_pendant ( bool enable )

函数说明:

启用或禁用示教器的物理按键。

参数说明:

enable : true启动示教器物理按键,false禁用示教器物理按键。

返回值:

任务结束时状态。


set_teach_speed ( int v )

函数说明:

设置示教速度的百分比。

参数说明:

v : 示教速度的百分比,范围[1,100]。

返回值:

任务结束时状态。


get_teach_speed ()

函数说明:

获取示教速度的百分比。

参数说明:

无。

返回值:

示教速度的百分比。


get_global_speed ()

函数说明:

获取全局速度的百分比。

参数说明:

无。

返回值:

全局速度的百分比。


reach_check (ReachabilityParam &_return, std::vector<double> &base, std::vector<double> &wobj, std::vector<double> &tool, std::vector<double> &ref_pos, std::vector<std::vector<double> > &check_points)

函数说明:

计算目标机器人末端工具在参考工件坐标系在机器人以特定安装方向的可达性。

参数说明:

_return: 可达性检查结果,返回所有指令发送的目标位姿所对应的可达性检测结果。

base:机器人安装参考坐标系,姿态描述为Rz*Ry*Rx,参考全局世界坐标系,单位m/rad。

wobj: 参考工件坐标系,姿态描述为Rz*Ry*Rx,参考全局世界坐标系,单位m/rad。

tool: 机器人末端工具坐标系,姿态描述为Rz*Ry*Rx,参考机器人法兰坐标系,单位m/rad。

ref_pos: 待检查的机器人末端工具在工件坐标系下的目标笛卡尔空间位姿所使用的参考选解关节位置,单位rad。

check_points: 待检查的机器人末端工具在工件坐标系下的目标笛卡尔空间位姿,单位m/rad。

返回值:

任务结束时状态。


switch_mode ( int32_t mode )

函数说明:

手自动模式切换,当且仅当安全设置中未启用通过外部IO切换模式时有效,否则在调用接口时会报错。

参数说明:

mode : 0: 手动模式, 1: 自动模式。

返回值:

阻塞执行,返回值代表当前任务结束时的状态。


struct RobotStatusList{

std::vector<double> jointExpectPosition; std::vector<double> jointExpectVelocity; std::vector<double> jointExpectAccelera; std::vector<double> jointActualPosition; std::vector<double> jointActualVelocity; std::vector<double> jointActualAccelera; std::vector<double> jointActualCurrent; std::vector<double> jointTemperature; std::vector<double> driverTemperature; std::vector<double> cartExpectPosition; std::vector<double> cartExpectVelocity; std::vector<double> cartExpectAccelera; std::vector<double> cartActualPosition; std::vector<double> cartActualVelocity; std::vector<double> cartActualAccelera; std::vector<bool> slaveReady; bool collision; int collisionAxis; bool emcStopSignal; int robotState; int robotError;

}

参数说明:

jointExpectPosition: 关节位置控制指令,单位rad;

jointExpectVelocity: 关节速度控制指令,单位rad/s;

jointExpectAccelera:关节加速度控制指令,单位rad/s2;

jointActualPosition: 关节实际位置,单位rad;

jointActualVelocity:关节实际速度,单位rad/s;

jointActualAccelera:关节实际加速度,单位rad/s2;

jointActualCurrent:关节实际电流,单位为参考各关节电机额定电流的千分比比例;

jointTemperature:关节实际温度,单位°;

driverTemperature:关节驱动板温度,单位°;

cartExpectPosition:机器人末端工具在世界坐标系下的位姿指令,单位m/rad;

cartExpectVelocity:机器人末端工具在世界坐标系下的位姿速度指令,单位m/s / rad/s;

cartExpectAccelera: 机器人末端工具在世界坐标系下的位姿加速度指令,单位m/s2 rad/s2;

cartActualPosition: 机器人末端工具在世界坐标系下的实际位姿,单位m/rad;

cartActualVelocity:机器人末端工具在世界坐标系下的实际位姿速度,单位m/s /rad/s;

cartActualAccelera: 机器人末端工具在世界坐标系下的实际位姿加速度,单位m/s2 /rad/s2;

slaveReady: 机器人关节使能状态,当且仅当关节处于使能模式下为true,否则为false;

collision: 机器人碰撞检测触发状态,当且仅当机器人触发碰撞且未被复位时为true,否则为false;

collisionAxis: 触发机器人碰撞检测状态的关节号,当且仅当机器人触发碰撞且未被复位时有效,否则为0;

emcStopSignal:机器人触发急停信号状态,当机器人示教器急停被按下或外部预留急停断开时为true,否则为false;

robotState: 机器人状态机;

robotError: 获取当前机器人错误代码;


getRobotStatus ( RobotStatusList& status )

函数说明:

获取机器人当前的位姿等信息,具体信息定义参考RobotStatusList数据结构。

参数说明:

status : 机器人位姿等信息, 参考RobotStatusList。

返回值:

无。


struct IOStatusList{

std::vector<double> analogCurrentOutputs; std::vector<double> analogVoltageOutputs; std::vector<double> analogCurrentInputs; std::vector<double> analogVoltageInputs; std::vector<bool> digitalInputs; std::vector<bool> digitalOutputs; std::vector<bool> toolIOIn; std::vector<bool> toolIOOut; std::vector<bool> toolButton; std::vector<bool> funRegisterInputs; std::vector<bool> funRegisterOutputs; std::vector<bool> boolRegisterInputs; std::vector<bool> boolRegisterOutputs; std::vector<int16_t> wordRegisterInputs; std::vector<int16_t> wordRegisterOutputs; std::vector<double> floatRegisterInputs; std::vector<double> floatRegisterOutputs;

}

参数说明:

analogCurrentOutputs: 模拟量电流输出,单位mA;

analogVoltageOutputs:模拟量电压输出,单位V;

analogCurrentInputs:模拟量电流输入。单位mA;

analogVoltageInputs:模拟量电压输入,单位V;

digitalInputs:通用IO输入;

digitalOutputs:通用IiO输出;

toolIOIn:末端IO输入;

toolIOOut:末端IO输出;

toolButton:末端T按钮与S按钮状态;

funRegisterInputs:功能输入寄存器;

funRegisterOutputs:功能输出寄存器;

boolRegisterInputs:bool输入寄存器;

boolRegisterOutputs:bool输出寄存器;

wordRegisterInputs:word输入寄存器;

wordRegisterOutputs:word输出寄存器;

floatRegisterInputs:float输入寄存器;

floatRegisterOutputs:float输出寄存器;


getRobotIOStatus ( IOStatusList& status )

函数说明:

获取机器人当前IO和寄存器信息,具体信息定义参考IOStatusList数据结构。

参数说明:

status : 当前IO和寄存器信息, 参考IOStatusList。

返回值:

无。


read_encoder_count ()

函数说明:

读取外接INC的实际count值。

参数说明:

无。

返回值:

外接INC的实际count值。


get_origin_DH ( std::vector<std::vector<double> >& dh )

函数说明:

当前机器人型号原始DH参数。

参数说明:

dh : 原始DH参数, 参数顺序a, alpha, d, theta, 单位m/rad。

返回值:

无。


get_calib_DH ( std::vector<std::vector<double> >& calib_dh )

函数说明:

当前机器人型号标定补偿后DH参数。

参数说明:

calib_dh : 补偿后DH参数, 参数顺序a, alpha, d, theta, 单位m/rad。

返回值:

无。


get_robot_type ( std::vector<std::string>& type )

函数说明:

获取机器人系列号, 型号, ext, SN。

参数说明:

type : 机器人系列号, 型号, ext, SN。

返回值:

无。


get_ext_torque ( std::vector<double>& torque )

函数说明:

获取关节观测外力矩。

参数说明:

torque : 关节观测外力矩。

返回值:

无。


set_system_value_bool ( std::string& name, bool value )

函数说明:

设置bool类型的系统变量。

参数说明:

name : 系统变量名称。如果变量在域里,名称格式为:"域名.变量名"。

value : 系统变量的值。

返回值:

0 : 设置成功,其它 : 设置不成功。


set_system_value_double ( std::string& name, double value )

函数说明:

设置double类型的系统变量。

参数说明:

name : 系统变量名称。如果变量在域里,名称格式为:"域名.变量名"。

value : 系统变量的值。

返回值:

0 : 设置成功,其它 : 设置不成功。


set_system_value_str ( std::string& name, std::string& value )

函数说明:

设置string类型的系统变量。

参数说明:

name : 系统变量名称。如果变量在域里,名称格式为:"域名.变量名"。

value : 系统变量的值。

返回值:

0 : 设置成功,其它 : 设置不成功。


set_system_value_list ( std::string& name, std::vector<double> value )

函数说明:

设置num_list类型的系统变量。

参数说明:

name : 系统变量名称。如果变量在域里,名称格式为:"域名.变量名"。

value : 系统变量的值。

返回值:

0 : 设置成功,其它 : 设置不成功。


get_system_value_bool ( std::string& name )

函数说明:

获取bool类型系统变量的值。

参数说明:

name : 系统变量名称。如果变量在域里,名称格式为:"域名.变量名"。

返回值:

系统变量的值。


get_system_value_double ( std::string& name )

函数说明:

获取double类型系统变量的值。

参数说明:

name : 系统变量名称。如果变量在域里,名称格式为:"域名.变量名"。

返回值:

系统变量的值。


get_system_value_str ( std::string& value, std::string& name )

函数说明:

获取string类型系统变量的值。

参数说明:

value : 系统变量的值。

name : 系统变量名称。如果变量在域里,名称格式为:"域名.变量名"。

返回值:

无。


get_system_value_list ( std::vector<double> value, std::string& name )

函数说明:

获取num_list类型系统变量的值。

参数说明:

value : 系统变量的值。

name : 系统变量名称。如果变量在域里,名称格式为:"域名.变量名"。

返回值:

无。

调试相关#

log_info ( string message )

函数说明:

该函数可插入log日志,记录运行问题。

参数说明:

message : 日志描述。

返回值:

无。


log_error ( string message )

函数说明:

该函数可在运行过程中产生弹窗,并暂停当前所有任务。

参数说明:

message : 弹窗描述。

返回值:

无。


get_last_error (vector<string>:_return)

函数说明:

该函数返回机器人最新的错误列表

参数说明:

_return: 错误列表。

返回值:

无。


get_noneblock_taskstate ( int id )

函数说明:

根据id查询当前的任务状态。

参数说明:

id:任务的id。

返回值:

任务的当前执行状态(任务状态列表详见第1.2章节)。


robotmoving ()

函数说明:

该函数用于判断机器人是否在运动。

参数说明:

无。

返回值:

True:机器人在运动;

False:机器人没有运动。

Modbus#

modbus_read ( string signal_name )

函数说明:

该函数可读取modbus节点的数据,返回值为double类型。

参数说明:

signal_name : modbus节点名。

返回值:

modbus节点返回值


modbus_write ( string signal_name, int value )

函数说明:

该函数可对modbus节点进行写操作。

参数说明:

signal_name : modbus节点名。

value : 要写入的数值,寄存器节点取值为0-65535内的整数,线圈节点取值为0或1。

返回值:

返回当前任务结束时的状态 。


modbus_set_frequency (string signal_name, int frequence )

函数说明:

该函数可修改modbus节点的刷新频率,默认频率为10Hz。

参数说明:

signal_name : modbus节点名。

frequence : 频率值,取值范围:1~100Hz。

返回值:

示例:

modbus_set_frequency ("mbus1", 20)


modbus_write_multiple_regs ( int slave_num, string name, int len, vector<int8_t> word_list )

函数说明:

该函数可对多寄存器进行写操作。

参数说明:

slave_num : modbus节点号。

name : modbus节点名。

len : 需要写入数据的寄存器长度。

word_list : 需要写入的数据。

返回值:

示例:

modbus_write_multiple_regs (1, "mbus1", 5, {1,2,3,4,5})


modbus_write_multiple_coils ( int slave_num, string name, int len, vector<int16_t> byte_list )

函数说明:

该函数可对多线圈进行写操作。

参数说明:

slave_num : modbus节点号。

name : modbus节点名。

len : 需要写入数据的线圈长度。

byte_list : 需要写入的数据。

返回值:

示例:

modbus_write_multiple_coils (2, "mbus1", 5, {1,1,1,1,1})

力控函数#

fc_start ()

函数说明:

该指令控制机械臂开启机器人末端力控。开启末端力控后所有运动函数除正常运动外,会额外基于已配置的末端力控参数叠加末端力控运动实现力位混合运动。

参数说明:

无。

返回值:

返回值代表当前任务的id信息。

警告

在使用fc_start函数启用末端力控功能前,需要严格确保机器人末端已正常安装力传感器,并在正确完成其通讯配置及安装位置设置启用。错误的通讯配置或未正确启用传感器会导致使用fc_start函数后机器人报错。错误的传感器安装位置参数会导致异常的末端力控运动,从而造成安全风险。


fc_stop ()

函数说明:

该指令控制机械臂退出末端力控,结束力位混合控制。

参数说明:

无。

返回值:

返回值代表当前任务的id信息。

警告

当前在调用fc_stop函数退出末端力控前,需要严格保证所有机器人绝对位置运动已结束,即所有来自脚本以及外部接口所触发的机器人运动已结束。机器人运动过程中能够使用fc_stop函数结束末端力控,会引起机器人产生异常运动并报错。


fc_config ( vector<bool> direction, vector<double> ref_ft, vector<double> damp, vector<double> max_vel, vector<double> number_list, string tool, string wobj, int type )

函数说明:

该指令修改并配置机器人末端力控参数。

参数说明:

direction::6个笛卡尔空间方向末端力控开关,开为true,关为false。开启力控的笛卡尔空间方向,除了机器人末端原有绝对运动外,同时还会根据末端传感器感知到的外部力,基于其他力控参数做出对应力控运动调整。未开启力控的笛卡尔空间方向则保持原始机器人末端绝对运动。

ref_ft:6个笛卡尔空间方向末端力控目标维持力,范围[-1000, 1000],X/Y/Z方向单位N,RX/RY/RZ方向单位Nm,方向符号参考末端力控参考坐标系方向。该目标维持力会使机器人末端力控产生额外运动,直到机器人末端传感器感知到与外界接触力且达到目标维持力的大小。

damp:6个笛卡尔空间方向末端力控阻尼,X/Y/Z方向单位(N/(m/s),RX/RY/RZ方向单位(Nm/(rad/s))。末端力控所产生的叠加运动最大速度,会根据传感器在笛卡尔空间启用力控方向上感知到的外力与目标维持力之间的偏差值,除以对应方向的阻尼值计算得到。

max_vel:6个笛卡尔空间方向末端力控最大调整速度,范围[-5, 5],X/Y/Z方向单位(m/s),RX/RY/RZ方向单位(rad/s)。若基于末端传感器感知到的外力与目标维持力的偏差除以阻尼后计算得到的速度超过力控最大调整速度,则会以最大调整速度进行末端力控运动。该参数可以使末端力控运动在使用较小阻尼提升响应的基础上降低调整最大速度,从而保证末端力控运动的安全及稳定性。

number_list:6个笛卡尔空间方向末端接触力死区,范围[-1000, 1000],X/Y/Z方向单位N,RX/RY/RZ方向单位Nm。若末端力传感器感知到外力与目标维持力的偏差绝对值小于接触力死区时,则会停止对于力控运动,直到由于外力变化再次使偏差值大于死区。

tool : 设置使用的末端力控工具的名称,默认为当前使用的工具。所有末端力控运动所产生的叠加运动,都会以tool坐标系的原点产生。若同时末端力控参考坐标系配置为工具坐标系,则力控运动笛卡尔方向的定义参考tool坐标系的笛卡尔方向。

wobj : 设置使用的末端力控工件坐标系的名称,默认为当前使用的工件坐标系。若末端力控参考坐标系配置为工件坐标系,则力控运动笛卡尔方向的定义参考wobj坐标系的笛卡尔方向。

type:末端力控参考坐标系选择标志位,0为参考工具坐标系,1为参考工件坐标系。

返回值:

返回值代表当前任务的id信息。


fc_move ()

函数说明:

该指令控制机械臂没有绝对位置运动的基础上产生仅基于末端力控产生的补偿运动。

参数说明:

无。

返回值:

返回值代表任务结束时状态。


fc_guard_act ( vector<bool> direction, vector<double> ref_ft, string tool, string wobj, int type,int force_property )

函数说明:

该指令控制机械臂在末端力控过程中进行力安全力监控。当监控力拆过所设定范围时,机器人会触发急停并报警。

参数说明:

direction::6个笛卡尔空间方向末端力安全监控开关,开为true,关为false。

ref_ft:6个笛卡尔空间方向末端力安全监控最大力,X/Y/Z方向单位N,RX/RY/RZ方向单位Nm。该值未监控最大力范围绝对值,不区分所在自由度上的±方向。

tool : 设置使用的末端力安全监控工具的名称,默认为当前使用的工具。若末端力控参考坐标系配置为工具坐标系,则安全力监控的笛卡尔方向的定义参考tool坐标系的笛卡尔方向。

wobj : 设置使用的末端力安全监控工件坐标系的名称,默认为当前使用的工件坐标系。若末端力控参考坐标系配置为工件坐标系,则安全力监控的笛卡尔方向的定义参考wobj坐标系的笛卡尔方向。

type:末端力安全监控参考坐标系选择标志位,0为参考工具坐标系,1位参考工件坐标系。

force_property : 监控力属性,0为末端负载力及外力,1为末端外力(不含负载),可缺省,默认为0。

返回值:

返回值代表当前任务的id信息。


fc_guard_deact ()

函数说明:

该指令控制机械臂在末端力控过程中禁用力安全力监控。

参数说明:

无。

返回值:

返回值代表当前任务的id信息。


fc_force_set_value ( vector<bool> direction, vector<double> ref_ft )

函数说明:

该指令控制机械臂末端力传感器读数设置为指定值。

参数说明:

direction:6个末端力传感器输出力设置标志位,需要设置为true,不需要设置为false。需要注意的是,该方向定义未传感器自身力坐标系方向。

ref_ft:6个末端力传感器输出力设置目标值,X/Y/Z方向单位N,RX/RY/RZ方向单位Nm。

返回值:

返回值代表当前任务的id信息。


fc_wait_pos (vector<double> middle_value, vector<double> range, bool absolute, int duration, int timeout )

函数说明:

该指令控制机械臂在执行fc_start()函数后的末端力控过程中满足指定位置判断条件时自动停止当前运动函数并跳过后续运动函数,直到fc_stop()函数被执行停止末端力控或再次调用fc_wait_logic函数复位力控条件判断。

参数说明:

middle_value:位置判断条件绝对值,X/Y/Z方向单位m,RX/RY/RZ方向单位(rad)。

range:位置判断条件范围大小,X/Y/Z方向单位m,RX/RY/RZ方向单位(rad)。由于位置信息存在波动与偏差,适当设定范围大小可以有效保证逻辑触发成功率。

absolute:绝对/增量条件判断标志位,true为绝对位置判断,false为增量位置判断。增量判断会以最后一次调用fc_wait_logic函数复位力控条件判断时机器人所在位置为参考点。

duration:条件满足触发保持时间,单位ms。

timeout:条件满足触发超时时间,单位ms。起始计算时间未最后一次调用fc_wait_logic函数复位力控条件判断时刻。

返回值:

返回值代表当前任务的id信息。


fc_wait_vel ( vector<double> middle_value, vector<double> range, bool absolute, int duration, int timeout )

函数说明:

该指令控制机械臂在执行fc_start()函数后的末端力控过程中满足指定速度判断条件时自动停止当前运动函数并跳过后续运动函数,直到fc_stop()函数被执行停止末端力控或再次调用fc_wait_logic函数复位力控条件判断。

参数说明:

middle_value:速度判断条件绝对值,X/Y/Z方向速度范围[-5, 5],单位(m/s),RX/RY/RZ方向速度范围[-2*PI, 2*PI],单位(rad/s)。

range:速度判断条件偏移范围大小,X/Y/Z方向单位(m/s),RX/RY/RZ方向单位(rad/s)。由于速度信息存在波动与偏差,适当设定范围大小可以有效保证逻辑触发成功率。

absolute:绝对/增量条件判断标志位,true为绝对速度判断,false为增量速度判断。增量判断会以最后一次调用fc_wait_logic函数复位力控条件判断时机器人末端速度为参考基准。

duration:条件满足触发保持时间,单位ms。

timeout:条件满足触发超时时间,单位ms。起始计算时间未最后一次调用fc_wait_logic函数复位力控条件判断时刻。

返回值:

返回值代表当前任务的id信息。


fc_wait_ft ( vector<double> middle_value, vector<double> range, bool absolute, int duration, int timeout )

函数说明:

该指令控制机械臂在执行fc_start()函数后的末端力控过程中满足指定力判断条件时自动停止当前运动函数并跳过后续运动函数,直到fc_stop()函数被执行停止末端力控或再次调用fc_wait_logic函数复位力控条件判断。

参数说明:

middle_value:力判断条件绝对值,范围[-1000, 1000],X/Y/Z方向单位N,RX/RY/RZ方向单位Nm。

range:力判断条件偏移范围大小,X/Y/Z方向单位N,RX/RY/RZ方向单位Nm。。由于力信息存在波动与偏差,适当设定范围大小可以有效保证逻辑触发成功率。

absolute:绝对/增量条件判断标志位,true为绝对力判断,false为增量力判断。增量判断会以最后一次调用fc_wait_logic函数复位力控条件判断时机器人末端感知力为参考基准。

duration:条件满足触发保持时间,单位ms。

timeout:条件满足触发超时时间,单位ms。起始计算时间未最后一次调用fc_wait_logic函数复位力控条件判断时刻。

返回值:

返回值代表当前任务的id信息。


fc_wait_logic ( vector<int> logic )

函数说明:

该指令控制机械臂在执行fc_start()函数后的末端力控过程中位置条件判断、速度条件判断与力条件判断间的逻辑关系。不配置时默认三个条件判断都禁用。当已通过

参数说明:

logic:三维整形列表,0代表不启用,1代表与逻辑,2代表或逻辑。例如开启位置条件判断,禁用速度条件判断,开启力条件判断,并且位置与力的关系为或,则输入[1,0,2]。

返回值:

返回值代表当前任务的id信息。


fc_get_ft ( vector<double> data )

函数说明:

该指令用以获取当前机器人末端传感器的原始反馈读数。该读数经过去皮操作,当机器人上下使能或调用fc_force_set_value时,会根据机器人系统中设置的负载参数(默认负载安装在传感器力检测端)以及目标参考传感器输出度数的大小进行去皮。

参数说明:

data:6自由度末端力读数,X/Y/Z方向单位(N,RX/RY/RZ方向单位(Nm)。

返回值:

无。


fc_mode_is_active ()

函数说明:

该指令用以获取当前机器人末端力控功能启用状态。需要注意的是,即使通过该函数获取到当前机器人末端处于力控状态下,也需要机器人当前存在正在执行的绝对运动函数,例如movel、movec、fc_move等,才会产生对应的末端力控运动。

参数说明:

无。

返回值:

机器人末端力控启用返回true,未启用返回false。

运动优化函数#

enable_speed_optimization ()

函数说明:

该指令控制机械臂开启速度优化功能。开启该功能后,机器人会参考当前模式下的安全限制参数,以不会违反安全限制参数为基础实时优化机器人速度控制指令,以达到最优速度节拍。速度优化功能仅在机器人自动模式下有效。当机器人开启速度优化功能并且处于自动模式下,原始机器人程序中所设定的关节最大速度与末端最大速度参数不再生效。

参数说明:

无。

返回值:

阻塞执行,返回值代表当前任务结束时的状态。


disable_speed_optimization ()

函数说明:

该指令用以控制机械臂退出速度优化。

参数说明:

无。

返回值:

阻塞执行,返回值代表当前任务结束时的状态。


enable_acc_optimization ()

函数说明:

该指令控制机械臂开启加速度优化功能。开启该功能后,系统会根据机器人动力学模型、机械功率模型及电功率模型计算机器人起停最优加速度,在满足速度约束前提下,机械臂以尽可能高的加速度进行规划。当速度优化同时打开后,系统默认同时开启加速度优化功能,该函数不在生效。

参数说明:

无。

返回值:

阻塞执行,返回值代表当前任务结束时的状态。


disable_acc_optimization ()

函数说明:

该指令用以控制机械臂退出加速度优化。

参数说明:

无。

返回值:

阻塞执行,返回值代表当前任务结束时的状态。


enable_singularity_control()

函数说明:

该指令用以开启机械臂奇异点规避功能。开启奇异规避功能后,若机器人后续运动过程为笛卡尔空间运动且运动过程中会穿过机器人预先定义好的奇异空间,则会自动切换到关节空间过度运动,从而避免机器人经过奇异空间过程中引发的失速问题。在奇异规避过程中,机器人末端仅能尽可能保证末端与原始路径的一致性,实际会产生一定程度的精度损失。

参数说明:

无。

返回值:

任务结束时状态。


disable_singularity_control()

函数说明:

该指令用以关闭机械臂奇异点规避功能。关闭该功能时,若机器人在笛卡尔空间运动过程中经过奇异区域,则会有失速风险,且机器人在接近奇异区域后会触发停机报警。

参数说明:

无。

返回值:

任务结束时状态。


!注意

由于奇异点规避功能与振动抑制功能都是通过对指令轨迹进行优化处理而实现,因此这两个功能无法同时使用。当前默认振动抑制的优先级高于奇异点规避。因此,使用奇异点规避功能需保证振动抑制功能关闭。


enable_vibration_control()

函数说明:

该指令用以开启对机械臂起停振动控制功能进行优化。该功能在机器人系统启动时默认开启,以最大程度的保证机器人运动起停稳定性。需要注意的是,该功能开启后,机器人每一次独立运动都会有短暂的节拍降低(约200-400ms)。

参数说明:

无。

返回值:

任务结束时状态。


disable_vibration_control()

函数说明:

该指令用以退出对机械臂末端振动的优化。若在机器人实际调试过程中受限于连续独立短轨迹运行节拍,且对机器人末端起停稳定性要求较低,可以通过使用该函数临时禁用振动控制功能。需要注意的是,调用该函数后,机器人在程序运行结束后并不会自动复位并开启振动控制功能,因此若需要依旧保持手动试教过程中机器人运动起停稳定性,应再次调用enable_vibration_control函数开启振动控制功能。

参数说明:

无。

返回值:

任务结束时状态。

轨迹池函数#

机器人控制器中,内置一组最大数量为1000个points的轨迹池,轨迹池遵循先入先出原则,可通过以下函数对轨迹池进行操作。


trackEnqueue ( vector< vector<double> > points, bool block )

函数说明:

该函数将一组points点位信息输入到机器人控制器中的轨迹池。轨迹池最大可容纳点位信息个数为1000。在使用轨迹池跟随过程中,轨迹池中的点位会阶段性被提取并执行。因此为了保证使用轨迹池跟随过程中,需要周期性确认当前轨迹池中现有点位数量,并进行及时补充,从而避免产生中间产生不连续的(速度降速到0)的跟随运动。

参数说明:

points : 一组points点位信息。每个point以6个double类型数据构成。point的定义最终由所调用的轨迹池跟随运动类型决定。

block : 指令是否阻塞型指令,如果为false表示非阻塞指令,指令会立即返回。

返回值:

当配置为阻塞执行,返回值代表当前任务结束时的状态,当配置为非阻塞执行,返回值代表当前任务的id信息,用户可以调用get_noneblock_taskstate(id)函数查询当前任务的执行状态。如果返回值为-1,表示轨迹池已满,无法加入新点位。


trackClearQueue ()

函数说明:

该函数用于将机器人控制器中的轨迹池清空。

参数说明:

无。

返回值:

阻塞执行,返回值代表当前任务结束时的状态。


getQueueSize ()

函数说明:

该函数用于获取机器人控制器中的当前轨迹池未被提取的点位数量大小。

参数说明:

无。

返回值:

阻塞执行,返回值为当前轨迹池大小。


trackJointMotion ( double speed, double acc, bool block )

函数说明:

该函数执行时,关节轨迹池跟随功能将会周期性的从轨迹池队列中现有点位中提取点位信息,并将其定义为关节位置信息处理。机器人的各关节将顺序到达轨迹池中的点位值直到轨迹池中无新的点位。执行过程中,主导关节(关节位置变化最大的关节)将以speed与acc规划运动,其他关节按比例缩放。

注:如果已经开始执行停止规划,将不再重新获取轨迹池中的数据,直到完成停止。停止后如果轨迹池中有新的点位,将重新执行跟随。为保证运动连续性,建议至少保证轨迹池中有10个数据。

参数说明:

speed : 最大关节速度,范围[0.01*PI/180, 1.25*PI],单位(rad/s)。

acc : 最大关节加速度,范围[0.01*PI/180, 12.5*PI],单位(rad/s2)。

block : 指令是否阻塞型指令,如果为false表示非阻塞指令,指令会立即返回。

返回值:

当配置为阻塞执行,返回值代表当前任务结束时的状态;

当配置为非阻塞执行,返回值代表当前任务的id信息,用户可以调用get_noneblock_taskstate(id)函数查询当前任务的执行状态。


trackCartMotion ( double speed, double acc, bool block, string wobj, string tool )

函数说明:

该函数执行时,笛卡尔轨迹池跟随功能将会周期性的从轨迹池队列中现有点位中提取点位信息,并将其定义为机器人末端工具在参考工件坐标系中位姿位置信息处理。机器人的工具末端tool将顺序到达轨迹池中的点位值直到轨迹池中无新的点位。执行过程中,工具末端tool将以speed与acc在工件坐标系wobj下规划运动。

注:如果已经开始执行停止规划,将不再重新获取轨迹池中的数据,直到完成停止。停止后如果轨迹池中有新的点位,将重新执行跟随。为保证运动连续性,建议至少保证轨迹池中有10个数据。

参数说明:

speed : 最大末端线速度,范围[0.00001, 5],单位(m/s)。

acc : 最大末端线加速度,范围[0.00001, ∞],单位(m/s2)。

block : 指令是否阻塞型指令,如果为false表示非阻塞指令,指令会立即返回。

wobj : 设置使用的工件坐标系的名称,为空时默认为当前使用的工件坐标系。

tool : 设置使用的工具的名称,为空时默认为当前使用的工具。

返回值:

当配置为阻塞执行,返回值代表当前任务结束时的状态;

当配置为非阻塞执行,返回值代表当前任务的id信息,用户可以调用get_noneblock_taskstate(id)函数查询当前任务的执行状态。


trackEnqueueOp ( vector<PointOP> & points, bool block )

函数说明:

该函数将一组PointOP点位信息输入到机器人控制器中的轨迹池。该韩函数与trackEnqueue函数功能使用方法保持一致,区别在于在点位的基础上额外添加了每个点位的Op信息。该函数与trackEnqueue函数共享同一轨迹池,因此无论使用trackEnqueue函数还是trackEnqueueOp函数向轨迹池中添加点位信息时,需要同步周期性通过getQueueSize获取当前队列中未被执行点位数量信息,以确保轨迹池跟随运动的连续性以及不超过队列池大小。

参数说明:

points : 一组PointOP点位信息和对应的OP操作。每个元素以6个double类型的点位和该点的OP操作组成。point的定义最终由所调用的轨迹池跟随运动类型决定。

block : 指令是否阻塞型指令,如果为false表示非阻塞指令,指令会立即返回。

返回值:

当配置为阻塞执行,返回值代表当前任务结束时的状态,当配置为非阻塞执行,返回值代表当前任务的id信息,用户可以调用get_noneblock_taskstate(id)函数查询当前任务的执行状态。如果返回值为-1,表示轨迹池已满,无法加入新点位。

复合运动函数#

combine_motion_config ( int type, int ref_plane, int fq, double amp, double el_offset, double az_offset, double up_height, const vector<int>& time, bool path_dwell = false, const vector<Op>& op_list = {} )

函数说明:

该指令控制机器人在原始运动轨迹上额外叠加一个复合运动,被叠加的符合运动为一周期性运动轨迹,且可以被几何描述。

参数说明:

type : 复合运动轨迹几何类型。1:平面三角形轨迹,2:平面正弦轨迹,3:平面圆形轨迹,4:平面梯 形轨迹,5:平面8字形轨迹

ref_plane : 参考平面,0:工具XOY平面,1:工具XOZ平面,2:工具YOZ平面,3:工件XOY平面,4:工件XOZ平面,5:工件YOZ平面。

fq : 频率,单位(Hz)。

amp : 振幅,单位(m)。

el_offset : 仰角偏移,单位(m)。(参数预留)

az_offset : 方向角偏移,单位(m)。(参数预留)

up_height : 中心隆起高度,单位(m)。(参数预留)

time : 左右停留时间。

path_dwell : 主路径同步停留, 默认为false, 可缺省。

op_list : 二维的OP参数列表, 默认为空, 可缺省。

返回值:

任务结束时状态。


enable_combined_motion ()

函数说明:

该指令会以最近一次使用combine_motion_config脚本设置的复合运动参数开启复合运动。

参数说明:

无。

返回值:

任务结束时状态。


disable_combined_motion ()

函数说明:

该指令用以结束复合运动。

参数说明:

无。

返回值:

任务结束时状态。

备注

当且仅当机器人停止时,可以对复合运动是否启用进行开关,无法在轨迹运动过程中动态开启或关闭。

外部轴控制函数说明#

enable_eaxis_scheme ( string scheme_name )

函数说明:

该指令用于启动外部轴方案。

参数说明:

scheme_name : 外部轴方案名称。

返回值:

任务结束时的状态。


disable_eaxis_scheme ( string scheme_name )

函数说明:

该指令用于结束外部轴方案。

参数说明:

scheme_name : 外部轴方案名称。

返回值:

任务结束时的状态。


move_eaxis ( const string& scheme_name, const vector<double>& epose, double vel, bool block, const Op op = op_, bool def_acc = true )

函数说明:

该指令用于控制外部轴移动。

参数说明:

scheme_name : 目标外部轴方案名称。

epose : 目标外部轴方案所对应自由度位置(三维), 记录位置自由度及单位根据外部轴方案所设置自由度及外部轴方案类型改变, 单位(rad或m)。

vel : 外部轴最大规划速度, 根据对应外部轴方案类型改变, 单位(rad/s或m/s)。

block : 指令是否阻塞型指令,如果为false表示非阻塞指令,指令会立即返回。

op : 详见上方Op特殊类型说明(距离触发无效),可缺省参数。

def_acc : 是否使用自定义加速度,默认为true,可缺省参数。

返回值:

当配置为阻塞执行,返回值代表当前任务结束时的状态;

当配置为非阻塞执行,返回值代表当前任务的id信息,用户可以调用get_noneblock_taskstate(id)函数查询当前任务的执行状态。


move_jog_eaxis ( vector<double> const string& scheme_name, int direction, double vel, bool block )

函数说明:

该指令用于控制外部轴和机器人执行点动。

参数说明:

scheme_name : 目标外部轴方案名称。

direction : 运动方向,-1:负方向,1:正方向。

vel : 速度百分比。

block : 指令是否阻塞型指令,如果为false表示非阻塞指令,指令会立即返回。

返回值:

当配置为阻塞执行,返回值代表当前任务结束时的状态;

当配置为非阻塞执行,返回值代表当前任务的id信息,用户可以调用get_noneblock_taskstate(id)函数查询当前任务的执行状态。


movej2_eaxis ( vector<double> joints_list, double v, double a, double rad, const string& scheme_name, vector<double> epos, double eaxis_v, bool block, Op op = op_, bool def_acc = true )

函数说明:

该指令用于控制外部轴和机器人执行关节运动。

参数说明:

joint_list : 目标关节位置,单位(rad)。

v : 关节角速度,单位(rad/s)。

a : 关节加速度,单位(rad/s^2)。

rad : 融合半径,单位(m)。

scheme_name : 目标外部轴方案名称。

epos : 目标外部轴方案所对应自由度位置(三维), 记录位置自由度及单位根据外部轴方案所设置自由度及外部轴方案类型改变, 单位(rad或m)。

eaxis_v : 外部轴最大规划速度, 根据对应外部轴方案类型改变, 单位(rad/s或m/s)。

block : 指令是否阻塞型指令,如果为false表示非阻塞指令,指令会立即返回。

op : 详见上方Op特殊类型说明(距离触发无效), 可缺省参数。

def_acc : 是否使用自定义加速度,默认为true,可缺省参数。

返回值:

当配置为阻塞执行,返回值代表当前任务结束时的状态;

当配置为非阻塞执行,返回值代表当前任务的id信息,用户可以调用get_noneblock_taskstate(id)函数查询当前任务的执行状态。


movej2_pose_eaxis ( vector<double> p, double v, double a, double rad, vector<double> q_near, string tool, string wobj, const string& scheme_name, vector<double> epos, double eaxis_v, bool block, Op op = op_, bool def_acc = true )

函数说明:

该指令用于控制外部轴和机器人从当前状态,按照关节运动的方式移动到末端目标位置。

参数说明:

p : 对应末端的位姿,位置单位(m),姿态以Rx、Ry、Rz表示,范围[-2*PI, 2*PI],单位(rad)。

v : 关节角速度,单位(rad/s)。

a : 关节加速度,单位(rad/s^2)。

rad : 融合半径,单位(m)。

q_near : 目标点附近位置对应的关节角度,用于确定逆运动学选解,为空时使用当前位置。

tool : 设置使用的工具的名称, 为空时默认为当前使用的工具。

wobj : 设置使用的工件坐标系的名称,为空时默认为当前使用的工件坐标系。

scheme_name : 目标外部轴方案名称。

epos : 目标外部轴方案所对应自由度位置(三维), 记录位置自由度及单位根据外部轴方案所设置自由度及外部轴方案类型改变, 单位(rad或m)。

eaxis_v : 外部轴最大规划速度, 根据对应外部轴方案类型改变, 单位(rad/s或m/s)。

block : 指令是否阻塞型指令,如果为false表示非阻塞指令,指令会立即返回。

op : 详见上方Op特殊类型说明(距离触发无效),可缺省参数。

def_acc : 是否使用自定义加速度,默认为true,可缺省参数。

返回值:

当配置为阻塞执行,返回值代表当前任务结束时的状态;

当配置为非阻塞执行,返回值代表当前任务的id信息,用户可以调用get_noneblock_taskstate(id)函数查询当前任务的执行状态。


movel_eaxis ( vector<double> p, double v, double a, double rad, vector<double> q_near, string tool, string wobj, const string& scheme_name, vector<double> epos, double eaxis_v, bool block, Op op = op_, bool def_acc = true )

函数说明:

该指令用于控制外部轴和机器人从当前状态按照直线路径移动到目标状态。

参数说明:

p : 对应末端的位姿,位置单位(m),姿态以Rx、Ry、Rz表示,范围[-2*PI, 2*PI],单位(rad)。

v : 末端速度,范围(0, 5],单位(m/s)。

a : 末端加速度,范围(0, ∞],单位(m/s^2)。

rad : 关节融合半径,单位m,默认值为0,表示无融合。当数值大于0时表示与下一条运动融合。

q_near : 目标点附近位置对应的关节角度,用于确定逆运动学选解,为空时使用当前位置。

tool : 设置使用的工具的名称, 为空时默认为当前使用的工具。

wobj : 设置使用的工件坐标系的名称,为空时默认为当前使用的工件坐标系。

scheme_name : 目标外部轴方案名称。

epos : 目标外部轴方案所对应自由度位置(三维), 记录位置自由度及单位根据外部轴方案所设置自由度及外部轴方案类型改变, 单位(rad或m)。

eaxis_v : 外部轴最大规划速度, 根据对应外部轴方案类型改变, 单位(rad/s或m/s)。

block : 指令是否阻塞型指令,如果为false表示非阻塞指令,指令会立即返回。

op : 详见上方Op特殊类型说明(距离触发无效),可缺省参数。

def_acc : 是否使用自定义加速度,默认为true,可缺省参数。

返回值:

当配置为阻塞执行,返回值代表当前任务结束时的状态;

当配置为非阻塞执行,返回值代表当前任务的id信息,用户可以调用get_noneblock_taskstate(id)函数查询当前任务的执行状态。


movec_eaxis ( vector<double> p1, vector<double> p2, double v, double a, double rad, vector<double> q_near, string tool, string wobj, const string& scheme_name, vector<double> epos, double eaxis_v, bool block, Op op = op_, bool def_acc = true)

函数说明:

该指令用于控制外部轴和机器人做圆弧运动,起始点为当前位姿点,途径p1点,终点为p2点。

参数说明:

p1 : 圆弧运动中间点位姿。

p2 : 圆弧运动结束点位姿。

v : 末端速度,范围(0, 5],单位(m/s)。

a : 末端加速度,范围(0, ∞],单位(m/s^2)。

rad : 关节融合半径,单位m,默认值为0,表示无融合。当数值大于0时表示与下一条运动融合。

q_near : 目标点附近位置对应的关节角度,用于确定逆运动学选解,为空时使用当前位置。

tool : 设置使用的工具的名称, 为空时默认为当前使用的工具。

wobj : 设置使用的工件坐标系的名称,为空时默认为当前使用的工件坐标系。

scheme_name : 目标外部轴方案名称。

epos : 目标外部轴方案所对应自由度位置(三维), 记录位置自由度及单位根据外部轴方案所设置自由度及外部轴方案类型改变, 单位(rad或m)。

eaxis_v : 外部轴最大规划速度, 根据对应外部轴方案类型改变, 单位(rad/s或m/s)。

block : 指令是否阻塞型指令,如果为false表示非阻塞指令,指令会立即返回。

op : 详见上方Op特殊类型说明(距离触发无效),可缺省参数。

def_acc : 是否使用自定义加速度,默认为true,可缺省参数。

返回值:

当配置为阻塞执行,返回值代表当前任务结束时的状态;

当配置为非阻塞执行,返回值代表当前任务的id信息,用户可以调用get_noneblock_taskstate(id)函数查询当前任务的执行状态。

实时控制函数#

  1. 用户需确保客户端的实时性和通讯质量;

  2. 由于存在不同电脑间实时性同步的问题, 该功能无法做到强实时;

  3. Python版本不提供实时控制接口。


start_realtime_mode ( int32_t mode, double filter_bandwidth, double com_lost_time )

函数说明:

开启实时控制模式。

参数说明:

mode : 实时控制模式, 0: 关节位置, 1: 关节速度, 2: 关节力矩, 3: 空间位置, 4: 空间速度。

filter_bandwidth : 实时控制指令滤波器带宽, 单位Hz, 默认100Hz。

com_lost_time : 实时控制通讯数据丢失监控保护时间, 单位s, 默认0.02s。

返回值:

阻塞执行,返回值代表当前任务结束时的状态。


end_realtime_mode ()

函数说明:

结束实时控制模式。

参数说明:

无。

返回值:

阻塞执行,返回值代表当前任务结束时的状态。


realtime_data_enqueue ( const std::vector<RealTimeData> &realtime_data, bool block )

函数说明:

实时数据入队。

参数说明:

realtime_data : 实时数据。

block : 是否阻塞, 如果为false表示非阻塞指令, 指令会立即返回。

返回值:

当配置为非阻塞执行, 返回值代表当前任务的id信息, 用户可以调用get_noneblock_taskstate(id)函数查询当前任务的执行状态。


clear_realtime_data_queue ()

函数说明:

清空实时数据队列。

参数说明:

无。

返回值:

阻塞执行,返回值代表当前任务结束时的状态。


get_realtime_data_queue_size ()

函数说明:

获取当前实时队列池数据的数量。

参数说明:

无。

返回值:

当前实时队列池数据的数量。


调用逻辑

  1. 调用clear_realtime_data_queue()清空当前实时控制指令队列;

  2. RPC控制端本地生成对应的实时控制指令数据, 并将其赋值给RealTimeData中对应指令数据, status指令赋true;

  3. 调用realtime_data_enqueue将赋值好的数据推送进实时控制指令队列, 确保推送进实时控制队列池的第一个指令与当前机器人实际状态相符,避免开启实时控制模式后出现飞车报错;

  4. 重复步骤2-3直至完整控制指令推送至实时控制队列中或队列已满;

  5. 调用start_realtime_mode启用实时控制模式, 机器人进入实时控制模式, 并参考对应实时控制模式解析控制指令队列中内容并进行跟随;

  6. 若还有未完成推送的实时指令, 在机器人运动过程中可以通过get_realtime_data_queue_size()在线查询实时控制队列池的大小,并进行新指令的在线推送更新。


示例

以关节速度控制为例:

std::vector< std::vector<double> > joints_vel = {

{ -6.700217460074271930e-04, -4.072137254218498661e-03, 7.066593031266893074e-03, -2.978735190571154060e-03, 2.183094442351974149e-05, -6.698504529062708013e-04 },

{ -1.589154109004034272e-03, -1.011421833810334688e-02, 1.754193265331701820e-02, -7.390421055007160601e-03, 5.177329125210710173e-05, -1.588748280197681967e-03 },

{ -2.755305715766451745e-03, -1.811209469461632846e-02, 3.140150170886479852e-02, -1.322473808616756764e-02, 8.975891577376789718e-05, -2.754602640998529955e-03 },

{ -3.442737990430701396e-03, -2.315600008944551300e-02, 4.013747069438520360e-02, -1.690065907568836720e-02, 1.121474983595938492e-04, -3.441859692247766726e-03 },

{ -3.157588346910660156e-03, -2.189245123375168842e-02, 3.793907058813744682e-02, -1.597249170914913363e-02, 1.028521444952658879e-04, -3.156782645645519157e-03 },

{ -2.864607599016891562e-03, -2.071522367525847202e-02, 3.588861821868741253e-02, -1.510613530488653065e-02, 9.330159342950848850e-05, -2.863877683525377273e-03 },

{ -2.820140424052270788e-03, -2.131761007776102057e-02, 3.692116291809591222e-02, -1.553733028238165649e-02, 9.184682028243494134e-05, -2.819424392840391355e-03 },

{ -2.812250163455366943e-03, -2.205552289748904243e-02, 3.818995917565090603e-02, -1.606839114406481001e-02, 9.158444035047173999e-05, -2.811536045264771428e-03 },

{ -2.728426654789113497e-03, -2.205617043400752084e-02, 3.818376395297849724e-02, -1.606350627152726418e-02, 8.884967501704240018e-05, -2.727728984672162828e-03 },

{ -1.936938097461126220e-03, -2.279194264874751311e-02, 3.938230929954751602e-02, -1.654479502939042515e-02, 6.304779778496766665e-05, -1.936393526134143209e-03 } };

// 机器人已经上电上使能

// 清空实时数据队列

duco_cobot.clear_realtime_data_queue();

vector<RealTimeData> real_data_vec;

// 将关节速度赋值给实时数据结构体变量

for (int i = 0; i < joints_vel.size(); i++)

{

RealTimeData rt_data;

rt_data.joint_vel_cmd = joints_vel[i];

// 数据更新状态为true

rt_data.status = true;

real_data_vec.push_back (rt_data);

}

// 将数据传进队列

duco_cobot.realtime_data_enqueue( real_data_vec, true );

// 以关节速度控制方式打开实时控制模式

result = duco_cobot.start_realtime_mode( 1, 100, 0.04 );

// 不断地向队列填充数据

while ( ! stop_realtime_control )

{

real_data_vec.clear();

RealTimeData rt_data;

rt_data.joint_vel_cmd = joints_vel[joints_vel.size() - 1];

rt_data.status = true;

real_data_vec.push_back(rt_data);

duco_cobot.realtime_data_enqueue(real_data_vec, true);

usleep(1000)

}

// 关闭实时控制模式

duco_cobot.end_realtime_mode();

其他信息#

get_version ()

函数说明:

获取当前RPC库的版本号。

参数说明:

无。

返回值:

当前RPC库的版本号。


get_robot_version( string& version )

函数说明:

获取机器人控制器的软件版本号。

参数说明:

version : 存放软件版本号的字符串。

返回值:

无。