机械臂写字设计分析

1 介绍

控制机械臂写字。

2 六自由度机械臂基于TTF字库的汉字书写系统设

朱齐丹, 谢心如, 李超.六自由度机械臂基于TTF字库的汉字书写系统设计[J]. 应用科技,2016, 43(5): 40-44

写字模块

写字板模块可以是一个Web前端程序,功能是捕捉人的手写字轨迹,并对轨迹进行离散化采样,形成轨迹序列离散点,周期或打包发送至写字服务器。

六自由度机械臂基于TTF字库的汉字书写系统设

思路

编程提取Windows自带的true type font(TTF)矢量字库的汉字轮廓信息,使用插补算法重新进行轨迹规划;然后,建立了六自由度机械臂的运动学模型,设计了机械臂末端位置控制器;最后,采用位置跟踪模式实现机械臂的运动控制,实现了机械臂的汉字书写功能。

汉字信息提取

目前主要有3种方法提取字符及汉字的数据信息:

  1. 对写有汉字的图像进行阈值化,将图像转化为二值图像,对汉字进行细化,细化为单像素值的汉字,按顺序记录笔画中点的坐标;
  2. 使用AutoCAD软件提取文字笔画的点坐标信息,用编程软件实现与CAD的信息交互;
  3. 利用Windows的API函数读取Windows系统的TTF矢量字库的轮廓信息。

整体方案

在这里插入图片描述

轨迹规划算法

直角空间轨迹规划

TTF字库将字体的轮廓分为直线和二次样条曲线,使用GetGlyphOutline函数提取的轮廓位置点只有关键点,机械臂不能直接根据这些信息平滑运动,需使用插补算法在直角空间进行轨迹规划,获得精确的机械臂末端位置信息。

轮廓线为直线和二次样条曲线时的插补方式不同:当轮廓线为直线时,在线段的起点和终点间插入n个点,将直线等分成n+1个线段,将中间插值点的坐标存入数组中;当轮廓线为二次样条曲线时,使用二次抛物线函数对曲线进行拟合,并进行二次样条插值。如图 3所示,利用三切线定理构造抛物线函数[4],根据已知的轮廓线上的A、B、C这3个点的位置坐标得到抛物线的函数P(t),保证每两个插值点之间的弦长恒定,计算所需的时间t,将时间t代入抛物线公式,即可得到插补点的坐标,然后将位置坐标存入数组中,对“心”字插值前后的字体轮廓如图 4所示。
在这里插入图片描述
在这里插入图片描述

机械臂逆运动学算法

使用逆运动学算法将机械臂笛卡尔空间的位置坐标转化为关节空间6个轴的关节角进行空间控制。

根据D-H参数建立机械臂的运动学模型。

机械臂控制方法

位置控制系统设计

为实现对机械臂末端位置的控制,将笛卡尔空间的期望位置通过逆运动学转换为关节空间的期望关节角,将期望关节角转化为期望的关节脉冲,控制DMC运动控制卡,控制机械臂运动,通过编码器实时读取关节脉冲值,转化为实际位置值,与期望位置相比较,直到机械臂到达期望位置,如图 5所示。
在这里插入图片描述
图中,x为机械臂末端期望位置,P为轨迹规划的期望位置,y为机械臂末端实际位置。

运动方式

本文使用REbot-V-6R六自由度机械臂,使用运动控制卡DMC-2143,提供了多种运动方式,包括定位控制、位置跟踪控制、直线插补控制、JOG运动和电子凸轮运动等,用户可以利用现有的运动方式根据控制要求写应用程序。

直线插补控制方式可以根据提前给定的轨迹运动,不需要人为进行直线插值,机械臂沿着直线到达期望点,但是这种方式只能在机械臂轨迹已知的情况下使用,不能实时更改期望的位置坐标,且只能进行直线插补,不能进行曲线插补,本文不采用这种控制方法,运动过程中可以实时改变期望位置坐标。

将提取到的末端执行器的位置坐标作为机械臂的期望位置,采用位置跟踪的运动方式。位置跟踪运动模式可以随时指定目标位置,也可以指定速度、加速度和减速度。首先通过PT控制指令开启位置跟踪模式,并通过指令SP、AC和DC分别指定运动的速度、加速度和减速度,指令PA指定目标位置,控制机械臂开始运动,当检测到机械臂的关节位置脉冲到达期望的关节位置脉冲时,发送下一个目标位置指令,实现位置的连续运动,直到完成一个完整轮廓的绘制,然后绘制下一个轮廓,直至所有轮廓绘制完成,机械臂回到初始位置,停止运动。
在这里插入图片描述

