机器人控制系统及方法与流程

文档序号:11063155阅读:1657来源:国知局
机器人控制系统及方法与制造工艺

本发明涉及机器人控制系统及方法。



背景技术:

机器人控制应用架构(application architecture)可以包括:控制层,控制机器人;计划管理层,控制多个机器人;以及顶级目标管理层,确定包含多个机器人的工厂的终极目标。

通常,对在计划管理层控制机器人的方法进行了研究,但是随着微控制器的功能越来越丰富,需要针对在控制层控制机器人的多样的方法进行研究。



技术实现要素:

本发明要解决的课题在于提供一种在控制层控制机器人的操作的机器人控制系统及方法。

为解决本发明所要完成的课题的根据一实施例的机器人控制系统包括:接口,用于接收用户输入;控制器,分别生成与所述用户输入对应的动作命令以及包含所述动作命令的动作命令组,并对所述动作命令进行分析而生成能够被硬件解析的数据;以及驱动器,基于所述数据来驱动至少一个硬件的动作。

在本实施例中,所述控制器可以非实时地生成所述动作命令以及所述动作命令组,并实时地生成能够通过所述硬件解析的数据。

在本实施例中,所述动作命令可以包括基于所述至少一个硬件的动作的最终结果值。

在本实施例中,所述至少一个硬件可以构成一个机器人。

在本实施例中,所述动作命令组可以包括多个动作命令,所述控制器同时执行包括在所述动作命令组中的所述多个动作命令,所述驱动器同时驱动构成多个机器人中的每一个机器人的至少一个硬件的动作。

在本实施例中,所述控制器可以非周期性地分析所述动作命令,并周期性地生成能够被所述硬件解析的数据。

在本实施例中,所述动作命令可以包括基于所述至少一个硬件的动作的最终结果值。

在本实施例中,所述至少一个硬件可以构成至少一个机器人。

在本实施例中,所述动作命令组可以包括多个动作命令,所述控制器同时执行包括在所述动作命令组中的所述多个动作命令,所述驱动器同时驱动构成多个机器人中的每一个机器人的至少一个硬件的动作。

在本实施例中,所述控制器为了非周期性地分析所述动作命令而可以从线程管理器类调用非同步执行中断函数。

在本实施例中,所述控制器可与所述非同步执行中断函数对应地将所述动作命令设定于线程安全队列类。

在本实施例中,所述控制器为了周期性地生成能够被所述硬件解析的数据而可以从所述线程管理器类调用同步执行中断函数,并与所述同步执行中断函数对应地从所述线程安全队列类获取所述动作命令。

为解决本发明所要完成的课题的根据一实施例的机器人控制方法,即,借助包括接口、控制器以及驱动器的机器人控制系统来控制机器人的方法包括如下的步骤:借助所述接口而接收用户输入;借助所述控制器而生成与所述用户输入对应的动作命令以及包括所述动作命令的动作命令组;借助所述控制器,对所述动作命令进行分析而生成能够被硬件解析的数据;以及借助所述驱动器,根据所述数据而驱动至少一个硬件的动作。

在本实施例中,所述控制器可以非周期性地分析所述动作命令,并周期性地生成所述数据。

在本实施例中,还可以包括如下的步骤:借助所述控制器,同时执行包含在所述动作命令组中的多个动作命令;以及借助所述驱动器,同时驱动构成多个机器人中的每一个机器人的至少一个硬件的动作。

在本实施例中,所述动作命令可以包括基于所述至少一个硬件的动作的最终结果值。

在本实施例中,对所述动作命令进行分析而生成所述数据的步骤可以包括如下的步骤:借助所述控制器而调用线程管理器类的针对控制管理器类的非同步执行中断函数;以及借助所述控制器而与所述非同步执行中断函数对应地将所述动作命令设定于线程安全队列类。

在本实施例中,对所述动作命令进行分析而生成所述数据的步骤可以包括如下的步骤:借助所述控制器而调用所述线程管理器类的针对硬件管理器类的同步执行中断函数;以及借助所述控制器而与所述同步执行中断函数对应地从所述线程安全队列类获取所述动作命令。

