基于FPGA的视觉素描机器人

东南大学创客空间作品 | 机器人

michael080808   项目发起人  09-18

我们制作了了一个基于FPGA的视觉素描机器人,该机器人可以通过摄像头等视觉传感器进行图像的捕捉,或者直接输入拍摄好的图像,之后对于进行图像处理,将一张实体图处理为素描图,再通过FPGA控制机械臂将素描画出。

项目详情

项目创意灵感
这是我们参与2016年东南大学PLD竞赛的作品,当时的想法是就是想一起实现一个自动控制的素描机器人。
设计特色创新
在这个机器人中,摄像头模拟了人的眼睛,图像处理系统模拟了人的大脑对于所看到的图像进行处理,fpga模拟了人的神经中枢,对肢体进行控制,而机械臂部分则模拟了人的手臂,在fpga的控制下,将素描图画出。

图像处理我们借助Opencv,将彩色图处理为黑白,之后根据分层决定阈值,并进行二值化处理,通信借助窗口,机电控制以及总控制使用fpga。
系统原理功能
1. 系统结构框图:见图2.

2. 图像处理部分:
利用OPENCV直接将彩三色通道转为单色通道,将彩色图片转为黑白图片。
转换公式:Y'= 0.299*R' + 0.587*G' + 0.114*B'
U'= -0.147*R' - 0.289*G' + 0.436*B' = 0.492*(B'- Y')
V'= 0.615*R' - 0.515*G' - 0.100*B' = 0.877*(R'- Y')
R' = Y' + 1.140*V'
R' = Y' + 1.140*V'
G' = Y' - 0.394*U' - 0.581*V'
B' = Y' + 2.032*U'
根据层数设定阈值,根据阈值将图片分为待画部分和空白部分(见图3)。

3. 机电控制部分
根据处理后的阈值图像,利用线段树和几何运算方式规划路径,并生成串口控制信息,将控制信息逐条至FPGA上,当FPGA返回0xed时表示,FPGA正在控制电机进行绘制。当返回oxfd时,表示该歩运动完成发送下一条指令,直至所有指令发送完成。

4. 机械控制系统
在电信号转换为这个机器运动信号的过程当中,我们使用了corexy架构,但是我们对原有的架构进行了更改使用了同一平面内的两个轴线平行的电机进行差速控制,优点是将电机放在了一个较低的位置上有效降低了整机的重心提高了笔尖的灵敏度以及降低了悬梁惯性。同时不同方向的移动,有两个电机共同承担,每个电机受力较小,可以有效的提高笔尖移动的速度。下面给出了两个电机差速控制的公式。

与上一次的毛笔书法不同,硬笔书写以及绘图对精度的要求更高,同样的,对于笔尖对纸面压力也有更高的要求。我们使用了舵机_弹簧结构实现了恒定笔力的控制,舵机负责控制笔尖是否接触纸面,弹簧则用于提供稳定的笔力,对于中性笔,钢笔以及水笔而言,这一结构可以完美的控制笔力。对于铅笔而言,考虑到铅芯磨损,我们加入了限位开关和进铅舵机,用于实现铅笔的自动书写及绘画。同时我们制作了额外的自动换笔机构用于多笔协作,例如工程制图需要不同粗细的线条,彩色绘画需要不同颜色的彩笔。

总而言之,FPGA控制了两个步进电机用于差速控制平面内移动,一个舵机用于控制笔尖接触纸面与否,还有五个限位开关,x轴和y轴各两个用于机械调零并确定移动范围,笔尖一个用于判定铅笔是否损耗到一定程度。对于自动笔库,FPGA需要控制一个额外的步进电机,和用于定位的码盘及编码器。
完成情况概述
我们已经基本达到预计设想,图像处理部分,机电控制部分,机械部分等各个分块的功能均得到了实现。图像处理部分可以顺利的将实体图转化为二值化的空白图以及待画图,而机械臂也能够根据FPGA的指令,画出指定图像。

只是在整体的过成中我们仍存在一些问题,这也是需要我们不断调试的。
收获感悟分享
这一项目是我们参加2016年东南大学PLD竞赛的作品项目。在那段时间内,我们从一开始的构想到搭建机械结构,再到编程,调试,犯过错误,也熬过夜。由于机械结构搭建上出现的延误同时也是没有考虑到国产轴承的质量问题,导致我们在后期编程及调试上时间相当吃紧,为此,我们也并没有少熬夜,之后再做这类比赛时,我们会更加注重时间的规划,会尽可能早的完成机械结构的搭建,将尽可能多的时间留给软件调试。争取比这次做的更好。
项目采用平台:

我要评价