本發明涉及機器人控制系統及方法。
背景技術:
機器人控制應用架構(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)可以被本發明所屬的技術領域中的程序員容易地推斷。
至此,以優選實施例為中心而考察了本發明。本發明所屬的技術領域中具有基本知識的人員想必理解可在不脫離本發明的實質性權利范圍的限度內以變形的形態實施本發明。因此,所公開的實施例并非限定性實施例,應當將其理解為僅用于說明的內容。本發明的范圍并非體現在前述的實施例,而是體現于權利要求書中,而且所有并不超出其等價范圍的差別均應解釋為包含在本發明的保護范圍之中。