附图说明

图1是用于说明根据一实施例的机器人控制系统的图。

图2是用于说明根据一实施例的非实时的机器人控制方法的流程图。

图3是用于说明根据一实施例的实时的机器人控制方法的流程图。

图4是用于说明根据一实施例的混合型机器人控制方法的流程图。

具体实施方式

本发明可以实施多样的变换,并可以具有多种实施例,以下在附图中示出特定的实施例,并在详细的说明中针对本发明进行详细说明。然而其目的并不在于使本发明局限于特定的实施形式,应当理解的是,本发明包含本发明的思想以及技术范围所包含的所有的变换、等同物以及替代物。在对本发明进行说明时,如果判断为针对相关的公知技术进行的具体说明对本发明的主旨带来混乱,则省去其详细的说明。

以下,参照附图而对本发明的实施例进行详细的说明,在参照附图而进行说明的过程中,针对相同的或者对应的构成要素将赋予相同的附图符号,并且省略对其的重复的说明。

图1是用于说明根据一实施例的机器人控制系统的图。

参照图1,根据一实施例的机器人控制系统100包括接口110、控制器120以及驱动器130。机器人控制系统100可以确定包含主体210以及执行器220的机器人200的动作。

接口110接收用户输入。用户输入可以包含基于机器人200的操作的最终结果值。

控制器120分别生成与用户输入对应的动作命令(motion command)以及动作命令组。

根据一实施例的控制器120可以将动作命令创建程序以及动作命令组创建程序分配为非实时的任务。

动作命令可以包含基于至少一个硬件的动作的最终结果值。至少一个硬件可以构成一个机器人。例如,动作命令可以包括构成一个机器人的三个机器人手臂的动作开始地点、动作终止地点、动作执行速度、急动度百分比(jerk percent)中的至少一个。

动作命令组可以包含多个动作命令。例如,动作命令组可以包含与两个机器人相关的两个动作命令。控制器120可以将动作命令添加到动作命令组。

控制器120可以同时执行包含在动作命令组中的多个动作命令。即,控制器120可以基于一个动作命令组来同时控制将多个机器人分别构成的至少一个硬件的动作。此时,与所述一个动作命令组相关的多个机器人各自的动作可以彼此相同,也可彼此不同。

控制器120对动作命令进行分析而生成能够被硬件解析的数据。

根据一实施例的控制器120可以将动作命令分析程序以及能够被硬件解析的数据的生成程序分配为实时的任务。

根据另一实施例的控制器120可以将动作命令分析程序分配为非同步任务,并将能够被硬件解析的数据的生成程序分配为同步任务。

另外,控制器120利用动作分析算法而从动作命令中生成能够被硬件解析的数据。例如,动作分析算法可以是如下的算法,即,该算法是生成用于使执行器220移动到基于动作命令的最终位置的、基于执行器220的位置或者速度的数据的算法。

驱动器130根据由控制器120来生成的数据而驱动至少一个硬件的动作。

在控制器120执行一个动作命令的情况下,驱动器130可以驱动构成一个机器人的至少一个硬件的动作。

在控制器120同时执行动作命令组中包含的多个动作命令的情况下,驱动器130可以同时驱动构成多个机器人中的每一个机器人的至少一个硬件的动作。

机器人200可包含多个执行器221、222、223。例如,多个执行器221、222、223可以构成机器人手臂的多个关节。以下,电机是多个执行器220的一种。

控制器120可分别独立地处理非实时任务(non-realtime task)和实时任务(realtime task)。具体而言,控制器120可以将可不在规定的时间内执行的程序分配为非实时任务,并将需要在规定时间内执行的程序分配为实时任务。

另外,控制器120可以同时执行非同步任务线程(asynchronous taskthread)和同步任务线程(synchronous taskthread),其中非同步任务线程(asynchronous task thread)用于执行非实时任务(non-realtime task);同步任务线程(synchronous task thread)用于执行实时任务(realtime task)。

以下,分别参照图2以及图3对非实时的机器人控制方法及实时的机器人控制方法进行详细的说明。

