运动控制

  • 位置 pos, pos_via 的类型为 table
    • 若是 {j1 = 0.1, j2 = 0.2, j3 = 0.2, j4 = 0.3, j5 = 0.1, j6 = 0.2},表示关节位置。
    • 若是 {x, y, z, Rz, Ry, Rx},则表示的是坐标位置。
      当指定坐标位置时,可以指定参考坐标系 {x, y, z, Rz, Ry, Rx, base={x0, y0, z0, Rz0, Ry0, Rx0}},默认参考坐标系为世界坐标系 base={0,0,0,0,0,0}。【2.0】
  • 速度 v 和加速度 a 参数用于控制梯形速度分布。
  • 运动时间 t 默认为 0,无效。
    • t > 0 时,参数速度 v 和加速度 a 无效 (s=vt=12at2s=vt=\frac12 at^2)【2.1】
  • 交融半径 r 用于指定路径的平滑效果。
    • 0 表示关闭平滑移动。
    • 1 表示启用平滑移动(最大交融半径为 1 m),过渡时不一定经过目标位置。2.2之前设置为其他值无效,2.3之后支持不同空间内的平滑和交融半径设置。
    • {continued=1, type='smooth'} 支持不同空间之间的平滑过渡,但保证经过目标位置。适用于由算法生成(非示教产生)位置的连续路径移动。【2.1】

调用移动命令时,机器人如果处于停止状态会返回 false。【2.0】

移动 move

movej(pos, a, v, t, r)

线性移动(关节空间)

在关节空间内执行线性移动。

使用该命令,机器人必须处于静止状态或者上一个命令是movej或者带交融的movel。速度和加速度参数用于控制梯形速度分布,也可以设置可选参数time来控制移动的时间,当time > 0时,优先级高于速度和加速度参数,速度和加速度参数的控制无效。

Lua请求参数

参数 类型 说明
pos table 关节位置,或者坐标位置(将通过运动学反解转为关节位置)
a number 主轴的关节加速度 (rad/s2)
v number 主轴的关节速度 (rad/s)
t number 运动时间 (s)
r number 交融半径 (m)

JSON请求参数

参数名 类型 描述
pose_to double数组 [0.1,0.2,0.3,0.4,0.5,0.6],关节空间 或是 工具空间。
is_joint_angle bool is_joint_angle:true 表示关节空间,is_joint_angle:false 表示工具空间,系统会自动将工具空间转换成关节空间。
acceleration double 单位:rad/s^2,主轴的关节加速度
velocity double 单位:rad/s,主轴的关节速度
time double 单位:s,运动时间 (目前暂不支持)
smooth_move_to_next double 是否平滑交融到下一个move,0:不平滑过渡;1:平滑过渡(目前仅支持同类型的移动平滑交融过渡过去)(目前暂不支持)

JSON返回结果

返回值 数据类型 说明
task_id int 任务id

示例

Lua 命令 movej({j1 = 0, j2 = 1.57, j3 = -1.57, j4 = 0, j5 = 3.14, j6 = 3.14}, 1.2, 0.2, 0, 0)

movej({0.2, 0.5, 0.4, 0, 0, 0}, 1.2, 0.2, 0, 0)
JSON 请求 {"cmd":"movej", "data": {"pose_to": [0, -0.7853981633974483, 1.5707963267948966, -0.7853981633974483, 1.5707963267948966, 0], "is_joint_angle": true, "acceleration": 1.23, "velocity": 1.23}}
JSON 响应 {"data":{"task_id":75},"code":0}

movel(pos, a, v, t, r)

线性移动(工具空间)

在工具空间内执行线性移动路径,即直线运动。

local v = 0.06
local a = 0.1

function 画☆(base, r)
  local x = r * math.sin(math.rad(18))

  local a = {0,0,0,0,0,0,base=base}
  movej(a, 0.4, 1, 0, 1)

  local b = {-x,-y,0,0,0,0,base=base}
  movel(b, v, a, 0, 0)

  local c = {r / 2, -r / 2 * math.cos(math.rad(36)), 0,0,0,0,base=base}
  movel(c, v, a, 0, 0)

  local d = {-r / 2, c[2], 0,0,0,0,base=base}
  movel(d, v, a, 0, 0)

  local e = {x, -y, 0,0,0,0,base=base}
  movel(e, v, a, 0, 0)

  movel(a, v, a, 0, 0)
end

local a = get_actual_tcp_pose()

画☆(a, 0.1)