3 DOBOT魔术师用毛笔写春联

在这里插入图片描述
1) 毛笔字的笔画如何生成的?
机器人写字的路径生成有两种方式,一种是通过制作PLT格式的矢量路径来得到,另一种是通过iPad触摸笔的动作轨迹,自动生成笔画轨迹。

2) 机器人如何将笔画书写出来?
做好的文字路径或者iPad触摸笔得到的轨迹,经过算法提取后会得到等间距的路径坐标点,将这些点通过电脑或者蓝牙发送给机器人,机器人就可以按照笔画的轨迹来运动,人眼看到的效果就是机器人在书写春联。"

以上是越疆科技在2018年网络春晚使用iPad去控制DOBOT机械臂实时写毛笔的背后的技术。其实这个技术和机械臂实现简笔汉子异曲同工,都是根据生成的汉字路径进行学习的。普通的简笔汉字比毛笔字简单很多,只需要在软件中输入文字之后,根据自己的不同需求选择字体,DOBOT机械臂会自动生成路径,机械臂根据路径走出来就好。

4 Universal robot employment to mimic human writing

Universal robot employment to mimic human writing

如今,机器人技术中采用了很多方法来模仿人类的书写。其中就包括依赖精确位置控制机器人的方法。使用这种机器人可以保证机器人笔与书写表面接触,但需要对绘图板进行精细校准。在这项工作中,我们使用通用机器人,旨在在书写时传递自然的人体运动学和轨迹,同时利用与书写板(在我们的案例中为 Wacom Intuos Pro 平板电脑)的接触。

实验研究使用了机器人 UR5 和图形 Wacom Intuos Pro 手写板来模仿人类书写。

分析

A. 笔迹标本采集
此阶段包含使用任何设备(如 LCD 触摸板、Wacom、手持设备等)进行人类签名(书写)的过程。在我们的案例中,执行的在线人类书写样本(即签名)由 Wacom 手写板捕获,该手写板记录笔尖轨迹(x、y坐标)以及笔压信号(p)。对于每个采集的样本,都会产成一个包含轨迹和压力坐标的文件。签名是动态采集的,即使用特定的采样率(100 Hz)。记录的轨迹分为两种类型:落笔(p>0)和抬笔(p=0)。

B. 笔迹样本处理利用
捕获的书写样本是使用在 IDeTIC,ULPGC 中开发的原始程序单元进行处理的。

对获取的签名进行分析。结果,生成了相应的签名轨迹和速度曲线。

C. 机器人书写
UR5机器人根据获取的签名样本进行写入过程。特征轨迹坐标从获取的文件中获取并输入机器人控制系统。接下来,利用Wacom平板电脑实现机器人书写过程。在实验室环境下设计并制作了一款用于obot书写的专用笔(见图3)。 之后,对机器人书写样本进行与人类书写样本类似的处理(B阶段)。

D. 在线人和机器人签名的比较
对人类在线和机器人书写样本的参数(B阶段和C阶段的结果)进行比较和分析。 人和机器人的接近程度由速度和轨迹定义。 正如[8-9]中所建议的,它们是通过信噪比(SNR)来测量的。
在这里插入图片描述
在这里插入图片描述

控制

为了实现机器人编写任务,使用了内置的 URScript [12] 函数 movep、movel 和 movej。 这些功能允许机器人末端执行器 - 笔(图 3)在配置和笛卡尔空间中进行线性运动,以及控制笔的位移和运动速度。 URScript 函数是通过 Caros 和 Bender 包中实现的包装器来访问的(图 2)。 使用Wacom平板电脑在人类书写过程中定义机器人书写轨迹的控制点,并通过基于RobWork包的插件界面(见图1)将书写过程可视化[10]。 这些子系统通过使用 ROS [11] 进行协调。 UR5控制器和控制PC通过以太网连接(图2)。

机器人书写流程

