一种机器人的测试系统及测试方法
技术领域
本发明属于机器人技术领域,特别涉及机器人的测试系统及测试方法。
背景技术
机器人是自动执行工作的机器装置。它既可以接受人类指挥,又可以运行预先编排的程序,也可以根据以人工智能技术制定的原则纲领行动。它的任务是协助或取代人类工作的工作,例如生产业、建筑业,或是危险的工作。
机器人一般由执行机构、驱动装置、检测装置和控制系统和复杂机械等组成,其控制系统分别与执行机构、驱动装置、检测装置之间进行串口通信连接。其控制系统能否正常运行、以及控制系统中处理器的接口数据是否正常,均关系到机器人能否正常工作。
传统地,测试处理器的接口数据是否正常,是将处理器上的串口接口与机器人上其他模块之间串口接口断开物理连接,并将处理器的串口接口与测试终端上的串口接口进行串口通信连接。
这种传统测试方式会改变机器人上硬件结构之间的连接关系,给测试带来不便。
发明内容
本发明提供的技术方案如下:
本发明提供一种机器人的测试系统,包括测试终端、与所述测试终端无线通信连接的机器人,所述机器人上的中央控制器运行第一串口脚本时,实现步骤:读取所述中央控制器的第一数据消息,并发布所述第一数据消息到第一话题;所述测试终端上运行测试脚本时,实现步骤:订阅所述第一话题以接收所述第一数据消息;并分析所述第一数据消息以完成测试。
进一步,所述测试终端上运行测试脚本时,还实现步骤:发布控制消息至第一控制话题;所述中央控制器上运行工控程序时,实现步骤:监听所述第一控制话题以接收所述控制消息;并发送所述控制消息对应的控制指令。
进一步,所述中央控制器上运行所述第一串口脚本时,还实现步骤:接收并转发所述控制指令;所述中央控制器上运行第二串口脚本时,实现步骤:接收并转发所述控制指令;所述机器人上电机控制器接收所述控制指令,并执行所述控制指令对应的操作后,反馈运行结果数据;其中,所述中央控制器与所述电机控制器之间建立物理串口连接;所述中央控制器的物理串口名称挂载至第一串口脚本,所述电机控制器的物理串口名称挂载至第二串口脚本。
进一步,所述中央控制器上运行第二串口脚本时,还实现步骤:读取并转发所述电机控制器的第二数据消息,所述第二数据消息包括运行结果数据;所述中央控制器上运行第一串口脚本时,还实现步骤:接收所述第二数据消息后,发布所述第一数据消息到第一话题。
进一步,所述中央控制器上运行第二串口脚本时,实现步骤:读取所述机器人上电机控制器的第二数据消息,并发布所述第二数据消息到第二话题;所述测试终端上运行所述测试脚本时,还实现步骤:订阅所述第二话题以接收所述第二数据消息;并分析所述第二数据消息以完成测试。
进一步,所述中央控制器上运行所述第一串口脚本时,还实现步骤:接收所述控制指令,并发布所述控制指令到第二控制话题;所述测试终端上运行所述第二串口脚本时,还实现步骤:订阅所述第二控制话题以接收所述控制指令;所述测试终端上运行所述第二串口脚本时,还实现步骤:以串口通信方式或串口转无线通信方式发送所述控制指令;所述机器人上电机控制器接收所述控制指令,并执行所述控制指令对应的操作后,反馈运行结果数据;其中,所述测试终端与所述电机控制器之间建立串口通信或无线通信连接;所述中央控制器的物理串口名称挂载至第一串口脚本。
进一步,所述测试终端上运行第二串口脚本时,还实现步骤:接收所述第二数据消息,并发布所述第二数据消息至控制反馈话题;所述电机控制器以串口通信方式或串口转无线通信方式发送所述第二数据消息;所述第二数据消息包括运行结果数据;所述中央控制器上运行第一串口脚本时,还实现步骤:订阅所述控制反馈话题以接收所述第二数据消息后,发布所述第一数据消息到第一话题。
进一步,所述测试终端上运行第二串口脚本时,还实现步骤:接收并转发所述机器人上电机控制器的第二数据消息;所述电机控制器以串口通信方式或串口转无线通信方式发送所述第二数据消息;所述测试终端上运行所述测试脚本时,还实现步骤:接收所述第二数据消息;并分析所述第二数据消息以完成测试。
本发明还提供一种机器人的测试方法,包括以下步骤:S60、读取机器人上中央控制器的第一数据消息,并发布所述第一数据消息到第一话题;S70、订阅所述第一话题以接收所述第一数据消息;并分析所述第一数据消息以完成测试。
进一步,在步骤S60之前还包括:S01、发布控制消息至第一控制话题;所述控制消息用于控制所述机器人上中央控制器向电机控制器发送控制指令;S02、监听所述第一控制话题以接收所述控制消息,并发送所述控制消息对应的控制指令;所述控制指令用于控制所述电机控制器运行。
进一步,在步骤S60之前还包括:S10、接收并向所述中央控制器转发所述控制指令;S20、接收并向所述电机控制器转发所述控制指令;S30、接收所述控制指令,并执行所述控制指令对应的操作后,反馈运行结果数据。
进一步,在步骤S60之前还包括:S40、读取并转发所述电机控制器的第二数据消息,所述第二数据消息包括运行结果数据;S50、接收所述第二数据消息后,执行步骤S60。
进一步,还包括以下步骤:S61、读取所述机器人上电机控制器的第二数据消息,并发布所述第二数据消息到第二话题;S71、订阅所述第二话题以接收所述第二数据消息;并分析所述第二数据消息以完成测试。
进一步,在步骤S60之前还包括:S11、接收所述控制指令,并发布所述控制指令到第二控制话题;S21、订阅所述第二控制话题以接收所述控制指令;S22、以串口通信方式或串口转无线通信方式发送所述控制指令;S31、接收所述控制指令,并执行所述控制指令对应的操作后,反馈运行结果数据。
进一步,在步骤S60之前还还包括:S41、以串口通信方式或串口转无线通信方式发送所述第二数据消息;所述第二数据消息包括运行结果数据;S42、接收所述第二数据消息,并发布所述第二数据消息到控制反馈话题;S51、订阅所述控制反馈话题以接收所述第二数据消息后,执行步骤S60。
进一步,还包括以下步骤:S62、以串口通信方式或串口转无线通信方式发送所述机器人上电机控制器的第二数据消息;S63、接收并转发所述第二数据消息;S71、接收所述第二数据消息;并分析所述第二数据消息以完成测试。
与现有技术相比,本发明提供的机器人的测试系统及测试方法,具有以下有益效果:
1)、本发明摈弃机器人上中央控制器与测试终端之间串口连接并通信后,对中央控制器进行测试的传统测试方法。本发明在不改变机器人上硬件结构之间连接关系的情况下,测试终端直接通过订阅第一话题来接收第一数据消息;中央控制器只要在读取第一数据消息后,发布到第一话题;从而对中央控制器进行测试。无需测试终端在发送测试请求后,中央控制器才反馈发送第一数据消息;从而简化了测试流程。
2)、本发明还摈弃机器人上电机控制器与测试终端之间串口连接并通信后,对电机控制器进行测试的传统测试方法。本发明在不改变机器人上硬件结构之间连接关系的情况下,当第一串口脚本、第二串口脚本均被中央控制器运行时,测试终端直接通过订阅第二话题来接收第二数据消息;电机控制器只要在读取第二数据消息后,发布到第二话题;从而对电机控制器进行测试。无需测试终端在发送测试请求后,电机控制器才反馈发送第二数据消息;从而简化了测试流程。
3)、本发明基于测试终端对中央控制器、电机控制器时,是以发布消息至话题、以及订阅话题来接收数据的方式,进行数据的传输。当中央控制器向电机控制器发送控制消息时,当第一串口脚本、第二串口脚本均被中央控制器运行时,工控程序发送控制消息至第一串口脚本,第一串口脚本转发控制消息至第二串口脚本,第二串口脚本转发控制消息至电机控制器,均是以串口通信方式传输控制消息;从而对电机控制器进行控制。
4)、本发明当第一串口脚本被中央控制器运行时,以及第二串口脚本被测试终端运行时,电机控制器以串口转蓝牙方式发送第二数据消息,第二串口脚本接收并转发第二数据消息,测试脚本通过本地数据通信方式接收第二数据消息,从而对电机控制器进行测试。
5)、本发明当第一串口脚本被中央控制器运行时,以及第二串口脚本被测试终端运行时,工控程序以串口通信方式发送控制消息至第一串口脚本,第一串口脚本发布控制消息到第三话题;第二串口脚本通过订阅第三话题来接收控制消息;在接收到控制消息后,以串口转蓝牙方式向电机控制器发送控制消息;从而对电机控制器进行控制。
附图说明
下面将以明确易懂的方式,结合附图说明优选实施方式,对一种机器人的测试系统及测试方法的上述特性、技术特征、优点及其实现方式予以进一步说明。
图1是本发明一种机器人的测试系统的组成结构示意图;
图2是本发明另一种机器人的测试系统的组成结构示意图;
图3是本发明一种机器人的组成结构示意图;
图4是本发明一种机器人的测试方法的流程示意图;
图5是本发明另一种机器人的测试方法的流程示意图;
图6是本发明再一种机器人的测试方法的流程示意图;
图7是本发明又一种机器人的测试方法的流程示意图;
图8是本发明又又一种机器人的测试方法的流程示意图。
附图标号说明:
10、测试终端,20、中央控制器,30、电机控制器。
具体实施方式
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对照附图说明本发明的具体实施方式。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图,并获得其他的实施方式。
为使图面简洁,各图中只示意性地表示出了与本发明相关的部分,它们并不代表其作为产品的实际结构。另外,以使图面简洁便于理解,在有些图中具有相同结构或功能的部件,仅示意性地绘示了其中的一个,或仅标出了其中的一个。在本文中,“一个”不仅表示“仅此一个”,也可以表示“多于一个”的情形。
如图1、图4所示,根据本发明的一个实施例,一种机器人的测试系统,包括测试终端10、与所述测试终端10无线通信连接的机器人,所述中央控制器20的物理串口名称指定为第一串口名称;
所述机器人上的中央控制器20存储并运行第一串口脚本时,实现步骤:读取所述中央控制器20的第一数据消息,并发布所述第一数据消息到第一话题;
所述测试终端10上存储并运行测试脚本时,实现步骤:订阅所述第一话题以接收所述第一数据消息;并分析所述第一数据消息以完成测试。
具体的,目前机器人除了包括中央控制器20、电机控制器30(中央控制器20安装在X86工控板上,电机控制器30安装在电机控制板上)外,还包括电机驱动、避障等模块,电源管理系统,开关、显示等模块,传感器检测模块,超声、红外等各种传感器,头部显示模块,胸口应用界面,打印机等其他模块,服务员手持PAD、无线通讯模块(路由器)等,如图3所示。其中,机器人利用无线通信模块与其他无线通信模块进行无线通讯,以接入因特网;或者与服务员手持PAD进行无线通讯。无线通信模块通过RJ45接口与头部显示,胸口应用界面,打印机等其他模块、中央控制器20网络之间通信连接。中央控制器20通过串口与电机控制器30、电源管理系统、传感器检测模块之间通信连接。电机控制器30通过串口与电机驱动、避障等模块之间通信连接,电源管理系统通过串口与开关、显示等模块之间通信连接,传感器检测模块通过串口与超声、红外等各种传感器之间通信连接。
机器人中的模块分别采用了RJ45接口(网口)、串口两种通讯方式,并且基于RJ45接口采用ROS节点通讯方式。为了实现不同通信协议之间模块进行协议数据的发送和接收的协议,采用打桩方式。当测试终端10想要测试中央控制器20的串口数据是否正常时,测试终端10包括个人计算机、计算机等;其打桩方式测试过程具体如下:
中央控制器20的物理串口名称挂载至第一串口脚本;在中央控制器20上运行含有串口名称的第一串口脚本,第一串口脚本作为一个ROS节点,也可以称为虚拟串口脚本,第一串口脚本被中央控制器20运行时,读取第一串口名称对应串口处的第一数据消息(串口数据);发布第一数据消息(串口数据)到第一话题(串口测试话题);第一数据消息除了是指中央控制器的串口数据外,还可以是指中央控制器的其他数据。
在测试终端10上运行测试脚本,测试脚本主要采用python编程,还可以采用c++编程,测试脚本作为另一个ROS节点,被测试终端10运行时,订阅第一话题(串口测试话题),以接收第一数据消息(串口数据);在接收到第一数据消息(串口数据)后,分析第一数据消息(串口数据)是否符合预设条件,从而完成测试。
ROS节点:一个节点就是一个可执行程序,它使用ROS可以和其他节点进行通信。
消息(Message):当在一个话题上,发布或订阅时所使用的ROS的数据类型。
话题(Topic):节点可以在一个话题上发布消息,同样也可以订阅一个话题来接收消息。
如图1、图5所示,根据本发明的另一个实施例,一种机器人的测试系统,包括测试终端10、与所述测试终端10无线通信连接的机器人,所述中央控制器20与所述电机控制器30之间建立物理串口连接;所述中央控制器20的物理串口名称指定为第一串口名称;所述电机控制器30的物理串口名称指定为第二串口名称。
所述测试终端10上运行测试脚本时,还实现步骤:发布控制消息至第一控制话题;
所述中央控制器20上运行工控程序时,实现步骤:监听所述第一控制话题以接收所述控制消息;并发送所述控制消息对应的控制指令。
所述中央控制器20上运行所述第一串口脚本时,还实现步骤:接收并转发所述控制指令;
所述中央控制器20上运行第二串口脚本时,实现步骤:接收并转发所述控制指令;
所述机器人上电机控制器30接收所述控制指令,并执行所述控制指令对应的操作后,反馈运行结果数据;
其中,所述中央控制器20与所述电机控制器30之间建立物理串口连接;所述中央控制器20的物理串口名称挂载至第一串口脚本,所述电机控制器30的物理串口名称挂载至第二串口脚本。
所述中央控制器20上运行第二串口脚本时,还实现步骤:读取并转发所述电机控制器30的第二数据消息,所述第二数据消息包括运行结果数据;第二数据消息除了是指电机控制器的运行结果数据外,还可以是指电机控制器的其他数据;
所述机器人上的中央控制器20存储并运行第一串口脚本时,实现步骤:接收所述第二数据消息后,读取所述中央控制器20的第一数据消息,并发布所述第一数据消息到第一话题;
所述测试终端10上存储并运行测试脚本时,实现步骤:订阅所述第一话题以接收所述第一数据消息;并分析所述第一数据消息以完成测试。
具体的,当中央控制器20想要向电机控制器30发送控制指令时,中央控制器20与电机控制器30之间保持物理串口连接,但是中央控制器20与电机控制器30之间不进行串口通信。方法之一:测试脚本被测试终端10时,发布控制消息至第一控制话题;第二串口脚本被中央控制器20运行,第一串口脚本与第二串口脚本之间进行串口通信。当工控程序被中央处理器运行时,订阅第一控制话题以接收控制消息后,以虚拟串口通信方式发送控制消息对应的控制指令。第一串口脚本被中央控制器20运行时,接收控制指令,并以虚拟串口通信方式转发控制指令。第二串口脚本被中央控制器20运行时,接收控制指令;基于中央控制器20与电机控制器30之间保持物理串口连接,以串口通信方式转发控制消息。电机控制器30接收控制指令,并执行控制指令对应的操作后,反馈运行结果数据。
进一步,测试脚本做2件事情:驱动和接收消息,也就是测试脚本发送和接收消息。若想执行所有的事件cases,测试终端的测试脚本一个一个遍历case,执行一个for循环,当执行其中任何一个case时,需要拿到发送的具体数据。
举一个简单的例子,比如说其中一个case:让机器人前进1m的距离,则需要向工控板上的中央控制器发送一个字符串{"cmd":"forward","data":1},首先启动第一、第二串口脚本,使其处于监听状态;
首先测试终端的测试脚本(由于测试终端跟机器人是无线通信,需要用到ros节点)向一个topic为“app_pub”的主题发送一个message,message的内容为上述字符串;
中央控制器上的工控程序在收到这个message(也就是:工控程序作为一个ros节点,监听“app_pub”的主题以接收message)后就会做出决策,向所有和该命令有关的设备发送指令,来达到“机器人前进1m”的目的;
中央控制器上的工控程序向电机控制板发送电机转动的指令,第一串口脚本是虚拟串口脚本,运行后会生成一个虚拟串口,第二串口脚本直接和电机控制板的单片机进行串口通信,不需要生成虚拟串口,同时,虚拟串口和第二串口脚本之间的数据交互,脚本之间的变量数据传递。运行第一串口脚本后,将和电机连接的串口挂载到了虚拟串口,工控程序将串口号连接到第一串口脚本对应的虚拟串口号,因此逻辑上是工控和电机是断开的。
工控程序发送电机的指令,比如说16进制的“0000000001”,原本发给电机的,因为虚拟串口跟工控程序连接了,所以就直接由工控程序发送给虚拟串口脚本(用的是串口的协议),虚拟串口脚本收到命令后负责转发到第二串口脚本,也即变量传递就可以了。
第二串口脚本通过串口通信的方式转发到电机控制器,电机控制器(单片机)收到数据执行对应动作后,将执行的结果发送给第二串口脚本,第二串口脚本通过转发给虚拟串口脚本来转发给工控程序,工控程序收到串口的返回信息后,来判断是否结束是否运行成功等等。
工控程序再发一个运行成功的指令到app_sub的节点,告诉别人它运行成功了,内容也是一个string,比如{“ret”:“ok”,“data”:1},两个串口脚本分别获取了发送和接收的数据流,把这些数据流分别发送到topic是x86和dianji,分别代表工控和电机的数据;PC端的测试脚本,就可以通过topic拿到每一个节点的信息,就可以通过判断最终app_sub上的数据以及每个节点的topic数据,来判断是否整个流程和预设的数据是否一致,从而最终判断该case是否通过。
如图1、图5、图6所示,根据本发明的再一个实施例,一种机器人的测试系统,包括测试终端10、与所述测试终端10无线通信连接的机器人,所述中央控制器20与所述电机控制器30之间建立物理串口连接;所述中央控制器20的物理串口名称指定为第一串口名称;所述电机控制器30的物理串口名称指定为第二串口名称。
优选的,还包括:所述测试终端10上运行测试脚本时,还实现步骤:发布控制消息至第一控制话题;
优选的,还包括:所述中央控制器20上运行工控程序时,实现步骤:监听所述第一控制话题以接收所述控制消息;并发送所述控制消息对应的控制指令。
优选的,还包括:所述中央控制器20上运行所述第一串口脚本时,还实现步骤:接收并转发所述控制指令;
优选的,还包括:所述中央控制器20上运行第二串口脚本时,实现步骤:接收并转发所述控制指令;
优选的,还包括:所述机器人上电机控制器30接收所述控制指令,并执行所述控制指令对应的操作后,反馈运行结果数据;
其中,所述中央控制器20与所述电机控制器30之间建立物理串口连接;所述中央控制器20的物理串口名称挂载至第一串口脚本,所述电机控制器30的物理串口名称挂载至第二串口脚本。
优选的,还包括:所述中央控制器20上运行第二串口脚本时,还实现步骤:读取并转发所述电机控制器30的第二数据消息,所述第二数据消息包括运行结果数据;第二数据消息除了是指电机控制器的运行结果数据外,还可以是指电机控制器的其他数据;
所述机器人上的中央控制器20存储并运行第一串口脚本时,实现步骤:接收所述第二数据消息后,读取所述中央控制器20的第一数据消息,并发布所述第一数据消息到第一话题;
所述测试终端10上存储并运行测试脚本时,实现步骤:订阅所述第一话题以接收所述第一数据消息;并分析所述第一数据消息以完成测试。
所述中央控制器20上运行第二串口脚本时,实现步骤:读取所述机器人上电机控制器30的第二数据消息,并发布所述第二数据消息到第二话题;
所述测试终端10上运行所述测试脚本时,还实现步骤:订阅所述第二话题以接收所述第二数据消息;并分析所述第二数据消息以完成测试。
具体的,当测试终端10(个人计算机)想要测试电机控制器30的串口数据是否正常时,中央控制器20与电机控制器30之间保持物理串口连接,但是中央控制器20与电机控制器30之间不进行串口通信。方法之一:第二串口脚本作为再一个ROS节点,也就是串口通信脚本,被中央控制器20运行时,基于第二串口脚本中含有第二串口名称,以及中央控制器20与电机控制器30之间保持物理串口连接,可以读取电机控制器30第二串口名称对应的第二数据消息(电机串口数据),并发布第二数据消息(电机串口数据)到第二话题(电机测试话题)。
当测试脚本被测试终端10(个人计算机)运行时,通过订阅第二话题(电机测试话题)来接收第二数据消息(电机串口数据);在接收到第二数据消息(电机串口数据)后,分析第二数据消息(电机串口数据)是否符合预设条件,从而完成测试。
如图2、图7所示,根据本发明的又一个实施例,一种机器人的测试系统,包括测试终端10、与所述测试终端10无线通信连接的机器人,所述中央控制器20与所述电机控制器30之间建立物理串口连接;所述中央控制器20的物理串口名称指定为第一串口名称;所述电机控制器30的物理串口名称指定为第二串口名称。
所述测试终端10上运行测试脚本时,还实现步骤:发布控制消息至第一控制话题;
所述中央控制器20上运行工控程序时,实现步骤:监听所述第一控制话题以接收所述控制消息;并发送所述控制消息对应的控制指令。
所述中央控制器20上运行所述第一串口脚本时,还实现步骤:接收所述控制指令,并发布所述控制指令到第二控制话题;
所述测试终端10上运行所述第二串口脚本时,还实现步骤:订阅所述第二控制话题以接收所述控制指令;
所述测试终端10上运行所述第二串口脚本时,还实现步骤:以串口通信方式或串口转无线通信方式发送所述控制指令;
所述机器人上电机控制器30接收所述控制指令,并执行所述控制指令对应的操作后,反馈运行结果数据;
其中,所述测试终端10与所述电机控制器30之间建立串口通信或无线通信连接;所述中央控制器20的物理串口名称挂载至第一串口脚本。
所述测试终端10上运行第二串口脚本时,还实现步骤:接收所述第二数据消息,并发布所述第二数据消息至控制反馈话题;所述电机控制器30以串口通信方式或串口转无线通信方式发送所述第二数据消息;所述第二数据消息包括运行结果数据;串口转无线通信方式可以是串口转蓝牙通信方式;
所述机器人上的中央控制器20存储并运行第一串口脚本时,实现步骤:订阅所述控制反馈话题以接收所述第二数据消息后,读取所述中央控制器20的第一数据消息,并发布所述第一数据消息到第一话题;
所述测试终端10上存储并运行测试脚本时,实现步骤:订阅所述第一话题以接收所述第一数据消息;并分析所述第一数据消息以完成测试。
具体的,当中央控制器20想要向电机控制器30发送控制指令时,且第二串口脚本被测试终端10运行,第一串口脚本与第二串口脚本之间进行ROS节点通信。方法之二:测试脚本被测试终端10时,发布控制消息至第一控制话题;工控程序被中央控制器20运行时,以订阅第一控制话题以接收控制消息后,发送控制指令;第一串口脚本作为一个ROS通信节点,被中央控制器20运行时,接收控制指令并发布控制指令到第二控制话题(电机控制话题)。第二串口脚本作为另一个ROS通信节点,测试终端10运行时,订阅第三话题(电机控制话题)以接收控制指令,并以串口通信方式或串口转蓝牙通信方式转发控制指令;电机控制器30接收控制指令,并执行控制指令对应的操作后,反馈运行结果数据。
如图2、图7、图8所示,根据本发明的又又一个实施例,一种机器人的测试系统,包括测试终端10、与所述测试终端10无线通信连接的机器人,所述中央控制器20与所述电机控制器30之间建立物理串口连接;所述中央控制器20的物理串口名称指定为第一串口名称;所述电机控制器30的物理串口名称指定为第二串口名称。
优选的,还包括:所述测试终端10上运行测试脚本时,还实现步骤:发布控制消息至第一控制话题;
所述中央控制器20上运行工控程序时,实现步骤:监听所述第一控制话题以接收所述控制消息;并发送所述控制消息对应的控制指令。
所述中央控制器20上运行所述第一串口脚本时,还实现步骤:接收所述控制指令,并发布所述控制指令到第二控制话题;
所述测试终端10上运行所述第二串口脚本时,还实现步骤:订阅所述第二控制话题以接收所述控制指令;
所述测试终端10上运行所述第二串口脚本时,还实现步骤:以串口通信方式或串口转无线通信方式发送所述控制指令;
所述机器人上电机控制器30接收所述控制指令,并执行所述控制指令对应的操作后,反馈运行结果数据;
其中,所述测试终端10与所述电机控制器30之间建立串口通信或无线通信连接;所述中央控制器20的物理串口名称挂载至第一串口脚本。
所述测试终端10上运行第二串口脚本时,还实现步骤:接收所述第二数据消息,并发布所述第二数据消息至控制反馈话题;所述电机控制器30以串口通信方式或串口转无线通信方式发送所述第二数据消息;所述第二数据消息包括运行结果数据;串口转无线通信方式可以是串口转蓝牙通信方式;
所述机器人上的中央控制器20存储并运行第一串口脚本时,实现步骤:订阅所述控制反馈话题以接收所述第二数据消息后,读取所述中央控制器20的第一数据消息,并发布所述第一数据消息到第一话题;
所述测试终端10上存储并运行测试脚本时,实现步骤:订阅所述第一话题以接收所述第一数据消息;并分析所述第一数据消息以完成测试。
所述测试终端10上运行第二串口脚本时,还实现步骤:接收并转发所述机器人上电机控制器30的第二数据消息;所述电机控制器30以串口通信方式或串口转无线通信方式发送所述第二数据消息;
所述测试终端10上运行所述测试脚本时,还实现步骤:接收所述第二数据消息;并分析所述第二数据消息以完成测试。
具体的,当测试终端10(个人计算机)想要测试电机控制器30的串口数据是否正常时,测试终端10与电机控制器30之间保持串口通信连接。方法之二:第二串口脚本作为再一个ROS节点,也就是串口通信脚本,被测试终端10(个人计算机)运行时,接收电机控制器30发送的第二数据消息(电机串口数据)后,转发第二数据消息(电机串口数据);电机控制器30读取第二串口名称对应的第二数据消息(电机串口数据),并通过串口转蓝牙的方式,将第二数据消息(电机串口数据)发送至测试终端10,串口转蓝牙可以参考现有技术,此处不再赘述。
当测试脚本被测试终端10运行时,通过本地数据通信接收第二数据消息(电机串口数据);在接收到第二数据消息(电机串口数据)后,分析第二数据消息(电机串口数据)是否符合预设条件,从而完成测试。
如图5、图6所示,根据本发明的一个实施例,一种机器人的测试方法,包括以下步骤:
优选的,还包括:S01、发布控制消息至第一控制话题;所述控制消息用于控制所述机器人上中央控制器20向电机控制器30发送控制指令;
优选的,还包括:S02、监听所述第一控制话题以接收所述控制消息,并发送所述控制消息对应的控制指令;所述控制指令用于控制所述电机控制器30运行。
优选的,还包括:S10、接收并向所述中央控制器20转发所述控制指令;
优选的,还包括:S20、接收并向所述电机控制器30转发所述控制指令;
优选的,还包括:S30、接收所述控制指令,并执行所述控制指令对应的操作后,反馈运行结果数据。
优选的,还包括:S40、读取并转发所述电机控制器30的第二数据消息,所述第二数据消息包括运行结果数据;
优选的,还包括:S50、接收所述第二数据消息后,执行步骤S60。
S60、读取机器人上中央控制器20的第一数据消息,并发布所述第一数据消息到第一话题;
S70、订阅所述第一话题以接收所述第一数据消息;并分析所述第一数据消息以完成测试。
优选的,还包括:S61、读取所述机器人上电机控制器30的第二数据消息,并发布所述第二数据消息到第二话题;
优选的,还包括:S71、订阅所述第二话题以接收所述第二数据消息;并分析所述第二数据消息以完成测试。
具体的,本发明中机器人的框架按照协议的不同主要分为两部分:
一是通过网络协议进行通信的模块。胸口应用、手持平板、头部显示、X86工控板和打印机等其他模块通过网口连接到路由器,路由器连接外网,这些共享同一个局域网之间的模块采用ROS通信,每一个模块对应一个ROS节点,然后发送到指定的主题。订阅该主题的节点收到数据后进行相应的处理,然后将返回的数据发送到指定的主题。
二是通过串口通信的模块。X86工控通过串口和传感器检测板、电源控制板以及电源管理系统等模块进行通信。这样就实现了整个机器人模块之间数据的互通。
针对上述框架,本发明设计了一个跨平台的自动化测试框架,通过在各模块之间进行插桩能够获取模块之间通信的数据,从而可以对数据进行校验,实现各模块之间协议自动化测试。同时将数据和业务逻辑分离,便于管理测试用例。根据测试用例的数据,利用自动化测试的脚本对数据进行解析,并和预设的数据进行判断,从而得出测试是否通过。
第一种方案,串口通信的脚本和虚拟串口的脚本都放在工控板中。启动挂载虚拟串口的脚本在系统生成虚拟串口,然后将工控程序中的串口名称指定为虚拟串口的名称,这样就实现了工控和虚拟串口脚本直接的通信,同时逻辑上断开了工控和单片机之间的直接串口通信。单片机的串口采用串口脚本与之通信,串口脚本在工控中。虚拟脚本和串口通信的脚本可以通过串口通信的方式进行数据的交互,这样就实现了工控和单片机之间的代码插桩,同时我们把获取到的数据通过ros发送到指定节点,通过电脑端的脚本进行接收,就可以实现数据的通信和自动化的测试。电脑端通过发送指令以及判断返回的数据是否满足预期来进行自动化的测试。由于ros的通信是基于网络的,因此将电脑通过无线的方式连接。
如图7、图8所示,根据本发明的另一个实施例,一种机器人的测试方法,包括以下步骤:
优选的,还包括:S01、发布控制消息至第一控制话题;所述控制消息用于控制所述机器人上中央控制器20向电机控制器30发送控制指令;
优选的,还包括:S02、监听所述第一控制话题以接收所述控制消息,并发送所述控制消息对应的控制指令;所述控制指令用于控制所述电机控制器30运行。
优选的,还包括:S11、接收所述控制指令,并发布所述控制指令到第二控制话题;
优选的,还包括:S21、订阅所述第二控制话题以接收所述控制指令;
优选的,还包括:S22、以串口通信方式或串口转无线通信方式发送所述控制指令;
优选的,还包括:S31、接收所述控制指令,并执行所述控制指令对应的操作后,反馈运行结果数据。
优选的,还包括:S41、以串口通信方式或串口转无线通信方式发送所述第二数据消息;所述第二数据消息包括运行结果数据;
优选的,还包括:S42、接收所述第二数据消息,并发布所述第二数据消息到控制反馈话题;
优选的,还包括:S51、订阅所述控制反馈话题以接收所述第二数据消息后,执行步骤S60。
S60、读取机器人上中央控制器20的第一数据消息,并发布所述第一数据消息到第一话题;
S70、订阅所述第一话题以接收所述第一数据消息;并分析所述第一数据消息以完成测试。
优选的,还包括:S62、以串口通信方式或串口转无线通信方式发送所述机器人上电机控制器30的第二数据消息;
优选的,还包括:S63、接收并转发所述第二数据消息;
优选的,还包括:S71、接收所述第二数据消息;并分析所述第二数据消息以完成测试。
具体的,第二种方案,将串口通信的脚本放在电脑端,这样串口通信脚本和虚拟串口脚本之间的通信就通过ROS进行通信,同时电机控制板的单片机需要通过标准的串口直接连接电脑。如果想实现远程,需要将该串口替换成串口转蓝牙实现。
测试脚本主要采用python编程,利用unittest模块作为自动化测试框架,串口通信部分采用serial模块进行串口数据的收发,ros部分采用rospy包将有关主题进行订阅获取数据以及向指定主题发送数据。数据以json格式进行保存和解析,保存到文件中方便管理。
基于我们的机器人硬件平台的复杂结构,以打桩的方式实现了一套能够对不同通信协议之间模块进行协议数据的发送和接收的协议自动化测试框架。主要采用ros节点通信的方式和串口方式进行通讯。创新点在于本发明适用于解决跨平台、跨模块之间的协议测试,同时针对机器人自动化测试这一场景,本发明设计的方法能够实现无线远程的协议自动化测试。同时,采用数据驱动的测试方法,将框架和数据进行分离,便于管理测试用例。
应当说明的是,上述实施例均可根据需要自由组合。以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。