在工具空间内执行线性移动路径,使用该命令,机器人必须处于静止状态或者上一个命令是movej或者带交融的movel。速度和加速度参数用于控制梯形速度分布,也可以设置可选参数time来控制移动的时间,当time > 0时,优先级高于速度和加速度参数,速度和加速度参数的控制无效。

Lua请求参数

参数 类型 说明
pos table 坐标位置,或者关节位置(将通过运动学正解转为坐标位置)
a number 工具空间加速度 (m/s2)
v number 工具空间速度 (m/s)
t number 运动时间 (s)
r number 交融半径 (m)

JSON请求参数

参数名 类型 描述
pose_to double数组 [0.1,0.2,0.3,0.4,0.5,0.6],关节空间或是工具空间。
is_joint_angle bool is_joint_angle:true 表示关节空间,is_joint_angle:false 表示工具空间,系统会自动将关节空间转换成工具空间。
acceleration double 单位:rad/s^2,主轴的关节加速度
velocity double 单位:rad/s,主轴的关节速度
time double 单位:s,运动时间 (目前暂不支持)
smooth_move_to_next double 是否平滑交融到下一个move,0:不平滑过渡;1:平滑过渡(目前仅支持同类型的移动平滑交融过渡过去)(目前暂不支持)

示例

Lua 命令 movel({0.2, 0.5, 0.4, 0, 0, 1.57}, 1.0, 0.2, 0, 0)

movel({j1 = 0, j2 = 1.57, j3 = -1.57, j4 = 0, j5 = 3.14, j6 = 3.14}, 1.0, 0.2, 0, 0)
JSON 请求 {"cmd":"movel", "data": {"pose_to": [0.2, 0.5, 0.4, 0, 0, 1.57], "is_joint_angle": false, "acceleration": 1.0, "velocity": 0.2}}
JSON 响应 {"data":{"task_id":88},"code":0}

movec(pos_via, pos, rad, a, v, t, r)

圆弧移动(工具空间)

进行工具空间内的圆弧移动,其运动路径为以当前位置、pos_viapos 三点组成的唯一圆。如果三点位于一条直线上无法画圆,或者点之间距离过小以至于唯一圆过大或过小,命令均将执行失败。

弧度 rad 用于指定圆弧移动的弧度大小。

  • 特殊且默认地,当 rad = 0 表示移动到 pos 作为终点。
  • 如果 rad > 0,则表示走一个圆弧移动轨迹,途径 pos_viapos,并旋转对应的 rad
  • 如果 rad < 0,则表示反方向走圆弧移动轨迹,pos_viapos 在此模式下不一定经过。 执行完圆弧移动的机器人姿态与 pos 一致,与 rad 无关。

Lua请求参数

参数 类型 说明
pos_via table 途经位置。坐标位置,或者关节位置(将转为坐标位置)
pos table 目标位置。坐标位置,或者关节位置(将转为坐标位置)
rad number 路径圆弧的弧度 (rad)
a number 工具空间加速度 (m/s2)
v number 工具空间速度 (m/s)
t number 运动时间 (s)
r number 交融半径 (m)

示例

Lua 命令 movec({0.2, 0.5, 0.4, 0, 0, 1.57}, {j1 = 0.1, j2 = 0.2, j3 = 0.2, j4 = 0.3, j5 = 0.1, j6 = 0.2}, 0.0, 1.0, 0.2, 0)
JSON 请求 暂无
JSON 响应 暂无

stop_move()

停止当前移动

停止当前移动命令。如果后续有移动命令,则继续执行。

该命令是 move_until 系列命令的内部实现机制。 停止当前移动,并不影响后续移动命令的执行。

示例

Lua 命令 stop_move()
JSON 请求 {"cmd":"stop_move"}
JSON 响应 {"data":{"task_id":99},"code":0}

移动到某个条件为止 move_until

执行移动命令,如果需要在运动过程中当某个条件发生时停止当前移动,则采用 move_until 系列命令。

相比于 move 系列命令,取消了交融半径 r 的设置,代之以回调函数 fn。该回调函数的效果是,当移动命令执行时,系统会每周期 (约 10ms) 调用一次该函数,如果该函数返回 true,则自动调用 stop_move() 命令停止当前移动。如果该函数一直不返回真值,机器人将最终移动到 pos。在 Lua 语法中,函数可以是匿名的。

movej_until(pos, a, v, t, fn)2.0

线性移动到(关节空间)

进行关节空间的线性移动,直到满足指定条件时停止。

请求参数