图2是用于说明根据一实施例的非实时的机器人控制方法的流程图。

参照图1以及图2,控制器120可分别从服务管理器(ServiceManager)类(class)1、控制管理器(ControlManager)类2、动作组控制(MotionGroupControl)类3、动作命令组(MotionCommandGroup)类4以及动作命令(MotionCommand)类5中分别调用函数,以使机器人执行非实时任务。

服务管理器类1是为了与外部系统执行通信而分配的类。服务管理器类1可包含用于与控制管理器类2进行通信的函数。若机器人控制系统100(图1)得到开发,则服务管理器类1需要被专用化成包括用于与外部系统进行通信的逻辑。

控制管理器类2是为了与服务管理器类1或者硬件管理器类7(图3)进行通信而被分配的类。

动作组控制类3是为了管理并执行动作命令组类4而被分配的类。

动作命令组类4是为了管理并执行多个动作命令而被分配的类。

动作命令类5是为了管理并执行动作命令而被分配的类。动作命令是用于描述机器人的动作的最小单位,其可以包含用于实现机器人的动作的至少一个参数。用于实现机器人的动作的至少一个参数例如可以是包含在一个机器人中的至少一个机器人手臂的动作开始地点、动作终止地点、动作执行速度、急动度百分比(jerk percent)等。

首先,接口110接收用户输入。若通过接口110接收到用户输入,则控制器120调用服务管理器类1的AcceptCommand()函数(S111)。

然后,控制器120生成与用户输入对应的动作命令。为此,控制器120调用服务管理器类1的Create()函数而生成通过动作命令类5来得到管理并执行的动作命令(S113)。

而且,控制器120生成与用户输入对应的动作命令组。为此,控制器120调用服务管理器类1的Create()函数而生成通过动作命令组类4来得到管理并执行的动作命令组(S115)。

接着,控制器120将动作命令添加到动作命令组。此时,控制器120调用服务管理器类1的AddCommand()函数而将动作命令类5的动作命令添加到动作命令组类4(S117)。

然后,控制器120调用服务管理器类1的AddCommand()函数而将动作命令组类4的动作命令组发送到动作组控制类3(S119)。

接着,控制器120调用动作组控制类3的Initialize()函数而将动作命令组类4初始化(S121),并调用动作命令组类4的Initialize()函数而将动作命令类5初始化(S123)。

图示于图2的程序所需的时间较多,而且难以推定所需的时间,并无需实时地执行,因此可以分配为非实时任务。

以下,将针对与上文中说明的部分相同的部分的说明简略地进行或省略。

图3是用于说明根据一实施例的实时的机器人控制方法的流程图。

参照图1以及图3,控制器120分别从控制管理器(ControlManager)类2、动作组控制类3、动作命令组类4、动作命令类5、动作分析器(MotionProfiler)类6、硬件管理器(HardwareManager)类7、驱动管理器(DriveManager)类8、驱动(Drive)类9以及电机(Motor)类10中分别调用函数,以使机器人执行实时任务。

动作分析器类6是关于对包含在动作命令中的至少一个参数进行分析的算法的类。

硬件管理器类7是为了与控制管理器类2进行通信而被分配的类。

驱动管理器类8是为了表示驱动器之间的逻辑关系而被分配的类。驱动器之间的逻辑关系例如可以涉及哪类驱动器有多少个通过网络而连接。

驱动类9是为了管理连接于驱动器的电机而被分配的类。例如,一个驱动器可以管理一个电机,或者一个驱动器可以管理多个电机。

电机类10是为了将电机一般化而被分别的类。换言之,电机类10可以表现一般的电机的状态。一般的电机的状态可以表示电机的位置、速度、加速度以及错误状态等。

以下的动作分析以及网络数据包(Network Packet)交换等程序可以被处理为实时任务。

根据一实施例,控制器120对动作命令组所包含的多个动作命令分别进行分析而生成能够被硬件解析的数据。

为此,首先,控制器120调用控制管理器类2的针对动作组控制类3的Run()函数(S211),并调用动作组控制类3的针对动作命令组类4的Run()函数(S213),再调用动作命令组类4的针对动作命令类5的Run()函数(S215)。

