本发明属于自动化测试与机器人技术相结合,具体为一种基于airtest和树莓派机器人云台实现ar产品漂移率测试的方法。
背景技术:
1、随着ar(增强现实)技术的飞速进步,ar产品已经渗透到娱乐、教育、医疗、工业制造等多个领域,极大地丰富了人们的生活和工作方式。然而,随着这些产品的普及和功能的增强,其稳定性和用户体验成为了用户最为关心的问题之一。其中,ar产品的漂移率问题尤为突出,它指的是在用户使用ar产品时,虚拟图像与现实场景之间出现的偏移或错位现象,严重影响了用户的沉浸感和操作精度。传统的ar产品漂移率测试方法主要依赖于人工操作,测试人员需要模拟各种使用场景和动作,观察并记录虚拟图像与现实场景的匹配程度。这种方法不仅耗时费力,而且测试结果容易受到测试人员主观判断和操作误差的影响,导致测试结果的准确性和可靠性难以保证。为了解决上述问题,提高ar产品的质量和可靠性,本专利提出了一种基于airtest和树莓派机器人云台的自动化测试方法,专门用于测试ar产品的漂移率。这种方法利用airtest的跨平台ui自动化测试框架和图像识别原理,结合树莓派机器人云台的精确控制能力,实现了对ar产品漂移率的自动化测试。
技术实现思路
1、本发明的目的在于提供一种基于airtest和树莓派机器人云台实现ar产品漂移率测试的方法,以解决上述背景技术中提出的问题。
2、为了实现上述目的,本发明提供如下技术方案:一种基于airtest和树莓派机器人云台实现ar产品漂移率测试的方法,该优化方法的步骤为:
3、s1,工程文件中引入poco打包;通过打包过程将相关的库文件和代码一起打包成可分发或可执行的程序;
4、s2,自动化脚本基础环境准备;准备python3、micropython的环境。python中引入airtest api和poco api,micropython中安装mpremote;
5、s3,查看漂移率;通常用于评估系统或设备的性能、稳定性和准确性,并为优化和改进提供依据。
6、优选地,所述s2下分为初始化android设备、唤起手机桌面、启动app、进入测试功能点、提升图片质量和采集图片、指令唤起机器人云台转动并复位、对比照片相似度、输出对比结果;
7、a1,初始化android设备;通过远程连接的方式连接android设备,代码如下:auto_setup(__file__,logdir="d:/airtest/log",devices=["android://127.0.0.1:5037/a6a34ac6"]);
8、a2,唤起手机桌面;通过adb的shell命令按电源键和菜单键,代码如下:
9、shell("input keyevent 26")
10、shell("input keyevent 82");
11、a3,启动app:初始化android驱动,启动app后初始化poco的驱动,代码如下:
12、from poco.drivers.android.uiautomation import androiduiautomationpoco
13、poco_android=androiduiautomationpoco(use_airtest_input=true,screenshot_each_action=false)
14、start_app('com.cubic.vicar')#根据app的包名启动app
15、frompoco.drivers.unity3dimportunitypoco
16、poco=unitypoco();
17、a4,进入测试功能点:根据app的功能使用airtest的方法编写自动化脚本进入测试场景,代码如下:
18、loginxg.login(poco_android)
19、aodi_banner="com.cubic.vicar:id/xg_look_car_card_image"
20、poco_android(aodi_banner).click()
21、点击屏幕中间位置
22、w,h=device().get_current_resolution()
23、touch([0.5*w,0.5*h])
24、homepage_scanimage="sping3"
25、poco(homepage_scanimage).click()
26、工具类的方法:
27、from poco.drivers.android.uiautomation importandroiduiautomationpoco
28、from poco.drivers.unity3d import unitypoco
29、from airtest.core.api import*
30、import verifycodeutil
31、class loginxg():
32、def login(poco_android:androiduiautomationpoco):
33、login_phone="com.cubic.vicar:id/login_edit_text_phone"
34、poco_android(login_phone).click()
35、poco_android(login_phone).set_text("18210233933")
36、keyevent('back')
37、login_agreecontent="com.cubic.vicar:id/get_sms_agreement_check"
38、sleep(2)
39、poco_android(login_agreecontent).click()
40、sleep(2)
41、login_smscodebutton="com.cubic.vicar:id/login_btn_getsms"
42、poco_android(login_smscodebutton).click()#点击获取验证码
43、verify_code=verifycodeutil.getverifycode()
44、ifverify_code:
45、sms_code="com.cubic.vicar:id/login_edit_text_sms"
46、poco_android(sms_code).set_text(verify_code)
47、sleep(3)
48、选择厂商
49、check_factory_btn='com.cubic.vicar:id/xg_look_car_select_factory';
50、a5,提升图片质量,采集图片:设置截图的图片清晰度,截取设备截图,代码如下:
51、st.snapshot_quality=98#提升图片质量
52、snapshot(filename='d:\pythonproject\image\\testaodi.jpg',msg="")
53、originimg='d:\pythonproject\image\\testaodi.jpg'
54、a6,指令唤起机器人云台转动并复位;通过识别输出内容,确定机器人云台旋转完毕并已复位后,再次采集图片,代码如下:
55、ifstr1.strip()=='done':
56、st.snapshot_quality=98#提升图片质量
57、snapshot(filename='d:\pythonproject\image\\resetimg.jpg',msg="")
58、resetimg='d:\pythonproject\image\\resetimg.jpg';
59、a7,对比照片相似度;对比图片相似度:使用均值哈希算法计算图片相似度,代码如下:
60、score=imagecomparisonutil.imgcomparison(originimg,resetimg)
61、工具类方法:
62、def imgcomparison(originimg,testimg):
63、img1=cv2.imread(originimg)
64、img2=cv2.imread(testimg)
65、hash1=imagecomparisonutil.ahash(img1)
66、hash2=imagecomparisonutil.ahash(img2)
67、n=imagecomparisonutil.cmphash(hash1,hash2)
68、print('均值哈希算法相似度:',n)
69、returnn;
70、a8,输出对比结果;在进行照片相似度对比或其他类型的数据对比后,系统或算法给出的关于对比对象的相似程度或差异程度的量化或定性描述。
71、优选地,所述a6使用的步骤如下;
72、b1,唤起机器人云台;通过其强大的软件系统和特点,机器人平台能够支持各种复杂的机器人应用,并推动相关领域的自动化和智能化发展;
73、b2,发送pwm脉冲信号:设置引脚位置、转动频率,通过初始位置、信号范围及步长设定控制舵机旋转90度,通过发送pwm脉冲信号舵机控制舵机转动,在程序中使用循环结构,不断更新pwm信号的占空比,以实现连续的舵机控制,循环结束时舵机旋转90度,更新舵机位置为初始位置,控制舵机复位,micropython的代码如下:
74、servo.py
75、importtime
76、from machine import pin,pwm
77、s0=pwm(pin(4))
78、#set the pwm frequency.
79、s0.freq(50)#20ms
80、s0.duty_u16(0)
81、for x in range(1):
82、for iin range(0,7501,100):
83、s0.duty_u16(i)
84、time.sleep(0.04)
85、s0.duty_u16(0)
86、print("done");
87、b3,远程启动机器人云台:通过mpremote指令远程控制机器人启动,指令中指定端口及发送脉冲信号的脚本即可实现远程控制舵机旋转,发送信号脚本执行完成输出指定内容,
88、p1=os.popen(r"mpremote connect com4 run c:\users\liyanan\desktop\pico_servo_driver_code\python\\servo.py")
89、str1=p1.read()#读取信号发送完成的输出内容
90、sleep(10);
91、b4,舵机角度复位;舵机角度复位是指将舵机恢复到其初始位置或预设位置的过程。
92、优选地,所述b1使用的步骤如下;
93、c1,设备准备:机器人组装成功后,将测试手机物理安装在云台上,可以跟随舵机旋转,需准备的设备如下:
94、树莓派单板计算机:选择适合项目需求的树莓派型号;
95、电源适配器:为树莓派提供稳定的电源供应;
96、连接线:通过usb接口与电脑连接;
97、执行器:有限旋转舵机(输出旋转角度),舵机选择时需选取旋转180度的有限旋转舵机,此类舵机可以控制旋转角度,符合方案需求;
98、连接器和电路板:gpio扩展板,需要连接器和电路板来连接传感器、执行器和树莓派。
99、c2,启动树莓派机器人:传感器通过接口连接至树莓派的gpio引脚,本方案中使用第四个引脚,单板计算机通过usb接口与电脑连接,接通电源,打开单板计算机的开关。
100、airtest:是一款基于python的ui自动化测试框架,主要用于移动端app的自动化测试。它可以模拟用户的操作,实现自动化的测试流程,包括点击、滑动、输入等操作,还可以对界面元素进行识别和定位,以及进行断言和截图等操作,非常方便实用。它支持多种移动端平台,包括android、ios、unity等,同时还支持多种测试框架,包括unittest、pytest等,可以满足不同项目的需求。
101、unity:是一款跨平台的2d和3d游戏引擎,由unity technologies研发,可开发跨平台的视频游戏、并延伸于基于webgl技术的html5网页平台,以及tvos、oculus rift、arkit等新一代多媒体平台。除可以用于研发电子游戏之外,unity还广泛用作建筑可视化、实时三维动画等类型互动内容的综合型创作工具。
102、ar:全称为增强现实(augmented reality),是一种将虚拟信息融合到现实世界中的技术。它通过识别现实世界中的物体或场景,然后将虚拟信息叠加到现实世界中,使用户可以看到一个虚实结合的场景。
103、poco:是一个专门用于unity3d和cocos2d游戏的自动化测试框架。它提供了一组易用的api,可以用于定位游戏界面的各个元素,并与它们进行交互。poco支持在unity编辑器和真实设备上进行自动化测试,并提供了许多功能,如模拟点击、滑动、输入文本、断言等。你可以使用poco来编写自动化测试脚本,对unity3d产品的各种功能进行测试。
104、adb:全称为android debug bridge,是一种用于与android设备通信的命令行工具。通过adb,开发者可以在pc端与android设备进行连接,并且可以执行各种命令,例如安装应用、卸载应用、调试应用、复制文件等等。
105、micropython:是一种精简版的python3解释器,专门用于嵌入式系统和微控制器。它可以在资源受限的环境下运行,适用于一些小型的物联网设备和传感器。micropython支持python 3的大部分语法和标准库,同时还提供了一些专门针对嵌入式系统的库,例如gpio、i2c、spi等。这些库可以方便地与硬件交互,实现各种功能。
106、mpremote:是一款用于远程控制micropython设备的工具。它可以通过网络连接到micropython设备,实现远程控制和调试。
107、树莓派机器人云台:树莓派机器人云台是一种基于树莓派的机器人控制系统,用于控制机器人的运动和视觉。它通常包括一个云台,用于控制机器人的视角,以及一个树莓派控制板,用于控制机器人的运动。它可以方便地进行二次开发和定制,适用于各种类型的机器人和应用场景。
108、舵机:舵机是一种常见的电机,用于控制机械臂、机器人和模型飞机等设备的运动。舵机通常由电机、减速器、控制电路和位置反馈器组成。舵机的应用非常广泛,例如机器人的关节控制、航模的方向控制、摄像头云台的控制等。
109、pwm:pwm(pulse width modulation)脉冲信号是一种常用的模拟信号调制技术,用于控制电路的输出功率和电机的转速等。pwm信号由一系列矩形脉冲组成,其中脉冲宽度和周期是可以调节的。pwm信号的应用非常广泛,例如电机控制、led亮度调节、音频信号合成等。在实际应用中,通常需要使用专门的pwm控制电路和程序,可以通过各种开源硬件和软件进行实现。
110、gpio:英语全称general-purpose input/output,通用型之输入输出的简称,功能类似8051的p0—p3,其接脚可以供使用者由程控自由使用,pin引脚依据现实情况可作为通用输入(gpi)或通用输出(gpo)或通用输入与输出(gpio)。
111、自动化测试:一般是指软件测试的自动化,软件测试就是在预设条件下运行系统或应用程序,评估运行结果,预先条件应包括正常条件和异常条件。自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程。
112、本发明的有益效果如下:
113、本发明通过本方案提供了实现通过物理移动设备并复位的方式对ar产品漂移率的自动化测试的方法,同时可广泛适用于各种ar产品的漂移率测试,具有较高的通用性和实用性,并且采用自动化测试方法,减少了人工干预和测试时间,提高了测试效率。
1.一种基于airtest和树莓派机器人云台实现ar产品漂移率测试的方法,其特征在于:该优化方法的步骤为:
2.根据权利要求1所述的一种基于airtest和树莓派机器人云台实现ar产品漂移率测试的方法,其特征在于:所述s2下分为初始化android设备、唤起手机桌面、启动app、进入测试功能点、提升图片质量和采集图片、指令唤起机器人云台转动并复位、对比照片相似度、输出对比结果;
3.根据权利要求2所述的一种基于airtest和树莓派机器人云台实现ar产品漂移率测试的方法,其特征在于:所述a6使用的步骤如下;
4.根据权利要求2所述的一种基于airtest和树莓派机器人云台实现ar产品漂移率测试的方法,其特征在于:所述b1使用的步骤如下;