参数 类型 说明
pos table 关节位置,或者坐标位置(将通过运动学反解转为关节位置)
a number 主轴的关节加速度 (rad/s2)
v number 主轴的关节速度 (rad/s)
t number 运动时间 (s)
fn function 判断条件回调函数

返回值

类型 说明
bool 成功或者失败

示例

-- Lua示例
movej_until({j1 = 0, j2 = 1.57, j3 = -1.57, j4 = 0, j5 = 3.14, j6 = 3.14}, 1.2, 0.2, 0, function()
  return get_aio(2) > 10
end)
JSON 请求 暂不支持
JSON 响应 暂不支持

movel_until(pos, a, v, t, fn)2.0

线性移动到(工具空间)

在工具空间内执行线性移动路径,即直线运动,当满足指定条件时停止。

请求参数

参数 类型 说明
pos table 坐标位置,或者关节位置(将通过运动学正解转为坐标位置)
a number 工具空间加速度 (m/s2)
v number 工具空间速度 (m/s)
t number 运动时间 (s)
fn function 判断条件回调函数

示例

-- Lua示例
movel_until({0.2, 0.5, 0.4, 0, 0, 1.57}, 1.0, 0.2, 0, function()
  return get_tcp_dio(1) == 0
end)
JSON 请求 暂不支持
JSON 响应 暂不支持

movec_until(pos_via, pos, rad, a, v, t, fn)2.0

圆弧移动到(工具空间)

进行工具空间内的圆弧移动,当满足指定条件时停止。

请求参数

参数 类型 说明
pos_via table 途经位置。坐标位置,或者关节位置(将转为坐标位置)
pos table 目标位置。坐标位置,或者关节位置(将转为坐标位置)
rad number 路径圆弧的弧度 (rad)
a number 工具空间加速度 (m/s2)
v number 工具空间速度 (m/s)
t number 运动时间 (s)
fn function 判断条件回调函数

示例

-- Lua示例
movec_until({0.2, 0.5, 0.4, 0, 0, 1.57}, {j1 = 0.1, j2 = 0.2, j3 = 0.2, j4 = 0.3, j5 = 0.1, j6 = 0.2}, 0.0, 1.0, 0.2, 0, function()
  return get_tcp_dio(1) == 0
end)
JSON 请求 暂不支持
JSON 响应 暂不支持

移动到某个条件为止(实时) move_until_rt

实时系列命令,当满足指定 I/O 组的对应的逻辑触发条件时移动停止,本类移动命令仅支持机器人主机 I/O 和法兰盘 I/O 作为触发条件,同时相比 movej_util 完全自定义的触发条件拥有更高速更实时的处理条件,适用于对于触发后移动实时性要求较高的场景。

  • 逻辑关系 logic: IO组各个判断条件之间的逻辑判断关系,支持 ANDOR 两种逻辑判断。
  • I/O 条件组合 io:IO组各个判断条件的描述,table语法规则为: {'io_device', io_type, pin, value, 'logic operation'}
    • io_device为:robotflange
    • io_type为:0: 模拟IO类型,1:数字IO类型;
    • pin:端口引脚编号,从0开始,即0对应IO引脚1;value为:对应IO端口引脚需要比较的值,number类型;
    • logic operation:引脚对应IO值和value的逻辑判断操作符,比较顺序为:<value of the pin> <operation> value,其中<operation>支持:>、>=、=、!=、<、<=几种操作符
  • 条件满足回调函数 cb: 当IO组对应的条件满足时的回调方法,会通过cb回调方法返回机器人的核心位置数据,类型为table,返回的data数据格式为
    {
      target_pose: {x, y, z, Rz, Ry, Rx},
      actual_pose: {x, y, z, Rz, Ry, Rx},
      target_joint_pose: {j1=x, j2=y, j3=z, j4=xx, j5=yy, j6=zz},
      actual_joint_pose: {j1=x, j2=y, j3=z, j4=xx, j5=yy, j6=zz}
    }
    

movej_until_rt(pos, a, v, t, logic, io, cb)2.0

线性移动到(关节空间)

进行关节空间的线性移动,实时判断当满足指定条件时停止并回调。

请求参数

参数 类型 说明
pos table 关节位置,或者坐标位置(将通过运动学反解转为关节位置)
a number 主轴的关节加速度 (rad/s2)
v number 主轴的关节速度 (rad/s)
t number 运动时间 (s)
logic string 逻辑关系
io table I/O 条件组合
cb function 条件满足回调函数

示例