机器人书写过程是使用上述实验装置实现的,其中包括通用UR5机器人、Wacom Intous Pro M平板电脑、控制PC、UR5控制器单元和Polyscope控制面板(图2)。 该过程从下载书写文本参数开始,这些书写文本参数是先前人类或机器人书写过程的结果,或者是数据库中呈现的书写符号的新组合。

机器人写入过程的控制是由使用Python语言开发的程序单元通过以太网与UR5控制单元连接的控制PC来实现的。 机器人位移命令(上文第 3.1 节中所述)被发送到 UR5 控制单元,该单元生成控制命令并将其发送到 UR5 机器人驱动器。 使用与控制 PC 连接的 Wacom Intous Pro M 平板电脑来获取机器人写入结果的数值数据。 安装在控制 PC 上的程序 wacomGUI2 允许管理所获得的数据并将其写入相应的 csv 文件中。

csv 文件中的数据以七列表格形式呈现。 第 1 列和第 2 列包含在平板电脑坐标系中呈现的正在写入的签名元素的坐标 X 和 Y。 X或Y值的变化是指手写笔沿X轴和Y轴的位移。 坐标值的写入格式取决于平板电脑的 DPI 参数。 对这些值进行进一步缩放以呈现以米为单位的坐标值。 第 3 列显示书写过程的时间,第 4 列包含有关笔压力(或无压力)的信息,该信息允许分离工作动作(书写)和设置移动(笔在数位板表面上的位移)。 第 5-7 列包含在所呈现的机器人书写过程中不使用的信息,例如写字板笔的倾斜度。

使用wacomGUI2程序从Wacom平板电脑获得并呈现在上述数据文件中的数据进一步由Python控制程序转换为机器人末端执行器位置,以在机器人写入过程中实现。

这样,从平板电脑获得的数据在写入时进一步用于机器人控制过程。

控制程序交互 URScript

机器人写控制程序运行的总体方案如下。 首先,定义程序运行方式的程序变量被分配和下载。 接下来,定义“数据源”变量(指定是从单个文件读取数据还是从不同文件读取单个字母(或笔画)以实现文本符号的复杂序列)以及数据加载方法 。 之后,通过 UR5 机器人笔的线性运动来写入加载的签名符号,并进行模拟检查是否到达机器人末端执行器的最终位置和每个预定义位置。

因此,所提出的 UR5 控制程序允许写入符号序列,即文本元素,这些符号序列是从专门准备的符号数据库中读取的。 执行整体书写的特定铭文,例如 还执行机器人书写的签名。

在执行写入过程时,UR5 机器人执行用 URScript 代码编写的程序。 URScript程序内容基于控制程序,用Python语言创建并发送到UR5控制器。 为了与机器人控制器进行通信,可以使用 TCP/IP 100 Mbps IEEE 802.3u 协议、100Base-TX 以太网套接字和 Modbus TCP [13]。 要从用 Python 语言编写的 PC 计算机程序向 UR5 控制器发送位移命令或读取机器人关节的实际位置,需要使用以下程序命令导入支持套接字的库:

import socket

之后,套接字和机器人IP地址由下面的程序片段定义,如清单1所示。相应的注释在程序列表中用#号标记。
Listing 1. Definition of the data to communicate with UR5 robot.

#### PROGRAM CONFIGURATION ####
# Information about the connection to the robot
HOST = "192.168.2.10" # Robot IP address
PORT_TO_ROBOT = 30001 # Port for control commands sending
PORT_FROM_ROBOT = 30003 # Port for robot data acquisition

接下来,通过提供相应的端口、从 UR5 机器人控制器读取数据并使用开发的相应程序代码将数据发送到机器人来创建套接字。

在这种通信技术中,为了遵循适当符号写入的预设顺序,需要控制将要写入的下一个符号(或笔划)的下一个数据集发送到UR5机器人控制器的时刻。 这种控制的实现是由于机器人位置读取和定义特征点的可能性,其中机器人末端执行器在每个签名符号写入完成后放置并且在写入时未到达。
在这里插入图片描述

参考

1、朱齐丹, 谢心如, 李超.六自由度机械臂基于TTF字库的汉字书写系统设计[J]. 应用科技,2016, 43(5): 40-44
2、https://www.zhihu.com/question/56242481/answer/330624068
3、https://www.zhihu.com/question/492100417/answer/3026003662
4、Universal robot employment to mimic human writing

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值