本發(fā)明涉及機器人技術(shù)領(lǐng)域,尤其涉及機械臂的運動控制方法和裝置、以及存儲介質(zhì)、計算機。
背景技術(shù):
隨著產(chǎn)業(yè)升級和企業(yè)技術(shù)進步的加快,機械臂成為了機器人技術(shù)領(lǐng)域中被得到廣泛實際應用的自動化機械裝置,此類機械臂具有多自由度,允許在二維或三維空間進行運動,通過接收控制指令以完成各種作業(yè)。
如圖1a、1b、1c和1d所示,為了提高機械臂活動的自由度,機械臂上往往設(shè)置有旋轉(zhuǎn)軸,通過旋轉(zhuǎn)軸可以使得機械臂在一定范圍內(nèi)繞旋轉(zhuǎn)軸旋轉(zhuǎn),在某些特殊作用中,旋轉(zhuǎn)式的運動可以大大提高機械臂的作業(yè)能力。其中,圖1a~1c所示型號的機械臂為大小臂繞旋轉(zhuǎn)軸01在水平面上運動的機械臂,圖1a為該機械臂的正視圖,圖1b、圖1c為該機械臂兩種姿態(tài)下的俯視圖;圖1d所示型號的機械臂為大小臂繞旋轉(zhuǎn)軸01在垂直平面上運動的機械臂。
目前,對機械臂旋轉(zhuǎn)軸的運動控制主要通過人機交互實現(xiàn),在現(xiàn)有技術(shù)中,最常見的運動控制方式包括在pc端或移動端通過應用界面進行控制。比如,用戶如果想要控制機械臂旋轉(zhuǎn)軸正方向旋轉(zhuǎn)大約45°,則用戶首先需要在應用界面上找到控制機械臂旋轉(zhuǎn)軸的轉(zhuǎn)動方向的第一控制按鍵,以及控制機械臂旋轉(zhuǎn)軸的轉(zhuǎn)動角度的第二控制按鍵,然后,用戶觸發(fā)第一控制按鍵設(shè)定轉(zhuǎn)動方向為正方向,并且觸發(fā)第二控制按鍵設(shè)定轉(zhuǎn)動角度為45°,最后,根據(jù)上述設(shè)定的參數(shù)生成并發(fā)出控制指令,實現(xiàn)對機械臂旋轉(zhuǎn)軸的轉(zhuǎn)動角度和轉(zhuǎn)動方向的控制??梢?,該運動控制方式主要存在以下缺陷:用戶通過pc端或移動端上的應用界面對機械臂進行間接控制,這在一定程度上降低了用戶對機械臂旋轉(zhuǎn)軸的運動控制效率。
技術(shù)實現(xiàn)要素:
本發(fā)明實施例提供了一種機械臂的運動控制方法和裝置、以及存儲介質(zhì)、計算機,對機械臂旋轉(zhuǎn)軸的運動控制主要通過人機交互實現(xiàn),用戶不需要點擊應用界面上代表相應控制指令的控制按鍵來觸發(fā)控制指令,便可實現(xiàn)對機械臂旋轉(zhuǎn)軸的轉(zhuǎn)動角度和轉(zhuǎn)動方向的控制,能夠建立起控制設(shè)備上第一觸發(fā)部件、第二觸發(fā)部件與機械臂上目標旋轉(zhuǎn)軸轉(zhuǎn)動的直觀聯(lián)系,提升機械臂旋轉(zhuǎn)軸的運動控制效率。
本發(fā)明實施例提供的一種機械臂的運動控制方法,包括:
監(jiān)聽控制設(shè)備上第一觸發(fā)部件和第二觸發(fā)部件的觸發(fā)事件;
若監(jiān)聽到所述第一觸發(fā)部件的第一觸發(fā)事件,則生成第一轉(zhuǎn)動控制指令,并將所述第一轉(zhuǎn)動控制指令發(fā)送至所述機械臂,以根據(jù)所述第一轉(zhuǎn)動控制指令驅(qū)動所述機械臂的目標旋轉(zhuǎn)軸以預設(shè)第一轉(zhuǎn)動速度沿第一轉(zhuǎn)動方向轉(zhuǎn)動;
若監(jiān)聽到所述第二觸發(fā)部件的第二觸發(fā)事件,則生成第二轉(zhuǎn)動控制指令,并將所述第二轉(zhuǎn)動控制指令發(fā)送至所述機械臂,以根據(jù)所述第二轉(zhuǎn)動控制指令驅(qū)動所述目標旋轉(zhuǎn)軸以預設(shè)第二轉(zhuǎn)動速度沿第二轉(zhuǎn)動方向轉(zhuǎn)動;
所述第一轉(zhuǎn)動方向與所述第二轉(zhuǎn)動方向相反。
本發(fā)明實施例提供的一種機械臂的運動控制裝置,包括:
觸發(fā)事件監(jiān)聽模塊,用于監(jiān)聽控制設(shè)備上第一觸發(fā)部件和第二觸發(fā)部件的觸發(fā)事件;
第一轉(zhuǎn)動指令生成模塊,用于若所述觸發(fā)事件監(jiān)聽模塊監(jiān)聽到所述第一觸發(fā)部件的第一觸發(fā)事件,則生成第一轉(zhuǎn)動控制指令;
第一轉(zhuǎn)動指令生成模塊,用于將所述第一轉(zhuǎn)動指令生成模塊生成的所述第一轉(zhuǎn)動控制指令發(fā)送至所述機械臂,以根據(jù)所述第一轉(zhuǎn)動控制指令驅(qū)動所述機械臂的目標旋轉(zhuǎn)軸以預設(shè)第一轉(zhuǎn)動速度沿第一轉(zhuǎn)動方向轉(zhuǎn)動;
第二轉(zhuǎn)動指令生成模塊,用于若所述觸發(fā)事件監(jiān)聽模塊監(jiān)聽到所述第二觸發(fā)部件的第二觸發(fā)事件,則生成第二轉(zhuǎn)動控制指令;
第二轉(zhuǎn)動指令生成模塊,用于將所述第二轉(zhuǎn)動指令生成模塊生成的所述第二轉(zhuǎn)動控制指令發(fā)送至所述機械臂,以根據(jù)所述第二轉(zhuǎn)動控制指令驅(qū)動所述目標旋轉(zhuǎn)軸以預設(shè)第二轉(zhuǎn)動速度沿第二轉(zhuǎn)動方向轉(zhuǎn)動;
所述第一轉(zhuǎn)動方向與所述第二轉(zhuǎn)動方向相反。
從以上技術(shù)方案可以看出,本發(fā)明實施例具有以下優(yōu)點:
本發(fā)明實施例中,首先,監(jiān)聽控制設(shè)備上第一觸發(fā)部件和第二觸發(fā)部件的觸發(fā)事件;若監(jiān)聽到所述第一觸發(fā)部件的第一觸發(fā)事件,則生成第一轉(zhuǎn)動控制指令,并將所述第一轉(zhuǎn)動控制指令發(fā)送至所述機械臂,以根據(jù)所述第一轉(zhuǎn)動控制指令驅(qū)動所述機械臂的目標旋轉(zhuǎn)軸以預設(shè)第一轉(zhuǎn)動速度沿第一轉(zhuǎn)動方向轉(zhuǎn)動;若監(jiān)聽到所述第二觸發(fā)部件的第二觸發(fā)事件,則生成第二轉(zhuǎn)動控制指令,并將所述第二轉(zhuǎn)動控制指令發(fā)送至所述機械臂,以根據(jù)所述第二轉(zhuǎn)動控制指令驅(qū)動所述目標旋轉(zhuǎn)軸以預設(shè)第二轉(zhuǎn)動速度沿第二轉(zhuǎn)動方向轉(zhuǎn)動;其中,所述第一轉(zhuǎn)動方向與所述第二轉(zhuǎn)動方向相反。在本發(fā)明實施例中,通過預先建立第一觸發(fā)部件、第二觸發(fā)部件與目標旋轉(zhuǎn)軸之間轉(zhuǎn)動坐標系的轉(zhuǎn)換關(guān)系,將第一觸發(fā)事件、第二觸發(fā)事件分別轉(zhuǎn)換成對目標旋轉(zhuǎn)軸的第一轉(zhuǎn)動方向、第二轉(zhuǎn)動方向的控制指令,從而建立起控制設(shè)備上第一觸發(fā)部件、第二觸發(fā)部件與機械臂上目標旋轉(zhuǎn)軸轉(zhuǎn)動的直觀聯(lián)系,提升了機械臂旋轉(zhuǎn)軸的運動控制效率。
附圖說明
圖1a為第一型號機械臂的正視結(jié)構(gòu)示意圖;
圖1b和圖1c為第一型號機械臂在兩個不同姿態(tài)下的俯視結(jié)構(gòu)示意圖;
圖1d為第二型號機械臂的正視結(jié)構(gòu)示意圖;
圖1e為標有三維坐標系的一種機械臂的立體結(jié)構(gòu)示意圖;
圖1f為本發(fā)明實施例提供的機械臂運動控制系統(tǒng)的結(jié)構(gòu)框圖;
圖2a為標有平面坐標系的一種普通鼠標的立體結(jié)構(gòu)示意圖;
圖2b為標有三維坐標系的一種鼠標的立體結(jié)構(gòu)示意圖;
圖2c為圖2b所示鼠標的俯視圖;
圖3為本發(fā)明實施例中一種機械臂的運動控制方法一個實施例的流程圖;
圖4為本發(fā)明實施例中一種機械臂的運動控制方法另一個實施例的流程圖;
圖5為本發(fā)明實施例中一種機械臂的運動控制方法對執(zhí)行機構(gòu)進行運動控制的具體流程圖;
圖6為本發(fā)明實施例中一種機械臂的運動控制裝置一個實施例結(jié)構(gòu)圖;
圖7為本發(fā)明一實施例提供的計算機的示意圖。
具體實施方式
本發(fā)明實施例提供了一種機械臂的運動控制方法和裝置、以及存儲介質(zhì)、計算機,用于解決應用界面中的界面按鍵無法與機械臂旋轉(zhuǎn)軸的轉(zhuǎn)動方向直觀對應的問題。
為使得本發(fā)明的發(fā)明目的、特征、優(yōu)點能夠更加的明顯和易懂,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,下面所描述的實施例僅僅是本發(fā)明一部分實施例,而非全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其它實施例,都屬于本發(fā)明保護的范圍。
首先,圖1f示出了本發(fā)明實施例提供的機械臂運動控制系統(tǒng)的結(jié)構(gòu)框圖,為了便于說明,僅示出與本實施例相關(guān)的部分。
參照圖1f,在本發(fā)明實施例中,機械臂運動控制系統(tǒng)由上位機子系統(tǒng)和下位機子系統(tǒng)構(gòu)成,其中,上位機子系統(tǒng)包括用于發(fā)出控制指令的計算機及其外設(shè),計算機對控制設(shè)備的轉(zhuǎn)動事件、移動事件和/或觸發(fā)事件進行采集,以獲取到控制設(shè)備的操作數(shù)據(jù),并根據(jù)操作數(shù)據(jù)生成控制指令,發(fā)送給下位機子系統(tǒng)。下位機子系統(tǒng)包括機械臂本體,以及微控制器、驅(qū)動擴展板,微控制器可以通過usb轉(zhuǎn)串口模塊實現(xiàn)與上位機子系統(tǒng)的通信,接收上位機子系統(tǒng)發(fā)送的控制指令,解析該控制指令以獲取到機械臂的運動數(shù)據(jù),通過將該運動數(shù)據(jù)發(fā)送給驅(qū)動擴展板,由驅(qū)動擴展板驅(qū)動機械臂本體依照該運動數(shù)據(jù)進行運動,由此實現(xiàn)通過控制設(shè)備對機械臂進行運動控制??梢岳斫獾氖?,在有需要時,可以將上位機子系統(tǒng)和下位機子系統(tǒng)整合在一起,例如一并整合到機械臂中。在本實施例中,機械臂運動控制系統(tǒng)分為上位機子系統(tǒng)和下位機子系統(tǒng),其主要為了便于理解該機械臂運動控制系統(tǒng),不應看成對該機械臂運動控制系統(tǒng)的限定。
另外,本發(fā)明實施例中,控制設(shè)備可以具體為鼠標或搖桿控制器。其中,鼠標可以為普通鼠標或鼠標。
如圖2a所示,圖2a為普通鼠標的立體示意圖。當控制設(shè)備為普通鼠標時,普通鼠標上通常至少配置有兩個按鍵,分別為鼠標左鍵和鼠標右鍵,該鼠標左鍵和鼠標右鍵可以分別作為控制設(shè)備的第一觸發(fā)部件和第二觸發(fā)部件使用。另外,普通鼠標上一般還配置有鼠標滾輪,該鼠標滾輪可作為控制設(shè)備在垂直方向上的移動部件。如圖2a所示,普通鼠標本身還可以在平面上滑動,在普通鼠標本身滑動時,普通鼠標可以輸出滑動過程中的移動方向和移動距離,因此,普通鼠標本身可作為控制設(shè)備在水平方向上的移動部件。另外,對于部分型號的普通鼠標,其上還可以配置一個以上按鍵,這些按鍵可以作為控制設(shè)備的觸發(fā)部件。
同理,相對于普通鼠標,當控制設(shè)備為鼠標時,其大部分控制部件與普通鼠標的類似,如圖2b和圖2c所示,對于鼠標,則其彈性結(jié)構(gòu)02由于可被提起或按下,因此可以將該彈性結(jié)構(gòu)02作為控制設(shè)備的在垂直方向上的移動部件使用。
而當控制設(shè)備為搖桿控制器時,搖桿控制器上配置的旋鈕或者用于繞圓周進行搖動操作的搖桿,可以看作是控制設(shè)備的第一觸發(fā)部件和第二觸發(fā)部件的等同功能部件。另外,部分型號的搖桿控制器上配置的彈性結(jié)構(gòu)可被提起或按下,因此該彈性結(jié)構(gòu)在用于提起或按下時,可作為控制設(shè)備在垂直方向上的移動部件。搖桿控制器上的搖桿可以往一個水平面的各個方向搖動,在搖桿搖動時,搖桿控制器可以輸出遙控過程中的搖動方向和搖動距離,因此,搖桿控制器的搖桿可以作為控制設(shè)備在水平方向上的移動部件。另外,對于大多數(shù)搖桿控制器來說,其上配置有一個以上按鍵,這些按鍵可以作為控制設(shè)備的觸發(fā)部件。
由上述內(nèi)容可知,本發(fā)明實施例中的控制設(shè)備具有多種選擇。在下述內(nèi)容中,為便于描述,僅以普通鼠標作為控制設(shè)備為例進行說明。
基于圖1f所示的系統(tǒng)結(jié)構(gòu),圖3示出了本發(fā)明實施例提供的機械臂的運動控制方法的實現(xiàn)流程,詳述如下:
301、監(jiān)聽控制設(shè)備上第一觸發(fā)部件和第二觸發(fā)部件的觸發(fā)事件;
當控制設(shè)備為普通鼠標時,對于普通鼠標來說,普通鼠標上通常至少配置有兩個按鍵,分別為鼠標左鍵和鼠標右鍵。本實施例中,該鼠標左鍵可以作為第一觸發(fā)部件,該鼠標右鍵可以作為第二觸發(fā)部件。對鼠標左鍵和鼠標右鍵進行監(jiān)聽,以判斷用戶是否按下了鼠標左鍵或者鼠標右鍵。
302、若監(jiān)聽到所述第一觸發(fā)部件的第一觸發(fā)事件,則生成第一轉(zhuǎn)動控制指令;
303、將所述第一轉(zhuǎn)動控制指令發(fā)送至所述機械臂,以根據(jù)所述第一轉(zhuǎn)動控制指令驅(qū)動所述機械臂的目標旋轉(zhuǎn)軸以預設(shè)第一轉(zhuǎn)動速度沿第一轉(zhuǎn)動方向轉(zhuǎn)動;
對于上述步驟302和303,當監(jiān)聽到用戶按下鼠標左鍵時,生成第一轉(zhuǎn)動控制指令,并將該第一轉(zhuǎn)動指令發(fā)送至圖1f所示的下位機系統(tǒng),下位機系統(tǒng)通過對該第一轉(zhuǎn)動控制指令進行解析,解析出關(guān)于該機械臂的目標旋轉(zhuǎn)軸的運動數(shù)據(jù),從而驅(qū)動目標旋轉(zhuǎn)軸以預設(shè)第一轉(zhuǎn)動速度沿第一轉(zhuǎn)動方向轉(zhuǎn)動??梢岳斫獾氖?,在本實施例中,可以預先建立第一觸發(fā)事件與第一轉(zhuǎn)動控制指令的對應關(guān)系,該第一轉(zhuǎn)動控制指令與目標旋轉(zhuǎn)軸的第一轉(zhuǎn)動速度和第一轉(zhuǎn)動方向也可以預先建立對應關(guān)系。例如,設(shè)定:第一觸發(fā)事件觸發(fā)時,目標旋轉(zhuǎn)軸以第一轉(zhuǎn)動速度順時針轉(zhuǎn)動。同理,對于第二觸發(fā)事件,可以對應設(shè)定為:第二觸發(fā)事件觸發(fā)時,目標旋轉(zhuǎn)軸以第二轉(zhuǎn)動速度逆時針轉(zhuǎn)動。其中,該第一轉(zhuǎn)動速度和第二轉(zhuǎn)動速度可以預先設(shè)定并由用戶自行調(diào)整。
304、若監(jiān)聽到所述第二觸發(fā)部件的第二觸發(fā)事件,則生成第二轉(zhuǎn)動控制指令;
305、將所述第二轉(zhuǎn)動控制指令發(fā)送至所述機械臂,以根據(jù)所述第二轉(zhuǎn)動控制指令驅(qū)動所述目標旋轉(zhuǎn)軸以預設(shè)第二轉(zhuǎn)動速度沿第二轉(zhuǎn)動方向轉(zhuǎn)動,其中,所述第一轉(zhuǎn)動方向與所述第二轉(zhuǎn)動方向相反。
對于上述步驟304和305,當監(jiān)聽到用戶按下鼠標右鍵時,生成第二轉(zhuǎn)動控制指令,并將該第二轉(zhuǎn)動指令發(fā)送至圖1f所示的下位機系統(tǒng),下位機系統(tǒng)通過對該第二轉(zhuǎn)動控制指令進行解析,解析出關(guān)于該機械臂的目標旋轉(zhuǎn)軸的運動數(shù)據(jù),從而驅(qū)動目標旋轉(zhuǎn)軸以預設(shè)第二轉(zhuǎn)動速度沿第二轉(zhuǎn)動方向轉(zhuǎn)動。步驟304和步驟305的原理與上述步驟302和步驟303類似,此處不再贅述。需要說明的是,所述第一轉(zhuǎn)動方向與所述第二轉(zhuǎn)動方向相反,當?shù)谝晦D(zhuǎn)動方向為順時針時,第二轉(zhuǎn)動方向為逆時針;而當?shù)谝晦D(zhuǎn)動方向為逆時針時,第二轉(zhuǎn)動方向為順時針。
作為本實施例的一種優(yōu)選方式,當機械臂配置有兩個以上旋轉(zhuǎn)軸時,在上述發(fā)送第一轉(zhuǎn)動控制指令或第二轉(zhuǎn)動控制指令至機械臂之前,還可以從所述兩個以上旋轉(zhuǎn)軸中確定一個以上的旋轉(zhuǎn)軸作為所述目標旋轉(zhuǎn)軸??梢岳斫獾氖?,如圖1a~1d所示,機械臂配置有兩個旋轉(zhuǎn)軸,分別對應控制大臂和小臂的運動。因此,當需要對旋轉(zhuǎn)軸進行轉(zhuǎn)動控制之前,可以先由用戶選擇一個旋轉(zhuǎn)軸作為目標旋轉(zhuǎn)軸進行控制。例如,當用戶需要控制機械臂完成一個畫圓弧的動作時,現(xiàn)有技術(shù)往往需要在應用界面中預設(shè)一個畫圓弧的指令,用戶才能通過預設(shè)的畫圓弧指令來控制機械臂完成畫圓弧的動作。然而,應用界面上往往只預設(shè)有常用的、標準的畫圓弧指令,比如畫四分之一圓弧、畫二分之一圓弧、畫一個完整的圓等,當用戶想要畫出非常規(guī)的圓滑時,例如畫八分之七圓弧,則非常困難。本實施例中,通過單獨對某個旋轉(zhuǎn)軸進行轉(zhuǎn)動控制,用戶可以確定機械臂上某個旋轉(zhuǎn)軸為目標旋轉(zhuǎn)軸,然后控制該目標旋轉(zhuǎn)軸進行轉(zhuǎn)動,轉(zhuǎn)動的角度和方向均可以由用戶通過控制設(shè)備上的觸發(fā)部件直接控制,使得在控制機械臂進行類似畫圓弧的動作時,可以做到“所見即所得”的效果。另外在有需要時,也可以同時對兩個或兩個以上的旋轉(zhuǎn)軸進行控制。
可以理解的是,在這些旋轉(zhuǎn)軸中確定出目標旋轉(zhuǎn)軸的方式可以有多種,例如可以預設(shè)算法進行自動選定,也可以由用戶進行手動選擇,此處不作具體限定。
圖3所示實施例闡述了對機械臂旋轉(zhuǎn)軸進行運動控制的方案,進一步地,本發(fā)明實施例還可以通過控制設(shè)備實現(xiàn)對機械臂的運動控制,如圖4所示,本發(fā)明實施例所述的運動控制方法還包括:
步驟401、對所述控制設(shè)備的移動情況進行檢測,檢測所述控制設(shè)備的移動部件的移動方向和在所述移動方向上的移動距離;
在本實施例中,控制設(shè)備為普通鼠標,實現(xiàn)的是對普通鼠標運動數(shù)據(jù)的采集,計算機操作系統(tǒng)通過對普通鼠標事件進行監(jiān)聽,獲取到普通鼠標移動部件的移動方向及移動部件在該移動方向上的移動距離。其中,所述移動部件,可以為普通鼠標本體或者鼠標滾輪,若移動部件為普通鼠標本體,由于普通鼠標本體可以在水平面上進行如圖2a所示的x軸方向和y軸方向的移動,因此,需要分別獲取到普通鼠標本體在上述兩個軸向方向上的移動距離;若移動部件為鼠標滾輪,由于鼠標滾輪只能在直線上做向前滾動或向后滾動的移動操作,因此,需要獲取到該鼠標滾輪在該前后方向上的直線移動距離。
步驟402、將所述移動部件的移動方向轉(zhuǎn)換為所述機械臂的運動方向;
步驟403、根據(jù)所述移動部件的所述移動距離確定所述機械臂在所述運動方向上的運動速度;
對于上述步驟402和步驟403,在本發(fā)明實施例中,需要根據(jù)步驟401中采集到的普通鼠標的操作數(shù)據(jù)來生成對機械臂的控制指令,因此,需要將普通鼠標的操作數(shù)據(jù)轉(zhuǎn)換成機械臂的運動數(shù)據(jù),這其中涉及到;將普通鼠標的移動部件的移動方向轉(zhuǎn)換為機械臂的運動方向,以及將移動部件在該移動方向上的移動距離轉(zhuǎn)換為機械臂在該運動方向上的運動速度。為了控制機械臂在三維空間運動,需要明確機械臂在三維運動坐標系x軸、y軸、z軸三個軸向方向上對應的運動速度,因此,在本發(fā)明實施例中,通過采集到的普通鼠標在三個不同維度上的運動數(shù)據(jù),以將這三個不同維度上的運動數(shù)據(jù)分別轉(zhuǎn)換為機械臂在三個軸向方向上的運動速度。具體地,作為本發(fā)明的一個實施例,所述將所述移動部件的移動方向轉(zhuǎn)換為機械臂的運動方向包括:
若所述移動部件為普通鼠標本體,將所述普通鼠標本體在水平平面上的移動方向映射為所述機械臂在水平平面上的運動方向;
若所述移動部件為鼠標滾輪,將所述鼠標滾輪的移動方向轉(zhuǎn)換為所述機械臂在垂直方向上的運動方向。
具體地,對應于圖2a所示的平面坐標系,可以以機械臂的初始運動位置或底座固定位置為原點,建立如圖1e所示的三維運動坐標系,將普通鼠標本體在圖2a的x軸軸向方向的運動映射為機械臂在圖1ex軸軸向方向的運動,將普通鼠標本體在圖2a的y軸軸向方向的運動映射為機械臂在圖1ey軸軸向方向的運動,將鼠標滾輪的直線運動映射為機械臂在圖1ez軸軸向方向的運動。顯然,容易想到的是,普通鼠標與機械臂的運動維度映射關(guān)系可以不局限于以上方式,在本發(fā)明實施例中,普通鼠標提供了三個不同維度的運動數(shù)據(jù),只需要將這三個不同維度與機械臂運動的三個軸向方向建立起一一對應的關(guān)系即可,在此并不限定每組對應關(guān)系中的具體維度。
除了需要將所述移動部件的移動方向轉(zhuǎn)換為所述機械臂的運動方向之外,在本發(fā)明實施例中,還需要根據(jù)所述移動部件的所述移動距離確定所述機械臂在所述運動方向上的運動速度??梢灶A先建立好移動部件的移動距離與機械臂的運動速度的對應關(guān)系。例如,普通鼠標本體在x軸方向的移動距離為d,移動的時間為t,則普通鼠標本體的x軸方向的平均移動速度為d/t,從而,確定該機械臂在x軸的運動速度為d/t。又比如,鼠標本體在x軸方向的移動距離為d,移動的時間為t,則鼠標本體的x軸方向的平均加速度為2d/t2,從而該機械臂在x軸上運動的平均加速度為2d/t2,并以該加速度從0開始進行加速運動。
另外,需要說明的是,在確定出機械臂在所述運動方向上的運動速度之后,該機械臂在該運動方向上何時停止運動,可以通過多種方式進行控制。比如,可以默認機械臂在該運動方向上的運動時間等于移動部件的移動時間,也即機械臂時“跟隨”移動部件進行相應運動的,移動部件移動時,機械臂移動;反之,移動部件停下時,機械臂也相應停止運動。另一種方式,也可以設(shè)定機械臂的運動停止需要用戶另外輸入一個控制機械臂停止運動的指令。比如,確定機械臂在x軸的運動速度為d/t之后,該機械臂即在x軸上以d/t的運動速度進行勻速運動,在用戶另外輸入一個“停止”的控制指令之前,該機械臂可以一直保持這種運動狀態(tài),直到機械臂達到物理上的限位狀態(tài)或者用戶輸入一個“停止”的控制指令為止,該機械臂才停止運動??梢?,在本實施例中,控制機械臂在該運動方向上運動之后,何時控制機械臂停止運動可以根據(jù)實際使用情況進行設(shè)定,此處不做具體限定。
步驟404、生成第一運動控制指令,所述第一運動控制指令用于控制所述機械臂以所述運動速度沿所述運動方向運動;
步驟405、將所述第一運動控制指令發(fā)送至所述機械臂。
基于步驟402和步驟403的轉(zhuǎn)換結(jié)果,生成對機械臂的第一運動控制指令,該第一運動控制指令用于控制機械臂以所述運動速度沿著轉(zhuǎn)換得到的運動方向運動,將該第一運動控制指令發(fā)送至圖1f所示的下位機系統(tǒng),從而能夠根據(jù)該第一運動控制指令驅(qū)動機械臂運動,完成普通鼠標對機械臂的運動控制。
可以理解的是,在控制機械臂以所述運動速度沿著轉(zhuǎn)換得到的運動方向運動之后,當接收到停止運動指令時,機械臂停止運動;或者,當接收到另一個第一運動控制指令時,則根據(jù)另一個第一運動控制指令控制機械臂運動。
示例性地,通過圖4實施例所示的方案,可以實現(xiàn)以下運動控制效果:
1、當普通鼠標沿著圖2a所示的x軸正方向運動時,驅(qū)動機械臂沿著圖1e所示的x軸正方向運動;當普通鼠標沿著圖2a所示的x軸負方向運動時,驅(qū)動機械臂沿著圖1e所示的x軸負方向運動;
2、當普通鼠標沿著圖2a所示的y軸正方向運動時,驅(qū)動機械臂沿著圖1e所示的y軸正方向運動;當普通鼠標沿著圖2a所示的y軸負方向運動時,驅(qū)動機械臂沿著圖1e所示的y軸負方向運動;
3、當普通鼠標沿著與圖2a所示的x軸及y軸各成一定夾角的方向運動時,驅(qū)動機械臂沿著與圖1e所示的x軸及y軸各成一定夾角的方向運動。
進一步地,針對圖4對應實施例的運動控制方案,為了更好地實現(xiàn)機械臂的運動控制,在步驟401之前,增加對機械臂進行運動控制的觸發(fā)條件。作為優(yōu)選的一個實施例下,可以監(jiān)聽所述控制設(shè)備上第三觸發(fā)部件的第三觸發(fā)事件,若監(jiān)聽到所述第三觸發(fā)事件,則執(zhí)行上述步驟401。具體地,可以是監(jiān)聽所述第三觸發(fā)部件是否處于被按下的狀態(tài),若是,則執(zhí)行上述步驟401,實現(xiàn)機械臂的運動控制。更進一步地,當該第三觸發(fā)部件處于松開的狀態(tài)時,則可以生成第二運動控制指令,通過第二運動控制指令控制該機械臂停止運動。
示例性地,通過上述的第三觸發(fā)事件作為機械臂運動控制的觸發(fā)條件,可以實現(xiàn)以下運動控制效果:當按住鼠標的一個或兩個按鍵時,此時移動鼠標,驅(qū)動機械臂以鼠標的平均移動速度沿著鼠標的運動方向運動。此時,用戶只要不松開該按鍵,則機械臂一直以這個平均移動速度沿著該運動方向運動。當用戶認為機械臂已移動到想要的位置時,用戶松開該按鍵,機械臂停止運動??梢岳斫獾氖牵ㄟ^第三觸發(fā)事件作為機械臂運動控制的觸發(fā)條件,可以對機械臂的多種運動控制方式在用戶操作層面上實現(xiàn)區(qū)分。比如,若機械臂包括常用的跟隨運動方式以及特殊情況下使用的非跟隨運動方式。其中,跟隨運動方式是指機械臂的運動狀態(tài)跟隨鼠標的運動狀態(tài),當鼠標運動時,機械臂運動;鼠標停止時,機械臂停止。非跟隨運動方式則是指上述步驟401~405所述的運動方式。因此,可以將第三觸發(fā)事件作為非跟隨運動方式的觸發(fā)條件,從而將跟隨運動方式與非跟隨運動方式區(qū)分開來。用戶控制機械臂時,若用戶需要采用跟隨運動方式控制機械臂,用戶可以直接移動鼠標進行控制;若用戶需要采用非跟隨運動方式控制機械臂,用戶可以觸發(fā)第三觸發(fā)事件時,比如通過按住鼠標的一個按鍵不放來移動鼠標,從而控制機械臂以非跟隨運動方式進行運動。
圖4所示實施例闡述了對機械臂進行運動控制的方案,進一步地,本發(fā)明實施例還可以通過控制設(shè)備實現(xiàn)對機械臂末端連接的執(zhí)行機構(gòu)的運動控制,如圖5所示,本發(fā)明實施例所述的運動控制方法還包括:
步驟501、監(jiān)聽所述控制設(shè)備上第四觸發(fā)部件的第四觸發(fā)事件;
對于鼠標來說,其上可以配置有至少一個按鍵作為控制設(shè)備的第四觸發(fā)部件。本實施例中,可以對鼠標的按鍵的觸壓時間進行監(jiān)聽,以判斷用戶是否對鼠標進行了觸壓操作。
步驟502、若監(jiān)聽到所述第四觸發(fā)事件,則根據(jù)所述第四觸發(fā)事件生成機構(gòu)控制指令;
步驟503、將所述機構(gòu)控制指令發(fā)送至所述機械臂,以根據(jù)所述機構(gòu)控制指令驅(qū)動所述機械臂末端連接的執(zhí)行機構(gòu)運動。
對于上述步驟502和步驟503,當監(jiān)聽到第四觸發(fā)事件時,即可生成對機械臂末端連接的執(zhí)行機構(gòu)進行控制的機構(gòu)控制指令,并將該機構(gòu)控制指令發(fā)送至圖1f所示的下位機系統(tǒng),下位機系統(tǒng)通過對該機構(gòu)控制指令進行解析,解析出關(guān)于該執(zhí)行機構(gòu)的運動數(shù)據(jù),從而驅(qū)動該執(zhí)行機構(gòu)運動。在本發(fā)明實施例中,所述機械臂末端連接的執(zhí)行機構(gòu),包括但不限于機械臂末端的旋轉(zhuǎn)機構(gòu)(例如舵機),或者還包括與該旋轉(zhuǎn)機構(gòu)連接的爪子、吸盤等裝置,該機構(gòu)的種類不同,所能夠?qū)崿F(xiàn)的功能也不相同,總體來說,該執(zhí)行機構(gòu)是用于實現(xiàn)機械臂更為精細的機械控制,例如抓握物體、繪畫、激光刻字,等等。
以下通過若干實施例來對圖5實施例的實現(xiàn)進行詳細闡述:
作為本發(fā)明的一個實施例,步驟502可以具體通過以下方式實現(xiàn):
若監(jiān)聽到關(guān)于所述第四觸發(fā)部件的雙擊操作事件,則根據(jù)所述雙擊操作事件生成第一機構(gòu)控制指令,所述第一機構(gòu)控制指令用于控制所述執(zhí)行機構(gòu)在打開狀態(tài)和關(guān)閉狀態(tài)之間的切換。在本實施例中,該第四觸發(fā)部件可以是鼠標左鍵、鼠標右鍵或者鼠標上配置的其他物理按鍵。當監(jiān)聽到該第四觸發(fā)部件被雙擊時,則生成第一機構(gòu)控制指令,并將該第一機構(gòu)控制指令發(fā)送至機械臂。若機械臂的執(zhí)行機構(gòu)正處于打開狀態(tài),則當機械臂接收到該第一機構(gòu)控制指令時,控制機械臂的執(zhí)行機構(gòu)從打開狀態(tài)切換至關(guān)閉狀態(tài);反之,若機械臂的執(zhí)行機構(gòu)正處于關(guān)閉狀態(tài),則當機械臂接收到該第一機構(gòu)控制指令時,控制機械臂的執(zhí)行機構(gòu)從關(guān)閉狀態(tài)切換至打開狀態(tài)。
作為本發(fā)明的又一個實施例,步驟502還可以具體通過以下方式實現(xiàn):
若監(jiān)聽到所述第四觸發(fā)部件處于被按下的狀態(tài),則生成第二機構(gòu)控制指令,所述第二機構(gòu)控制指令用于打開所述執(zhí)行機構(gòu);若監(jiān)聽到所述第四觸發(fā)部件處于松開狀態(tài),則生成第三機構(gòu)控制指令,所述第三機構(gòu)控制指令用于關(guān)閉所述執(zhí)行機構(gòu)。在本實施例中,該第四觸發(fā)部件可以是鼠標左鍵、鼠標右鍵或者鼠標上配置的其他物理按鍵。當監(jiān)聽到該第四觸發(fā)部件處于被按下的狀態(tài)時,則生成第二機構(gòu)控制指令,并將該第二機構(gòu)控制指令發(fā)送至機械臂,控制機械臂的執(zhí)行機構(gòu)打開;而當監(jiān)聽到該第四觸發(fā)部件處于松開狀態(tài)時,則生成第三機構(gòu)控制指令,并將該第三機構(gòu)控制指令發(fā)送至機械臂,控制機械臂的執(zhí)行機構(gòu)關(guān)閉。示例性地,在一個應用場景下,用戶按下某按鍵時,機械臂末端的執(zhí)行機構(gòu)打開、啟動并執(zhí)行相應操作。用戶保持按下該按鍵的狀態(tài),該執(zhí)行機構(gòu)持續(xù)作業(yè),直到用戶認為該執(zhí)行機構(gòu)已完成階段性的作業(yè)時,用戶松開該按鍵,該執(zhí)行機構(gòu)則關(guān)閉,停止作業(yè)。
需要說明的是,上述的第一觸發(fā)部件、第二觸發(fā)部件、第三觸發(fā)部件、第四觸發(fā)部件具體可以是控制設(shè)備上的按鍵、搖桿、彈性結(jié)構(gòu)、移動部件等一切可以進行指令輸入的部件??刂圃O(shè)備可以預先設(shè)定哪一個部件為第一觸發(fā)部件,哪一個部件為第二觸發(fā)部件,哪一個部件為第三觸發(fā)部件,哪一個部件為第四觸發(fā)部件,當相應部件被觸發(fā)(比如,被按下、被觸壓、被提起、被扭動,等等)時,則生成對應的觸發(fā)事件,比如上述的第一觸發(fā)事件、第二觸發(fā)事件、第三觸發(fā)事件或第四觸發(fā)事件。
在本發(fā)明實施例中,通過預先建立第一觸發(fā)部件、第二觸發(fā)部件與目標旋轉(zhuǎn)軸之間轉(zhuǎn)動坐標系的轉(zhuǎn)換關(guān)系,將第一觸發(fā)事件、第二觸發(fā)事件分別轉(zhuǎn)換成對目標旋轉(zhuǎn)軸的第一轉(zhuǎn)動方向、第二轉(zhuǎn)動方向的控制指令,從而建立起控制設(shè)備上第一觸發(fā)部件、第二觸發(fā)部件與機械臂上目標旋轉(zhuǎn)軸轉(zhuǎn)動的直觀聯(lián)系,提升了機械臂旋轉(zhuǎn)軸的運動控制效率。
進一步地,還通過預先建立控制設(shè)備的移動部件與機械臂之間運動坐標系的轉(zhuǎn)換關(guān)系,將移動部件的移動情況轉(zhuǎn)換成機械臂的控制指令,從而建立起控制設(shè)備上移動部件與機械臂運動的直觀聯(lián)系,提升了機械臂的運動控制效率。
應理解,上述實施例中各步驟的序號的大小并不意味著執(zhí)行順序的先后,各過程的執(zhí)行順序應以其功能和內(nèi)在邏輯確定,而不應對本發(fā)明實施例的實施過程構(gòu)成任何限定。
對應于上文實施例所述的機械臂的運動控制方法,圖6示出了本發(fā)明實施例提供的機械臂的運動控制裝置的結(jié)構(gòu)框圖,所述機械臂的運動控制裝置可以是內(nèi)置于圖1所示的上位機子系統(tǒng)內(nèi)的軟件模塊、硬件模塊或者是軟硬結(jié)合的模塊。為了便于說明,僅示出了與本實施例相關(guān)的部分。
本實施例中,一種機械臂的運動控制裝置包括:
觸發(fā)事件監(jiān)聽模塊601,用于監(jiān)聽控制設(shè)備上第一觸發(fā)部件和第二觸發(fā)部件的觸發(fā)事件;
第一轉(zhuǎn)動指令生成模塊602,用于若所述觸發(fā)事件監(jiān)聽模塊601監(jiān)聽到所述第一觸發(fā)部件的第一觸發(fā)事件,則生成第一轉(zhuǎn)動控制指令;
第一轉(zhuǎn)動指令生成模塊603,用于將所述第一轉(zhuǎn)動指令生成模塊602生成的所述第一轉(zhuǎn)動控制指令發(fā)送至所述機械臂,以根據(jù)所述第一轉(zhuǎn)動控制指令驅(qū)動所述機械臂的目標旋轉(zhuǎn)軸以預設(shè)第一轉(zhuǎn)動速度沿第一轉(zhuǎn)動方向轉(zhuǎn)動;
第二轉(zhuǎn)動指令生成模塊604,用于若所述觸發(fā)事件監(jiān)聽模塊601監(jiān)聽到所述第二觸發(fā)部件的第二觸發(fā)事件,則生成第二轉(zhuǎn)動控制指令;
第二轉(zhuǎn)動指令生成模塊605,用于將所述第二轉(zhuǎn)動指令生成模塊604生成的所述第二轉(zhuǎn)動控制指令發(fā)送至所述機械臂,以根據(jù)所述第二轉(zhuǎn)動控制指令驅(qū)動所述目標旋轉(zhuǎn)軸以預設(shè)第二轉(zhuǎn)動速度沿第二轉(zhuǎn)動方向轉(zhuǎn)動;
所述第一轉(zhuǎn)動方向與所述第二轉(zhuǎn)動方向相反。
進一步地,所述機械臂配置有兩個以上旋轉(zhuǎn)軸,所述運動控制裝置還可以包括:
旋轉(zhuǎn)軸確定模塊,用于從所述兩個以上旋轉(zhuǎn)軸中確定一個以上的旋轉(zhuǎn)軸作為所述目標旋轉(zhuǎn)軸。
進一步地,所述運動控制裝置還可以包括:
移動檢測模塊,用于對所述控制設(shè)備的移動情況進行檢測,檢測所述控制設(shè)備的移動部件的移動方向和在所述移動方向上的移動距離;
運動方向轉(zhuǎn)換模塊,用于將所述移動部件的移動方向轉(zhuǎn)換為所述機械臂的運動方向;
運動速度轉(zhuǎn)換模塊,用于根據(jù)所述移動部件的所述移動距離確定所述機械臂在所述運動方向上的運動速度;
第一運動指令生成模塊,用于生成第一運動控制指令,所述第一運動控制指令用于控制所述機械臂以所述運動速度沿所述運動方向運動;
第一運動指令發(fā)送模塊,用于將所述第一運動控制指令發(fā)送至所述機械臂。
進一步地,所述運動控制裝置還可以包括:
第三觸發(fā)事件監(jiān)聽模塊,用于監(jiān)聽所述控制設(shè)備上第三觸發(fā)部件的第三觸發(fā)事件;
監(jiān)聽觸發(fā)模塊,用于若所述第三觸發(fā)事件監(jiān)聽模塊監(jiān)聽到所述第三觸發(fā)事件,則觸發(fā)所述移動檢測模塊。
進一步地,所述運動控制裝置還可以包括:
第四觸壓監(jiān)聽模塊,用于監(jiān)聽所述控制設(shè)備上第四觸發(fā)部件的第四觸發(fā)事件;
機構(gòu)指令生成模塊,用于若監(jiān)聽到所述第四觸發(fā)事件,則根據(jù)所述第四觸發(fā)事件生成機構(gòu)控制指令;
機構(gòu)指令發(fā)送模塊,用于將所述機構(gòu)控制指令發(fā)送至所述機械臂,以根據(jù)所述機構(gòu)控制指令驅(qū)動所述機械臂末端連接的執(zhí)行機構(gòu)運動。
進一步地,所述機構(gòu)指令生成模塊可以包括:
第一機構(gòu)指令生成單元,用于若監(jiān)聽到關(guān)于所述第四觸發(fā)部件的雙擊操作事件,則根據(jù)所述雙擊操作事件生成第一機構(gòu)控制指令,所述第一機構(gòu)控制指令用于控制所述執(zhí)行機構(gòu)在打開狀態(tài)和關(guān)閉狀態(tài)之間的切換;
和/或
第二機構(gòu)指令生成單元,用于若監(jiān)聽到所述第四觸發(fā)部件處于被按下的狀態(tài),則生成第二機構(gòu)控制指令,所述第二機構(gòu)控制指令用于打開所述執(zhí)行機構(gòu);
第三機構(gòu)指令生成單元,用于若監(jiān)聽到所述第四觸發(fā)部件處于松開狀態(tài),則生成第三機構(gòu)控制指令,所述第三機構(gòu)控制指令用于關(guān)閉所述執(zhí)行機構(gòu)。
圖7是本發(fā)明一實施例提供的計算機的示意圖。如圖7所示,該實施例的計算機7包括:處理器70、存儲器71以及存儲在所述存儲器71中并可在所述處理器70上運行的計算機程序72,例如機械臂的運動控制程序。所述處理器70執(zhí)行所述計算機程序72時實現(xiàn)上述各個機械臂的運動控制方法實施例中的步驟,例如圖3所示的步驟301至305。或者,所述處理器70執(zhí)行所述計算機程序72時實現(xiàn)上述各裝置實施例中各模塊/單元的功能,例如圖6所示模塊601至605的功能。
示例性的,所述計算機程序72可以被分割成一個或多個模塊/單元,所述一個或者多個模塊/單元被存儲在所述存儲器71中,并由所述處理器70執(zhí)行,以完成本發(fā)明。所述一個或多個模塊/單元可以是能夠完成特定功能的一系列計算機程序指令段,該指令段用于描述所述計算機程序72在所述計算機7中的執(zhí)行過程。
所述計算機7可以是移動終端、桌上型計算機、筆記本、掌上電腦及云端服務器等計算設(shè)備。所述計算機可包括,但不僅限于,處理器70、存儲器71。本領(lǐng)域技術(shù)人員可以理解,圖7僅僅是計算機7的示例,并不構(gòu)成對計算機7的限定,可以包括比圖示更多或更少的部件,或者組合某些部件,或者不同的部件,例如所述計算機還可以包括輸入輸出設(shè)備、網(wǎng)絡(luò)接入設(shè)備、總線等。
所述處理器70可以是中央處理單元(centralprocessingunit,cpu),還可以是其他通用處理器、數(shù)字信號處理器(digitalsignalprocessor,dsp)、專用集成電路(applicationspecificintegratedcircuit,asic)、現(xiàn)成可編程門陣列(field-programmablegatearray,fpga)或者其他可編程邏輯器件、分立門或者晶體管邏輯器件、分立硬件組件等。通用處理器可以是微處理器或者該處理器也可以是任何常規(guī)的處理器等。
所述存儲器71可以是所述計算機7的內(nèi)部存儲單元,例如計算機7的硬盤或內(nèi)存。所述存儲器71也可以是所述計算機7的外部存儲設(shè)備,例如所述計算機7上配備的插接式硬盤,智能存儲卡(smartmediacard,smc),安全數(shù)字(securedigital,sd)卡,閃存卡(flashcard)等。進一步地,所述存儲器71還可以既包括所述計算機7的內(nèi)部存儲單元也包括外部存儲設(shè)備。所述存儲器71用于存儲所述計算機程序以及所述計算機所需的其他程序和數(shù)據(jù)。所述存儲器71還可以用于暫時地存儲已經(jīng)輸出或者將要輸出的數(shù)據(jù)。
所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡潔,上述描述的系統(tǒng),裝置和單元的具體工作過程,可以參考前述方法實施例中的對應過程,在此不再贅述。
在本申請所提供的幾個實施例中,應該理解到,所揭露的系統(tǒng),裝置和方法,可以通過其它的方式實現(xiàn)。例如,以上所描述的裝置實施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式,例如多個單元或組件可以結(jié)合或者可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機械或其它的形式。
所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上??梢愿鶕?jù)實際的需要選擇其中的部分或者全部單元來實現(xiàn)本實施例方案的目的。
另外,在本發(fā)明各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以采用硬件的形式實現(xiàn),也可以采用軟件功能單元的形式實現(xiàn)。
所述集成的單元如果以軟件功能單元的形式實現(xiàn)并作為獨立的產(chǎn)品銷售或使用時,可以存儲在一個計算機可讀取存儲介質(zhì)中?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻的部分或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品存儲在一個存儲介質(zhì)中,包括若干指令用以使得一臺計算機設(shè)備(可以是個人計算機,服務器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實施例所述方法的全部或部分步驟。而前述的存儲介質(zhì)包括:u盤、移動硬盤、只讀存儲器(rom,read-onlymemory)、隨機存取存儲器(ram,randomaccessmemory)、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
以上所述,以上實施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述實施例對本發(fā)明進行了詳細的說明,本領(lǐng)域的普通技術(shù)人員應當理解:其依然可以對前述各實施例所記載的技術(shù)方案進行修改,或者對其中部分技術(shù)特征進行等同替換;而這些修改或者替換,并不使相應技術(shù)方案的本質(zhì)脫離本發(fā)明各實施例技術(shù)方案的精神和范圍。