目录
目录README.md

基于机械臂视觉识别的非侵入式 GUI 界面自动化探索项目文档

小组成员信息

姓名 学号 联系方式
孔博 201250122 15004653507
沈嘉絮 201250126 15336870043
蒋佳如 201250177 18993193749
杨荷洁 201250158 13883229160

一、目标识别模块:

1.运行要求:

opencv3.4.2
python3.5
Pandas

2.具体实现:

   在本模块中,我们对机械臂拍摄的待测设备的照片进行分析,识别其中的控件,并返回给机械臂可以点击的坐标。
   实验中的控件识别采用UIED。由于我们只需要识别图中的图标,因此我们仅使用了UIED中的一部分功能,在代码中的设置如下:
1.png 图1:UIED.run_single.py中的设置
   首先我们对待测设备的屏幕截图进行分析,检测结果如下。观察图片后发现,代码能较好的识别图中的图标,但会将图片底下的文字与图标识别为两个控件,并且由于机械臂的精度限制,我们筛选其中较大的图标进行点击操作。
tmp1.jpg 图2:UIED识别待测设备截图的结果
   但在实际操作中,由于机械臂拍摄角度问题,我们得到的图片是变形的,不易在平板中进行定位。故我们写了透视函数,定位机械臂拍摄照片中待测设备的四个顶点(以像素定位),将其转化为类似于待测设备截图的新图片。
solvePic.png 图3:透视函数

函数运行结果如下:
tmp6.jpg 图4:机械臂拍摄图片
warped.jpg 图5:做过透视之后的图片
之后使用UIED对图片进行分析,分析结果如下:
warped.jpg 图6:UIED处理后的图片
   根据UIED识别后的json文件,我们写了toArray函数,定位每个可识别的控件,并返回一个列表,其中每个点位对应机械臂的一个动作。若一个控件中包含多个机械臂可点击的点位,则计算每个点位与该控件中心坐标的距离,只返回离中心最近的点位。

二、操控机械臂模块:

1.运行要求:

   机械臂处于开机状态,操控设备与机械臂在同一WIFI环境下,机械臂所有kernel均需关闭。

2.具体实现:

1)改变机械臂自由度对放置在水平面上的平板进行拍照,拍摄时保证平板的横向边与机械臂的底座横向边平行,将拍摄生成的图片交给目标识别模块。
   ScreenCapture(picName):
      参数:存放拍摄图片的路径
      功能:抓拍设备当前画面,调整图片大小,并将图片存放在传入的路径中
      返回值:无返回值
2)目标识别模块在对图片进行透视、识别和转化后,将点位序号的结果以列表形式呈现,调用move()函数,对机械臂的自由度进行调整,夹持着触控笔点向对应的点位。
   move(numberList):
      参数:识别到的点位序号
      功能:随机抽取列表中的一个点位序号,并根据点位的参数进行机械臂调用。调用 前会进行机械臂的复位归中
      返回值:无返回值
3)测试策略:
   我们采取了Monkeys随机测试,即通过Monkey程序模拟用户触摸屏幕、滑动、 按键等操作来对设备上的程序进行压力测试,检测程序多久的时间会发生异常。在每次识别时,随机选取其中一个点击,测试程序是否异常。

3.总体流程

1)将机械臂复位归中
2)进入随机测试阶段
   调用screenCapture()函数,对画面进行抓拍,生成”picX.jpg”文件并存储在指定路径中(路径通过参数传递)
   调用solvePic()函数,对A中生成的图片进行透视变换,生成新的图片”newpicX.jpg”文件,并存储在指定路径中(路径通过参数传递)
   调用UIED.run_single.recognize()函数,对B中的图片进行控件识别,并生成”newpicX.json”文件,存储在指定路径中(路径通过参数传递)
   调用toArray()函数,根据C中识别到的json文件,处理成设定好的点位序号list并返回
   调用move()函数,传入D中的点位序号list,move()中随机抽取一个点位序好,并根据序号点击对应点位
   进入下一轮随机测试

三、运行方式:

   我们按照需求制作了前端界面,如图,点击图中run按钮后机械臂就可以开始上述测试。但由于机械臂突发状况,我们无法对该功能进行测试。
image.png    在测试时,我们使用xshell7(需要xmanager7)连接到机械臂的主机192.168.10.121,用户名为Dofbot,密码为yahboom,只有机械臂与操控机械臂的电脑处于同一wifi下才能建立连接。建立连接之后,进入/home/dofbot/Dofbot/GUITesting目录,并输入python GUITesting.py即可运行。
   运行结果如图:(以第一轮为例,[2,3,5,4,6,9,12,13,14,10,11,17]为图像识别到控件图标的点位序列,point2为在此序列中随机选取的一个点)
image.png

邀请码
    Gitlink(确实开源)
  • 加入我们
  • 官网邮箱:gitlink@ccf.org.cn
  • QQ群
  • QQ群
  • 公众号
  • 公众号

©Copyright 2023 CCF 开源发展委员会
Powered by Trustie& IntelliDE 京ICP备13000930号