然后,控制器120调用动作命令类5的针对动作分析器类6的Profile()函数(S217)。其结果是,控制器120可以计算包含在动作命令中的至少一个参数。

而且,控制器120调用动作命令类5的针对电机类10的SetCommnadValues()函数(S219)。其结果是,控制器120可以在电机类10存储动作命令。

另外,控制器120调用控制管理器类2的针对硬件管理器类7的Run()函数(S221),并调用硬件管理器类7的针对驱动管理器类8的Run()函数(S223),再调用驱动管理器类8的针对驱动类9的Run()函数(S225)。

接着,控制器120调用驱动类9的针对电机类10的GenerateTxPacket()函数(S227)。其结果是,控制器120可以从电机类10获取动作命令而生成数据包。

然后,控制器120呼叫硬件管理器类7的针对驱动管理器类8的DoTxRx()函数(S229)。其结果是,控制器120可以通过网络而交换数据包。

接着,控制器120调用驱动管理器类8的针对驱动类9的AnalyzeRxPacket()函数(S231),并呼叫驱动类9的针对电机类10的SetActualValues()函数(S233)。其结果是,控制器120可以对接收到的数据包进行分析,并将从数据包中提供的针对电机的状态的实际值存储到电机类10。

据此,控制器120可以根据存储于电机类10的数据而同时驱动构成多个机器人中的每一个机器人的至少一个硬件(例如,电机)的动作。此时,控制器120所控制的多个机器人各自的动作可以彼此相同,也可彼此不同。

图示于图3的程序需要实时地执行,因此可以分配为实时任务。

以下,参照图4对非周期性机器人控制方法及周期性机器人控制方法进行详细的说明。

图4是用于说明根据一实施例的混合型机器人控制方法的流程图。

参照图1以及图4,控制器120可以分别从线程管理器(ThreadManager)类11、控制管理器类2、动作组控制类3、动作命令组类4、动作命令类5、动作分析器类6、硬件管理器类7、驱动管理器类8、驱动类9、电机类10以及线程安全队列(ThreadSafeQueue)类12中分别调用函数,以使机器人执行非同步任务以及同步任务。

线程管理器类11是为了管理非同步任务线程以及同步任务线程而被分配的类。

线程安全队列类12是为了存储非同步数据而被分配的类。

根据一实施例的控制器120可以从线程管理器类11调用非同步执行中断函数,以非周期性地分析动作命令。其结果是,控制器120可以将以下的S311步骤至S319步骤的操作管理为非同步任务线程(Asynchronous Task Thread)。

具体而言,控制器120调用线程管理器类11的针对控制管理器类2的AsyncRunInterrupt()函数(S310)。即,控制器120可以调用线程管理器类11的针对控制管理器类2的非同步执行中断函数。

之后,控制器120调用控制管理器2的针对动作组控制类3的AsyncRun()函数(S311),并调用动作组控制类3的针对动作命令组类4的AsyncRun()函数(S313),再调用动作命令组类4的针对动作命令类5的AsyncRun()函数(S315)。

接着,控制器120调用动作命令组5的针对动作分析器类6的Profile()函数(S317)。动作命令类5的Profile()函数是针对动作命令组类4的AsyncRun()函数的响应,因此可以在任意的时间点调用。

而且,控制器120调用动作分析器类6的针对线程安全队列类12的SetCommnadValues()函数(S319)。即,控制器120可以与非同步执行中断函数对应地将动作命令设定于线程安全队列类12。

换言之,控制器120可以非周期性地分析动作命令,并在任意的时间点将动作命令存储到电机类10。

根据本实施例,通过非同步地执行S311步骤至S319步骤的操作,可以使S311步骤至S319步骤的运算对同步任务线程(synchrous task thread)的周期性所带来的影响最小化。

根据一实施例的控制器120为了周期性地生成能够被硬件解析的数据,可以从线程管理器类11调用同步执行中断函数。其结果是,控制器120可以将S323步骤至S333步骤的操作管理为同步任务线程(Synchronous Task Thread)。