-- Lua示例
movej_until_rt({j1 = 0, j2 = 1.57, j3 = -1.57, j4 = 0, j5 = 3.14, j6 = 3.14}, 1.2, 0.2, 0, 'AND', {{'robot', 0, 1, 0, '=='}, {'flange', 1, 1, 1, '!='}}, function(data)
  print(data)
end)
JSON 请求 暂不支持
JSON 响应 暂不支持

movel_until_rt(pos, a, v, t, logic, io, cb)2.0

线性移动到(工具空间)

在工具空间内执行线性移动路径,即直线运动,实时判断当满足指定条件时停止并回调。

请求参数

参数 类型 说明
pos table 坐标位置,或者关节位置(将通过运动学正解转为坐标位置)
a number 工具空间加速度 (m/s2)
v number 工具空间速度 (m/s)
t number 运动时间 (s)
logic string 逻辑关系
io table I/O 条件组合
cb function 条件满足回调函数

示例

-- Lua示例
movel_until_rt({0.2, 0.5, 0.4, 0, 0, 1.57}, 1.2, 0.2, 0, 'AND', {{'robot', 0, 1, 0, '=='}, {'flange', 1, 0, 1, '!='}}, function(data)
  print(data)
end)
JSON 请求 暂不支持
JSON 响应 暂不支持

movec_until_rt(pos_via, pos, rad, a, v, t, logic, io, cb)2.0

圆弧移动到(工具空间)

进行工具空间的圆弧移动,当满足指定IO组的对应的逻辑触发条件时移动停止,本类移动命令仅支持机器人主机IO和法兰盘IO作为触发条件,同时相比movec_util完全自定义的触发条件拥有更高速更实时的处理条件,适用于对于触发后移动实时性要求较高的场景。

请求参数

参数 类型 说明
pos_via table 途经位置。坐标位置,或者关节位置(将转为坐标位置)
pos table 目标位置。坐标位置,或者关节位置(将转为坐标位置)
rad number 路径圆弧的弧度 (rad)
a number 工具空间加速度 (m/s2)
v number 工具空间速度 (m/s)
t number 运动时间 (s)
logic string 逻辑关系
io table I/O 条件组合
cb function 条件满足回调函数

示例

-- Lua示例
movec_until_rt({0.2, 0.5, 0.4, 0, 0, 1.57}, {j1 = 0.1, j2 = 0.2, j3 = 0.2, j4 = 0.3, j5 = 0.1, j6 = 0.2}, 0.0, 1.0, 0.2, 0, 'AND', {{'robot', 0, 1, 0, '=='}, {'flange', 1, 1, 1, '!='}}, function(data)
  print(data)
end)
JSON 请求 暂不支持
JSON 响应 暂不支持

伺服移动 movep

move_pvt(p, v, t)2.3.5

指定速度和时间的伺服移动

指定每个关节的速度和运动时间,让机器人连续地进行伺服移动。最小可以设置的时间为 0.01 (10ms),小于该值的路径点会被跳过。

Lua请求参数

参数 类型 说明
p table 关节位置,或者坐标位置(将通过运动学反解转为关节位置)
v table 或 number 每个关节的速度 (rad/s)。如该值为数字,则表示所有关节速度相同。
t number 运动时间 (s)
move_pvt({j1=0.279099,j2=0.0499054,j3=0.320451,j4=0.172128,j5=1.67471,j6=0.427222}, {0.00141239,0.017133,0.015709,0.0477418,0.0037477,0.0504095}, 0.01)

move_pvt({-0.490491,-0.257047,-0.0192966,-1.60649,-0.311108,2.14048}, 0.1, 0.01)

move_pvat(p, v, a, t)2.3.5

指定速度、加速度和时间的伺服移动

指定每个关节的速度、加速度和运动时间,让机器人连续地进行伺服移动。

Lua请求参数

参数 类型 说明
p table 关节位置,或者坐标位置(将通过运动学反解转为关节位置)
v table 或 number 每个关节的速度 (rad/s)。如该值为数字,则表示所有关节速度相同。
a table 或 number 每个关节的加速度 (rad/s)。如该值为数字,则表示所有关节加速度相同。
t number 运动时间 (s)
move_pvat({j1=0.279099,j2=0.0499054,j3=0.320451,j4=0.172128,j5=1.67471,j6=0.427222}, {0.00141239,0.017133,0.015709,0.0477418,0.0037477,0.0504095}, 0, 0.01)

move_pvat({-0.490491,-0.257047,-0.0192966,-1.60649,-0.311108,2.14048}, 0.1, 0, 0.01)

results matching ""

    No results matching ""