利用乐白机器人绘制简单几何图形

乐白机器人 1.0 支持到点的直线移动,语法如下:

local a = get_actual_tcp_pose()
movej(a, 0.4, 1, 0, 1)

在 1.3 版本,我们引入了指定相对坐标系的功能,利用该功能我们可以实现在任意平面上简单几何图形的绘制。语法如下:

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

其中,base就是相对坐标系。

绘制平面简单几何图形,以绘制五角星为例。考虑正五角星的内角为 36°。如图,以点 A 为原点建立平面直角坐标系。其中,A-B-C-D-E 的顺序为绘制五角星五条边的顺序。

image

如图作辅助线,点A(0,0)为原点。可以看到,点B(-x,-y)和点E(x,-y)相对于 y 轴对称。

设五角星的边长CD=rCN=ND=\dfrac{r}{2}\angle ACM=\angle CAN=36^\circ

则点C\left(-\dfrac{r}{2},-\dfrac{r}{2}  \cos⁡ 36^\circ\right)和点D\left(\dfrac{r}{2},-\dfrac{r}{2} \cos⁡ 36^\circ\right)相对于 y 轴对称。

又可得x=r \sin⁡ 18^\circy=r \cos⁡ 18^\circ

上述点对应到三维空间坐标系下,令 z 方向和姿态保持不变,得到如下点:

  local x = r * math.sin(math.rad(18))
  local y = r * math.cos(math.rad(18))

  local a = {0,0,0,0,0,0,base=base}
  local b = {-x,-y,0,0,0,0,base=base}
  local c = {r / 2, -r / 2 * math.cos(math.rad(36)), 0,0,0,0,base=base}
  local d = {-r / 2, c[2], 0,0,0,0,base=base}
  local e = {x, -y, 0,0,0,0,base=base}

此时就可以编写一个函数,让机器人直线沿这些点运动即可。乐白机器人支持中文变量名和函数名,也可以使用 emoji。该函数有四个参数,分别为起始坐标、五角星边长、运动速度和加速度。

function 画☆(base, r, vel, acc)
  local x = r * math.sin(math.rad(18))
  local y = r * math.cos(math.rad(18))
  print('x', x, 'y', y)

  local a = {0,0,0,0,0,0,base=base}
  print('a', a)
  movej(a, 0.4, 1, 0, 1)
  wait(1000)

  local b = {-x,-y,0,0,0,0,base=base}
  print('b', b)
  movel(b, vel, acc, 0, 0)

  local c = {r / 2, -r / 2 * math.cos(math.rad(36)), 0,0,0,0,base=base}
  print('c', c)
  movel(c, vel, acc, 0, 0)

  local d = {-r / 2, c[2], 0,0,0,0,base=base}
  print('d', d)
  movel(d, vel, acc, 0, 0)

  local e = {x, -y, 0,0,0,0,base=base}
  print('e', e)
  movel(e, vel, acc, 0, 0)

  movel(base, vel, acc, 0, 0)
end

如果要使机器人以当前点为起始点画 ☆,如下调用即可。

local a = get_actual_tcp_pose()
print(a)
画☆(a, 15 * 0.01, 0.06, 0.1)

在“设置”—“主题样式”—“3D 渲染”中打开“显示 TCP 轨迹”选项。
点击界面上的运行按钮,开始运行,机器人将会以当前末端位姿为起始点绘制一个相对于法兰平面的五角星。点击手臂按钮,就可以看到机器人确实是绘制出了一个 ☆。

image

用户还可以利用这个函数,绘制不同大小、不同位置的五角星。也可以在末端绑上一支毛笔,在“设置”—“TCP 设置”中根据提示配置好毛笔的位姿,便可以在纸上绘制图形了。
通过 Lua 编程,用户可以实现许多复杂的功能,但可能需要一些编程基础。我们正在努力为用户提供常用功能的抽象,使用户不再需要直接编写 Lua 代码。在 2.0 里,我们将提供子场景嵌入的功能,用户可以在时间轴编辑器中直接嵌入我们提供的或者从应用商店下载的 Lua 子程序,来实现一定的复杂功能,而无需编写程序代码。

乐白 2.0 还将支持路径动作块,用户可以通过实际的示教方式,或者直接在操作界面上绘制图形,来引导机器人的具体运动轨迹。这也比现有的点运动方式多了更多的可玩性。