具体而言,控制器120调用线程管理器类11的针对硬件管理器类7的SyncRunInterrupt()函数(S320)。即,控制器120可以调用线程管理器类11的针对硬件管理器类7的同步执行中断函数。

接着,控制器120调用硬件管理器类7的针对驱动管理器类8的SyncRun()函数(S323),并调用驱动管理器类8的针对驱动类9的SyncRun()函数(S325)。

然后,控制器120调用驱动类9的针对线程安全队列类12的GetCommandValues()函数(S326)。即,控制器120可以与同步执行中断函数对应地从线程安全队列类12获取动作命令。即,控制器120可以与同步执行中断函数对应地从线程安全队列类12获取动作命令。

驱动类9的GetCommandValues()函数是针对驱动管理器类8的SyncRun()函数的响应,因此可以在预定的时间点调用。预定的时间点可以表示预定的周期,而且驱动类9的GetCommandValues()函数例如可以在每500μm(微米)得到调用。

其结果是,控制器120可以以预定的周期获取存储于线程安全队列类12的动作命令。

然后,控制器120调用驱动类9的针对电机类10的GenerateTxPacket()函数(S327)。

接着,控制器120调用硬件管理器类7的针对驱动管理器类8的DoTxRx()函数(S329),并调用驱动管理器类8的针对驱动类9的AnalyzeRxPacket()函数(S331),再调用驱动类9的针对电机类10的SetActualValue()函数(S333)。

其结果是,控制器120可以以预定的周期将针对电机的状态的实际值存储到电机类10。换言之,控制器120可以基于动作命令来周期性地发送能够被硬件解析的数据。

接着,驱动器130根据能够被硬件解析的数据而驱动至少一个硬件的动作。此时,驱动器130可以基于周期性地生成的数据来周期性地驱动至少一个硬件的动作。

另外,控制器120可以同时执行包含在动作命令组中的多个动作命令。此时,驱动器130可以同时驱动构成多个机器人中的每一个机器人的至少一个硬件的动作。

根据本实施例,S323至S333步骤的操作同步地进行,从而可以提高网络的安全性,并最终可以通过减少抖动(jitter)而期望重复性(repeatability)等性能的改善。

根据本发明的实施例,可以在控制层控制机器人的动作。

尤其,可以在控制层同时控制构成一个机器人的至少一个硬件的动作,或者可以同时控制构成多个机器人的至少一个硬件的动作。

此外,根据本发明的实施例,可以单独地处理用于控制机器人的非实时任务和实时任务。

此外,根据本发明的实施例,可以同时处理用于控制机器人的非同步任务和同步任务。

此外,根据本发明的实施例,可以在减少运算量的同时提高网络的稳定性,从而能够实现机器人的重复性等性能的改善。

此外,通过能够在一个硬件中控制多个机器人,相比于使用现有的多个硬件的情况而可以期望低发热、硬件的低费用、低功耗使用的效果。

另外,本发明可以以计算机可读的代码的形式实现于可通过计算机读取的记录介质。计算机可读记录介质包括用于存储可通过计算机读取的数据的所有种类的记录装置。

作为计算机可读记录介质的例,包括ROM、RAM、CD-ROM、磁带、软盘、光数据存储装置等,此外,还包括以载波(例如,通过互联网的传送)的形态实现的例。此外,计算机可读记录介质中可以存储并执行能够被分散到通过网络连接的计算机系统并以分散方式被计算机读取的代码。而且,用于实现本发明的功能性的(functional)程序、代码以及代码段(code segment)可以被本发明所属的技术领域中的程序员容易地推断。

至此,以优选实施例为中心而考察了本发明。本发明所属的技术领域中具有基本知识的人员想必理解可在不脱离本发明的实质性权利范围的限度内以变形的形态实施本发明。因此,所公开的实施例并非限定性实施例,应当将其理解为仅用于说明的内容。本发明的范围并非体现在前述的实施例,而是体现于权利要求书中,而且所有并不超出其等价范围的差别均应解释为包含在本发明的保护范围之中。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1