写字机器人
一、介绍
在自动化与智能化逐渐普及的现代社会,人类众多劳累的工作,都交给了机器人完成。随着机器人的广泛应用,人们开始希望机器人能够更加适应人类的工作,像人类一样完成工作,而不仅仅是反复运行固定的动作。二十世纪70年代,打印机的发明解决了书籍反复印刷的繁重工作。但是,打印机印下的每一个字都有着固定的样式,无法更改。同时,打印机印字往往产生不清晰的书写效果。对人类来说,文字能够很好地表明一个人的身份,在广泛使用打印机书写的时代,用水笔写出来的文字更加能够表现一个人的心意。因此,人们希望能够使用机器人对电子内容进行书写,保证书写内容清晰,同时带有每一个人的书写特。
本文介绍我们小组设计的写字机器人的相关软硬件内容。我们的目标是希望能够使用机器人设备,在向计算机中输入内容后,机器人能够用笔在纸上书写出相同的内容。由于汉字数量众多,不能够使用枚举法列出所有的汉字书写路径。因此,我们介绍基于汉字图片的路径产生方法。从汉字产生汉字图片,我们尝试过使用汉字点阵图,但是点阵汉字走样严重,无法像人类书写的汉字一样笔画顺畅。我们采用并且将在本文中介绍使用计算机系统中的矢量TTF字体库产生汉字图片。
二、机器人工作原理
写字机器人根据设想,只需要在水平面上进行工作,对竖直方向上的工作要求不高。因此,我们使用能够进行前后左右移动的十字交叉滑动杆,笔座安置在杆的末端。整个机器人的工作范围是杆长大小的方形区域,这样可以建立一个坐标系来唯一描述空间中的每一个位置。对于写字过程中的提笔和落笔动作,只需要控制笔尖离开纸面即可。
根据机器人的设想工作过程,我们对不同部位进行选材。电机和履带的组合可以解决滑动杆移动的功能,同时能够保证在一定的精度内实现位移大小的控制。使用两个电机共同运转可以实现笔到达工作平面内任意点位置。由于提笔与落笔要求低,使用舵机就可以实现功能。将舵机安置在笔座上控制提笔,使用橡皮筋恢复落笔状态。
两相42混合步进电机通过脉冲计数来决定转动距离,根据测量发现电机的精度能够达到0.22mm。通过脉冲的控制能够较为精确地实现电机到达任意处的位置。同时控制两个电机运转可以实现笔水平、垂直和任意角度直线运动。这些运动方式结
果能够模拟汉字的形状。舵机根据脉宽来调节转动的角度,由于要求不高,只需要设定一个合适的角度即可。这些器件都需要使用一块单片机进行工作控制。
写字机器人的工作方式与数控机床类似,单片机读取G代码,控制机器人各部分的执行工作。G代码主要是由几组简单的命令组成。在写字机器人的控制中,大部分只是用了G0、G1、G21、G90、M3和M5
等命令。使用记事本组合这些命令就可以产生相应的动作路径。
图  1 写字机器人
三、位图文件生成
写字机器人在工作过程中,只需要利用文字的轮廓信息,就可以进行汉字的书写。因此,使用汉字位图就能够很好的得到汉字的G代码绘制路径。获取汉字位图的方式主要有两种,使用汉字点阵图以及使用矢量字库。最初,我们使用点阵图的方式,从点阵字库中选取需要的文字,并生成位图文件。但是由于点阵位图太小,经过放大之后,汉字图像的走样现象严重。于是,我们试图尝试使用反走样技术,消除放大后图像走样的现象。使用反走样方法依然不能很好地解决走样的问题。我们想到了矢量图能够很好地避免放大和缩小带来的失真,同时,发现计算机系统中的汉字不论设置怎样的大小都能够保持较小的失真。我们考虑从计算机系统中获取相应的位图文件。通过查阅计算机系统字体的内容,发现系统字体文件夹中的TTF字库文件使用基础图形和位置描述汉字。计算机系统在显示汉字时,会将显示的内容放置在显存中。利用写位图文件的方式将汉字的图形写入位图文件中。先将位图文件的信息头写入文件,再将汉字的图像信息写入文件,生成汉字的位图文件。使用系统字库生成汉字图像的方式能够很好地实现任意汉字、字体以及大小的输出。
图 2 点阵图        图 3 矢量图
四、 位图生成G 代码
根据汉字的形状和机器人的工作过程可以发现,利用机器人描绘出汉字的轮廓就能够写出汉字。于是,我们尝试使用图像处理的技术获取汉字图像的轮廓。先将汉字图像转化成灰度图像,再将图像转化成二值图像。这样不仅能够保留图像中有用的信息,而且能够减少图像的信息。利用OpenCV 中的findContours 函数获取图像的轮廓点向量,得到特征点的位置。由于汉字多为直线,于是使用特征点就可以表示整个轮廓图形。得到这些轮廓点后,使用drawContours 函数绘制出轮廓。根据特征点绘制的轮廓图像来调整findContours 函数的参数,使得轮廓检测获得最好的结果。考虑轮廓的表示方法和G 代码的相关性,发现轮廓的特征点表示与G 代码文件内容相似。使用检测的轮廓点依次作为汉字绘制路径的特征点,依次用直线对轮廓点进行连接。由于轮廓检测的结果是闭合路径,还需要将最后一个轮廓点与第一个轮廓点进行连接形成闭合路径。通过写文件的方式,将G1命令与轮廓点的坐标进行组合,生成书写汉字路径的命令。这样产生的路径文件能够通过grblController 软件向机器发送相应的命令,实现将高级轨迹规划内容转换成低级轨迹规划内容。实现机器人对轮廓的绘制,书写出汉字。
图 4 位图    图 5 轮廓图    图 6 路径图
五、 书写效果
我们使用软件生成了不同字体和大小的G 代码文件,将路径文件发送给机器人。机器人绘制出相应的汉字。将机器人绘制的汉字与图像进行对比,绘制效果良好。但是由于机器人工作的精度,产生了一定的误差。同时,机器人的绘制仅仅描绘了汉字轮廓,并没有按照汉字的笔画顺序。
图7 宋体
图8 楷体中文写代码软件
六、未来方向与总结
机器人在使用中,虽然可以不断改变字体,但是与每个人的手写风格还有较大的差距。未来希望可以使用模板匹配的方法,拆解汉字为笔画集合,利用笔画顺序书写汉字。这样不仅可以准确的书写汉字,而且还能够示教如何正确书写。同时,使用机器学习的方法对手写体汉字笔画进行学习,获得使用者的书写风格。再利用汉字产生的笔画顺序完成汉字的书写。通过机器学习的方法,可以使得机器人书写与用户更加接近,更好代替使用者书写。写字机器人也可以在未来使用语音识别技术,根据用户的语音输入,将使用者的书写风格配合语音内容,完成自动书写。这样的写字机器人可以有效地增强实用性,让生活更加得便捷。
此项目距离实际应用还有很大的差距,需要不断完善其功能。同时需要配合人工智能的相关方法,让机器人能够更加适应人类的工作方式,突显出与非智能化器械的优势,使得写字机器人的实用性更强。感谢项目过程中老师和同学给予的许多帮助和有效的建议,让项目完成的更好。