国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      電機(jī)通用控制系統(tǒng)及方法與流程

      文檔序號(hào):12662554閱讀:717來(lái)源:國(guó)知局
      電機(jī)通用控制系統(tǒng)及方法與流程

      本發(fā)明涉及電機(jī)控制領(lǐng)域,具體涉及一種電機(jī)通用控制系統(tǒng)及方法。



      背景技術(shù):

      目前,對(duì)于電機(jī)的控制,一般使用單片機(jī)+實(shí)時(shí)操作系統(tǒng)(如uC/OS II或者freeRTOS)或者應(yīng)用處理器(如ARM Cortex-A、X86)+實(shí)時(shí)操作系統(tǒng)(如linux+(RTLinux/RTAI/Xenomai)、VxWorks)的硬件模式,這樣可以保證控制的實(shí)時(shí)性與準(zhǔn)確性。同時(shí),對(duì)于不同的電機(jī)類(lèi)型,控制方式也千差萬(wàn)別,比如:

      步進(jìn)電動(dòng)機(jī)是一種將電脈沖信號(hào)轉(zhuǎn)換成相應(yīng)角位移或線(xiàn)位移的電動(dòng)機(jī),步進(jìn)驅(qū)動(dòng)器通過(guò)脈沖信號(hào)控制,當(dāng)步進(jìn)驅(qū)動(dòng)器接收到一個(gè)脈沖信號(hào),它就驅(qū)動(dòng)步進(jìn)電機(jī)按設(shè)定的方向轉(zhuǎn)動(dòng)一個(gè)固定的角度。通過(guò)控制脈沖頻率來(lái)控制電機(jī)轉(zhuǎn)動(dòng)的速度和加速度,從而達(dá)到調(diào)速的目的。

      舵機(jī)是一種位置(角度)伺服的驅(qū)動(dòng)器,適用于那些需要角度不斷變化并可以保持的控制系統(tǒng),其實(shí)質(zhì)是一種伺服馬達(dá)。舵機(jī)需要通過(guò)固定周期的PWM(Pulse Width Modulation,脈寬調(diào)制)信號(hào)控制。

      直流電機(jī)通過(guò)閉環(huán)PID(Proportion Integration Differentiation,比例積分微分)控制。

      由此可見(jiàn),對(duì)于不同的電機(jī),不同的微處理器,控制軟件也會(huì)不同。在某些應(yīng)用場(chǎng)合,如服務(wù)機(jī)器人、玩具機(jī)器人,對(duì)于精度要求比較低,而且通常會(huì)使用多種不同電機(jī)來(lái)控制。在這種情況下,如果都使用微處理器控制每種電機(jī),不僅會(huì)使軟、硬件架構(gòu)都比較復(fù)雜,而且會(huì)增加研發(fā)、測(cè)試、生產(chǎn)、維護(hù)成本。



      技術(shù)實(shí)現(xiàn)要素:

      本發(fā)明提供一種電機(jī)通用控制系統(tǒng)及方法,以提高系統(tǒng)的適應(yīng)性,簡(jiǎn)化產(chǎn)品在需要多種電機(jī)的情況下的軟、硬件架構(gòu)。

      為此,本發(fā)明提供如下技術(shù)方案:

      一種電機(jī)通用控制系統(tǒng),所述電機(jī)用于驅(qū)動(dòng)被控對(duì)象運(yùn)動(dòng),所述系統(tǒng)包括:應(yīng)用層模塊、規(guī)劃層模塊、以及與被控對(duì)象不同驅(qū)動(dòng)電機(jī)相對(duì)應(yīng)的適配層模塊和驅(qū)動(dòng)層模塊;

      所述應(yīng)用層模塊用于根據(jù)應(yīng)用需求,向所述規(guī)劃層模塊下發(fā)通用運(yùn)動(dòng)指令;

      所述規(guī)劃層模塊用于接收所述應(yīng)用層模塊下發(fā)的通用運(yùn)動(dòng)指令,并對(duì)所述通用運(yùn)動(dòng)指令進(jìn)行解析,結(jié)合被控對(duì)象當(dāng)前運(yùn)動(dòng)狀態(tài),生成運(yùn)動(dòng)目標(biāo)集合;

      所述適配層模塊用于根據(jù)所述運(yùn)動(dòng)目標(biāo)集合生成對(duì)應(yīng)電機(jī)的控制信息,并將所述控制信息發(fā)送給對(duì)應(yīng)所述電機(jī)的驅(qū)動(dòng)層模塊;

      所述驅(qū)動(dòng)層模塊用于根據(jù)接收到的控制信息控制對(duì)應(yīng)電機(jī)工作,以使所述電機(jī)驅(qū)動(dòng)被控對(duì)象運(yùn)動(dòng)。

      優(yōu)選地,所述通用運(yùn)動(dòng)指令包括以下任意一種或多種:?jiǎn)⑼V噶?、點(diǎn)位指令、直線(xiàn)指令、圓弧指令、動(dòng)作文件指令、調(diào)速指令。

      優(yōu)選地,所述系統(tǒng)還包括:接口層模塊,用于提供不同應(yīng)用環(huán)境對(duì)應(yīng)的接口;

      所述應(yīng)用層模塊利用所述接口層模塊提供的接口向所述規(guī)劃層模塊下發(fā)通用運(yùn)動(dòng)指令。

      優(yōu)選地,所述接口層模塊提供的接口包括以下任意一種或多種:C接口、C++接口、Java接口。

      優(yōu)選地,所述規(guī)劃層模塊包括:

      規(guī)劃接口單元、指令解析單元、狀態(tài)處理單元、核心處理單元、輸出單元;

      所述規(guī)劃接口單元,用于接收所述應(yīng)用層模塊下發(fā)的通用運(yùn)動(dòng)指令;

      所述狀態(tài)處理單元,用于獲取被控對(duì)象當(dāng)前狀態(tài);

      所述指令解析單元,用于解析所述通用運(yùn)動(dòng)指令,獲得指令類(lèi)型及指令數(shù)據(jù);

      所述核心處理單元,用于根據(jù)所述指令類(lèi)型、指令數(shù)據(jù)、以及被控對(duì)象當(dāng)前狀態(tài),生成運(yùn)動(dòng)目標(biāo)集合;

      所述輸出單元,用于將所述運(yùn)動(dòng)目標(biāo)集合傳送給各適配層。

      優(yōu)選地,所述核心處理單元具體用于根據(jù)所述指令類(lèi)型、指令數(shù)據(jù)、以及被控對(duì)象當(dāng)前狀態(tài),進(jìn)行路徑規(guī)劃、軌跡規(guī)劃、插補(bǔ)處理,得到平滑的運(yùn)動(dòng)軌跡曲線(xiàn),將所述運(yùn)動(dòng)軌跡曲線(xiàn)轉(zhuǎn)換成各個(gè)自由度的運(yùn)動(dòng)序列點(diǎn)集合。

      優(yōu)選地,所述電機(jī)包括以下任意一種或多種:直流電機(jī)、舵機(jī)、步進(jìn)電機(jī)。

      一種電機(jī)通用控制方法,所述電機(jī)用于驅(qū)動(dòng)被控對(duì)象運(yùn)動(dòng),所述方法包括:

      接收通用運(yùn)動(dòng)指令;

      對(duì)所述通用運(yùn)動(dòng)指令進(jìn)行解析,并結(jié)合被控對(duì)象當(dāng)前運(yùn)動(dòng)狀態(tài),生成運(yùn)動(dòng)目標(biāo)集合;

      由電機(jī)適配層模塊根據(jù)所述運(yùn)動(dòng)目標(biāo)集合生成對(duì)應(yīng)所述電機(jī)的控制信息;

      由電機(jī)驅(qū)動(dòng)層模塊根據(jù)所述控制信息控制所述電機(jī)工作,以使所述電機(jī)驅(qū)動(dòng)被控對(duì)象運(yùn)動(dòng)。

      優(yōu)選地,所述通用運(yùn)動(dòng)指令包括以下任意一種或多種:?jiǎn)⑼V噶?、點(diǎn)位指令、直線(xiàn)指令、圓弧指令、動(dòng)作文件指令、調(diào)速指令。

      優(yōu)選地,所述方法還包括:

      提供對(duì)應(yīng)不同應(yīng)用環(huán)境的接口;

      所述接收通用運(yùn)動(dòng)指令包括:利用所述接口接收所述通用運(yùn)動(dòng)指令。

      優(yōu)選地,所述接口包括以下任意一種或多種:C接口、C++接口、Java接口。

      優(yōu)選地,所述對(duì)所述通用運(yùn)動(dòng)指令進(jìn)行解析,并結(jié)合被控對(duì)象當(dāng)前運(yùn)動(dòng)狀態(tài),生成運(yùn)動(dòng)目標(biāo)集合包括:

      解析所述通用運(yùn)動(dòng)指令,獲得指令類(lèi)型及指令數(shù)據(jù);

      獲取被控對(duì)象當(dāng)前狀態(tài);

      根據(jù)所述指令類(lèi)型、指令數(shù)據(jù)、以及被控對(duì)象當(dāng)前狀態(tài),進(jìn)行路徑規(guī)劃、軌跡規(guī)劃、插補(bǔ)處理,得到平滑的運(yùn)動(dòng)軌跡曲線(xiàn);

      將所述運(yùn)動(dòng)軌跡曲線(xiàn)轉(zhuǎn)換成各個(gè)自由度的運(yùn)動(dòng)序列點(diǎn)集合。

      優(yōu)選地,所述電機(jī)包括以下任意一種或多種:直流電機(jī)、舵機(jī)、步進(jìn)電機(jī)。

      本發(fā)明實(shí)施例提供的一種電機(jī)通用控制系統(tǒng)及方法,采用分層架構(gòu),上層模塊不用關(guān)注底層具體是什么電機(jī),大大增加了系統(tǒng)的通用性,通過(guò)軟、件硬的配合,可以有效簡(jiǎn)化系統(tǒng)架構(gòu),降低研發(fā)、測(cè)試、生產(chǎn)、維護(hù)成本。

      附圖說(shuō)明

      為了更清楚地說(shuō)明本申請(qǐng)實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明中記載的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,還可以根據(jù)這些附圖獲得其他的附圖。

      圖1是本發(fā)明實(shí)施例電機(jī)通用控制系統(tǒng)的一種結(jié)構(gòu)示意圖;

      圖2是本發(fā)明實(shí)施例電機(jī)通用控制系統(tǒng)中規(guī)劃層模塊的一種結(jié)構(gòu)示意圖;

      圖3是本發(fā)明實(shí)施例中直流電機(jī)的驅(qū)動(dòng)原理圖;

      圖4是本發(fā)明實(shí)施例中通過(guò)細(xì)分驅(qū)動(dòng)器驅(qū)動(dòng)步進(jìn)電機(jī)的原理圖;

      圖5是本發(fā)明實(shí)施例中通過(guò)非細(xì)分驅(qū)動(dòng)器驅(qū)動(dòng)步進(jìn)電機(jī)的原理圖;

      圖6是本發(fā)明實(shí)施例電機(jī)通用控制方法的流程圖。

      具體實(shí)施方式

      為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明實(shí)施例的方案,下面結(jié)合附圖和實(shí)施方式對(duì)本發(fā)明實(shí)施例作進(jìn)一步的詳細(xì)說(shuō)明。

      針對(duì)現(xiàn)有技術(shù)對(duì)于不同的電機(jī),不同的微處理器,采用不同的控制軟件,從而使得軟、硬件架構(gòu)都比較復(fù)雜的問(wèn)題,本發(fā)明實(shí)施例提供一種實(shí)施例電機(jī)通用控制系統(tǒng)及方法,采用分層方式的軟、硬件架構(gòu),使其更具通用性,提高產(chǎn)品的性?xún)r(jià)比,以更好地適應(yīng)普通家庭場(chǎng)景、以及普通消費(fèi)類(lèi)運(yùn)動(dòng)產(chǎn)品的需求。

      如圖1所示,是本發(fā)明實(shí)施例電機(jī)通用控制系統(tǒng)的一種結(jié)構(gòu)示意圖。

      在該實(shí)施例中,所述系統(tǒng)采用不同層次的模塊,以驅(qū)動(dòng)一種或多種不同電機(jī),圖1中示出了三種不同的電機(jī),分別為:直流電機(jī)、舵機(jī)、步進(jìn)電機(jī),這些電機(jī)用于驅(qū)動(dòng)被控對(duì)象產(chǎn)生相應(yīng)的運(yùn)動(dòng)。需要說(shuō)明的是,在實(shí)際應(yīng)用中,可以根據(jù)被控對(duì)象的運(yùn)動(dòng)方式,選用相應(yīng)的電機(jī),具體需要一種還是多種電機(jī),根據(jù)被控對(duì)象的運(yùn)動(dòng)需求來(lái)確定,對(duì)此本發(fā)明實(shí)施例不做限定。該電機(jī)通用控制系統(tǒng)包括:應(yīng)用層模塊、規(guī)劃層模塊、以及與被控對(duì)象不同驅(qū)動(dòng)電機(jī)相對(duì)應(yīng)的適配層模塊和驅(qū)動(dòng)層模塊,如圖1中所示,與直流電機(jī)對(duì)應(yīng)的是直流電機(jī)適配層模塊和直流電機(jī)驅(qū)動(dòng)層模塊,與舵機(jī)對(duì)應(yīng)的是舵機(jī)適配層模塊和舵機(jī)驅(qū)動(dòng)層模塊,與步進(jìn)電機(jī)對(duì)應(yīng)的是步進(jìn)電機(jī)適配層模塊和步進(jìn)電機(jī)驅(qū)動(dòng)層模塊。

      下面對(duì)上述各模塊及該系統(tǒng)的工作過(guò)程進(jìn)行詳細(xì)說(shuō)明。

      上述應(yīng)用層模塊用于根據(jù)應(yīng)用需求,向所述規(guī)劃層模塊下發(fā)通用運(yùn)動(dòng)指令,比如啟停指令、點(diǎn)位指令、直線(xiàn)指令、圓弧指令、動(dòng)作文件指令、調(diào)速指令等;

      上述規(guī)劃層模塊用于接收所述應(yīng)用層模塊下發(fā)的通用運(yùn)動(dòng)指令,并對(duì)所述通用運(yùn)動(dòng)指令進(jìn)行解析,結(jié)合被控對(duì)象當(dāng)前運(yùn)動(dòng)狀態(tài),生成運(yùn)動(dòng)目標(biāo)集合,比如具體可以是各個(gè)自由度的運(yùn)動(dòng)序列點(diǎn)集合;

      上述適配層模塊用于根據(jù)所述運(yùn)動(dòng)目標(biāo)集合生成對(duì)應(yīng)電機(jī)的控制信息,并將所述控制信息發(fā)送給對(duì)應(yīng)所述電機(jī)的驅(qū)動(dòng)層模塊;具體地,可以根據(jù)對(duì)應(yīng)的電機(jī)類(lèi)型做控制和狀態(tài)數(shù)據(jù)轉(zhuǎn)換,比如,對(duì)于直流電機(jī),可以將相應(yīng)的運(yùn)動(dòng)序列點(diǎn)集合轉(zhuǎn)換成絕對(duì)位置信息;對(duì)于步進(jìn)電機(jī),則需要將相應(yīng)的運(yùn)動(dòng)序列點(diǎn)集合轉(zhuǎn)換為相對(duì)位置與方向信息等;

      上述驅(qū)動(dòng)層模塊用于根據(jù)接收到的控制信息控制對(duì)應(yīng)電機(jī)工作,以使所述電機(jī)驅(qū)動(dòng)被控對(duì)象運(yùn)動(dòng)。

      需要說(shuō)明的是,為了便于不同應(yīng)用環(huán)境下的規(guī)劃層模塊都能夠方便地接收應(yīng)用層模塊下發(fā)的通用運(yùn)動(dòng)指令,在本發(fā)明系統(tǒng)中,還可進(jìn)一步包括:接口層模塊,用于提供不同應(yīng)用環(huán)境對(duì)應(yīng)的接口,比如所述接口可以包括以下任意一種或多種:C接口、C++接口、Java接口。這樣,所述應(yīng)用層模塊就可以調(diào)用所述接口層模塊提供的接口向所述規(guī)劃層模塊下發(fā)通用運(yùn)動(dòng)指令,進(jìn)一步增加了本發(fā)明系統(tǒng)對(duì)不同應(yīng)用環(huán)境的適應(yīng)能力。

      另外,在實(shí)際應(yīng)用中,上述各模塊可以由AP(Application Processor,應(yīng)用處理器)芯片(如ARM Cortex-A處理器)及相應(yīng)的應(yīng)用程序來(lái)實(shí)現(xiàn),所述應(yīng)用程序可以是在普通Linux系統(tǒng)、或者Android系統(tǒng)、或者Windows系統(tǒng)下運(yùn)行。另外,上述應(yīng)用層模塊、接口層模塊及規(guī)劃層模塊不用關(guān)注底層具體是什么電機(jī);適配層模塊呈上啟下,生成對(duì)應(yīng)電機(jī)的控制信息;驅(qū)動(dòng)層模塊根據(jù)所述控制信息直接控制相應(yīng)電機(jī),驅(qū)動(dòng)被控對(duì)象做相應(yīng)的運(yùn)動(dòng)。

      上述規(guī)劃層模塊需要對(duì)應(yīng)用層模塊下發(fā)的通用運(yùn)動(dòng)指令進(jìn)行解析,并結(jié)合被控對(duì)象當(dāng)前運(yùn)動(dòng)狀態(tài),生成運(yùn)動(dòng)目標(biāo)集合,圖2示出了規(guī)劃層模塊的一種結(jié)構(gòu)示意圖。

      所述規(guī)劃層模塊包括以下各單元:規(guī)劃接口單元、指令解析單元、狀態(tài)處理單元、核心處理單元、輸出單元;

      所述規(guī)劃接口單元,用于接收所述應(yīng)用層模塊下發(fā)的通用運(yùn)動(dòng)指令;

      所述指令解析單元,用于解析所述通用運(yùn)動(dòng)指令,獲得指令類(lèi)型及指令數(shù)據(jù);

      所述狀態(tài)處理單元,用于獲取被控對(duì)象當(dāng)前狀態(tài);

      所述核心處理單元,用于根據(jù)所述指令類(lèi)型、指令數(shù)據(jù)、以及被控對(duì)象當(dāng)前狀態(tài),生成運(yùn)動(dòng)目標(biāo)集合;

      所述輸出單元,用于將所述運(yùn)動(dòng)目標(biāo)集合傳送給各適配層。

      上述核心處理單元主要用于進(jìn)行一些計(jì)算工作,比如根據(jù)所述指令類(lèi)型、指令數(shù)據(jù)、以及被控對(duì)象當(dāng)前狀態(tài),進(jìn)行路徑規(guī)劃、軌跡規(guī)劃、插補(bǔ)處理,得到平滑的運(yùn)動(dòng)軌跡曲線(xiàn),將所述運(yùn)動(dòng)軌跡曲線(xiàn)轉(zhuǎn)換成各個(gè)自由度的運(yùn)動(dòng)序列點(diǎn)集合,這些計(jì)算及處理工作可以采用現(xiàn)有的一些算法來(lái)完成,對(duì)此本發(fā)明實(shí)施例不做限定。

      需要說(shuō)明的是,在規(guī)劃層模塊支持多進(jìn)程工作的情況下,所述規(guī)劃層模塊還可進(jìn)一步包括任務(wù)管理單元,即對(duì)指令解析單元解析得到的多個(gè)指令解析結(jié)果,分配到不同的進(jìn)程進(jìn)行處理,任務(wù)管理單元對(duì)其進(jìn)行統(tǒng)一分配及管理。另外,核心處理單元進(jìn)行路徑規(guī)劃、軌跡規(guī)劃、插補(bǔ)處理等工作可以由其獨(dú)立完成,也可以通過(guò)調(diào)用相應(yīng)的處理單元來(lái)完成,對(duì)此本發(fā)明實(shí)施例不做限定。

      下面針對(duì)不同電機(jī),詳細(xì)說(shuō)明對(duì)應(yīng)的驅(qū)動(dòng)層模塊對(duì)電機(jī)的控制方式。

      1.直流電機(jī)驅(qū)動(dòng)層模塊:

      所述直流電機(jī)驅(qū)動(dòng)層模塊在具體應(yīng)用中可以采用AP芯片(如ARM Cortex-A)加直流電機(jī)驅(qū)動(dòng)IC(Integrated Circuit,集成電路)芯片的結(jié)構(gòu)形式,如圖3所示,直流電機(jī)驅(qū)動(dòng)IC芯片即圖中所示的直流電機(jī)驅(qū)動(dòng)器。

      (1)硬件連接上需要掛一個(gè)直流有刷電機(jī)驅(qū)動(dòng)IC,通過(guò)GPIO模擬PWM(Pulse Width Modulation,脈沖寬度調(diào)制)輸出模式控制驅(qū)動(dòng)IC的相應(yīng)引腳,直流電機(jī)驅(qū)動(dòng)IC再向直流有刷電機(jī)輸出PWM信號(hào)。

      (2)直流電機(jī)不同于步進(jìn)電機(jī)和舵機(jī),電路中需要反饋元件,以反饋當(dāng)前電機(jī)所在的位置。因?yàn)椴竭M(jìn)電機(jī)只要不失步,用戶(hù)發(fā)多少脈沖,步進(jìn)電機(jī)就走多少步,可以做到開(kāi)環(huán)控制;舵機(jī)是根據(jù)控制信號(hào)的占空比來(lái)決定自身運(yùn)動(dòng)的絕對(duì)位置,到目標(biāo)位置自己就會(huì)停下來(lái)。由于AP芯片一般沒(méi)有正交編碼器計(jì)數(shù)器單元,因此難以使用高精度的正交編碼器計(jì)數(shù),但是AP芯片一般有ADC(Analog-to-Digital Converter,模數(shù)轉(zhuǎn)換器)采樣單元,因此,如圖3中所示,可以使用VR(Variable Resistor,可變電阻器)作為位置反饋元件。

      (3)采用PID(比例-積分-微分)控制算法,每個(gè)控制周期(如10ms)根據(jù)目標(biāo)位置與根據(jù)VR反饋計(jì)算的當(dāng)前位置差,通過(guò)PID算法計(jì)算出PWM新的占空比輸出。

      調(diào)度誤差分析:操作系統(tǒng)調(diào)度延遲一般都不會(huì)超過(guò)1ms(支持高精度定時(shí)器的操作系統(tǒng)調(diào)度誤差一般在50us左右),這樣的延遲對(duì)于整體PID控制來(lái)說(shuō)影響不大,這樣就可以在一定精度范圍內(nèi)控制直流電機(jī)。

      2.步進(jìn)電機(jī)驅(qū)動(dòng)層模塊

      所述步進(jìn)電機(jī)驅(qū)動(dòng)層模塊可以采用AP芯片(如ARM Cortex-A),對(duì)于細(xì)分驅(qū)動(dòng)器(細(xì)分是指驅(qū)動(dòng)器將非細(xì)分驅(qū)動(dòng)器接收到1個(gè)脈沖驅(qū)動(dòng)步進(jìn)電機(jī)走1整步,調(diào)整為細(xì)分驅(qū)動(dòng)器接收1個(gè)脈沖驅(qū)動(dòng)步進(jìn)電機(jī)走1個(gè)微步,提高控制精度的同時(shí),也改善了電機(jī)的振動(dòng)和噪聲),可以由AP芯片發(fā)送脈沖信號(hào)給步進(jìn)電機(jī)細(xì)分驅(qū)動(dòng)器,再由步進(jìn)電機(jī)細(xì)分驅(qū)動(dòng)器的輸出連接步進(jìn)電機(jī)勵(lì)磁線(xiàn),連接示意圖見(jiàn)圖4,其中DIR信號(hào)用于控制細(xì)分驅(qū)動(dòng)器運(yùn)動(dòng)方向,即正轉(zhuǎn)或反轉(zhuǎn);對(duì)于非細(xì)分驅(qū)動(dòng)器,可以直接用AP芯片的GPIO(General Purpose Input Output,通用輸入/輸出)接口連接步進(jìn)電機(jī)勵(lì)磁線(xiàn),連接示意圖見(jiàn)圖5。

      考慮到AP芯片的運(yùn)行環(huán)境大都是Android、Linux、Windows、IOS等,即非實(shí)時(shí)系統(tǒng),系統(tǒng)調(diào)度會(huì)有us甚至ms級(jí)誤差。而且,AP芯片一般不具備正交編碼器計(jì)數(shù)器等硬件單元;而使用軟件定時(shí)器又會(huì)給系統(tǒng)帶來(lái)非常重的負(fù)擔(dān)。因此,針對(duì)這些問(wèn)題,本發(fā)明實(shí)施例提出了相應(yīng)的解決方案。

      針對(duì)步進(jìn)電機(jī)使用細(xì)分驅(qū)動(dòng)器的情況,可以采用以下措施:

      (1)不使用定時(shí)器生成脈沖,采用GPIO的PWM工作模式。

      (2)假設(shè)系統(tǒng)支持設(shè)置PWM個(gè)數(shù)控制,且系統(tǒng)調(diào)度誤差很小,如幾十個(gè)微秒級(jí)別,那么通過(guò)周期改變PWM波個(gè)數(shù)控制更準(zhǔn)確;如果系統(tǒng)調(diào)度誤差有幾百微秒甚至毫秒,或者系統(tǒng)就不支持PWM個(gè)數(shù)控制,則采用周期更改PWM輸出頻率,不指定個(gè)數(shù),以避免調(diào)度誤差導(dǎo)致一定時(shí)間內(nèi)無(wú)PWM波。比如控制周期是10ms,第一個(gè)周期希望發(fā)30個(gè)PWM波,第二個(gè)周期希望發(fā)35個(gè)PWM波,但是由于調(diào)度誤差,如果第二個(gè)周期晚來(lái)了1ms,那么就意味著有1ms時(shí)間是沒(méi)有任何PWM輸出的,有可能導(dǎo)致電機(jī)運(yùn)動(dòng)過(guò)程中出現(xiàn)抖動(dòng)。

      使用PWM波時(shí),考慮到有的運(yùn)行環(huán)境支持設(shè)置指定PWM波個(gè)數(shù),有的運(yùn)行環(huán)境不支持設(shè)置指定PWM個(gè)數(shù)。因此,可以采用以下處理方式:

      如果運(yùn)行環(huán)境支持設(shè)置PWM波個(gè)數(shù),并且調(diào)度誤差在幾十微秒級(jí)別,可以每個(gè)周期更改PWM信號(hào)的頻率與個(gè)數(shù)。根據(jù)每個(gè)周期的目標(biāo)位置與當(dāng)前位置計(jì)算目標(biāo)位置差,可以計(jì)算出應(yīng)該讓步進(jìn)電機(jī)走幾步,即發(fā)幾個(gè)脈沖,但是步進(jìn)電機(jī)每一步是要走一定角度的,大多時(shí)候計(jì)算步長(zhǎng)都不是一個(gè)整數(shù),而是有小數(shù)的。針對(duì)這種情況,可以采用四舍五入的方法,計(jì)算發(fā)出這么多個(gè)波后電機(jī)理論到達(dá)的位置,為下一個(gè)周期計(jì)算做準(zhǔn)備。這種方式在調(diào)度誤差平穩(wěn)且在幾十微秒時(shí),誤差很小。

      如果系統(tǒng)調(diào)度誤差不能保證,或者運(yùn)行環(huán)境不支持設(shè)置PWM波個(gè)數(shù)時(shí),那么可以不關(guān)注每個(gè)周期PWM波的個(gè)數(shù),只關(guān)注PWM波的頻率。這樣勻速階段PWM信號(hào)頻率不變,不會(huì)因?yàn)檎{(diào)度原因產(chǎn)生任何誤差;在加減速階段有可能出現(xiàn)誤差。但是一次運(yùn)動(dòng),一般總是先加速,再勻速,再減速,如先從0度走到90度,加速階段,如果系統(tǒng)調(diào)度總是提前到來(lái),那么低速運(yùn)動(dòng)時(shí)間被減少,加速階段會(huì)多走路程;減速階段,如果系統(tǒng)調(diào)度仍然還是提前到來(lái),那么高速運(yùn)動(dòng)時(shí)間被減速,最終少走路程,這樣加速多走,減速少走,總的來(lái)看誤差是有抵消的。當(dāng)然,操作系統(tǒng)調(diào)度誤差一般不可能總是提前或者滯后,一般情況下應(yīng)該服從正態(tài)分布,這樣加速階段可能有多走的周期,也可能有少走的周期,總的誤差也有抵消。另外,即使每次運(yùn)動(dòng)都是多走和少走也不會(huì)累計(jì),因?yàn)榉聪蜻\(yùn)動(dòng)的時(shí)候,誤差就可以部分或者全部抵消。同時(shí),在這種情況下,也不用每個(gè)周期去調(diào)整PWM信號(hào)的頻率,只有當(dāng)前PWM信號(hào)與目標(biāo)PWM信號(hào)的頻率不同的時(shí)候才需要調(diào)節(jié),這樣也減少了調(diào)整PWM信號(hào)頻率的時(shí)間和系統(tǒng)開(kāi)銷(xiāo)。

      由于常用操作系統(tǒng)(如Linux、Android、Windows)都不是實(shí)時(shí)系統(tǒng)。對(duì)電機(jī)運(yùn)動(dòng)控制一般都是周期控制,控制周期從工業(yè)級(jí)us級(jí)別到消費(fèi)品ms級(jí)別不等。為了避免N個(gè)周期后,N次調(diào)度誤差累積,每次定時(shí),可以基于第一次定時(shí)基準(zhǔn)時(shí)間,而不是基于上一次觸發(fā)時(shí)間,這樣可以避免調(diào)度誤差累積。而一次的調(diào)度誤差引入的影響,也僅在加減速時(shí)有影響,影響大小與加速度和調(diào)度時(shí)間差乘積成正比。比如加速度是300deg/s2,控制周期是10ms,第m個(gè)周期速度是100deg/s,第m+1個(gè)周期速度是103deg/s,如果沒(méi)有調(diào)度誤差,那么m周期應(yīng)該走1.0deg(100deg/s*10ms),m+1周期應(yīng)該走1.03deg(103deg/s*10ms/1000),m和m+1兩個(gè)周期共走2.03deg。如果m+1次調(diào)度晚了0.5ms,m+2次調(diào)度正好,那么m周期實(shí)際走了1.05deg(100deg/s*10.5ms/1000),m+1周期實(shí)際走了0.9785deg(103deg/s*9.5ms/1000),實(shí)際兩個(gè)周期共走2.0285deg,相差0.0015deg,而0.0015deg=300deg/s2*10ms*0.5ms/1000000。

      3.舵機(jī)驅(qū)動(dòng)層模塊:

      舵機(jī)需要通過(guò)固定周期的PWM信號(hào)控制,在實(shí)際應(yīng)用中,所述舵機(jī)驅(qū)動(dòng)層模塊同樣可以采用AP芯片(如ARM Cortex-A)。

      需要說(shuō)明的是,對(duì)于舵機(jī)的控制,同樣存在與步進(jìn)電機(jī)類(lèi)似的實(shí)時(shí)性問(wèn)題,對(duì)此,可以采用如下策略:

      1.由于舵機(jī)的絕對(duì)位置與PWM占空比成比例關(guān)系,舵機(jī)控制一般需要一個(gè)周期為20ms的脈沖,該脈沖的高電平部分一般在0.5ms-2.5ms范圍內(nèi),那么可以算出控制脈沖占空比調(diào)節(jié)范圍在2.5%-12.5%之間。如果AP芯片的PWM驅(qū)動(dòng)僅支持設(shè)置整數(shù)PWM占空比,那么此時(shí)可以采用定時(shí)器模式,根據(jù)占空比,定時(shí)將GPIO拉高和拉低,畢竟舵機(jī)的控制信號(hào)是周期為20ms的PWM信號(hào),定時(shí)器模擬生成開(kāi)銷(xiāo)很小。如果AP芯片的PWM驅(qū)動(dòng)支持設(shè)置帶小數(shù)的PWM占空比,則推薦使用GPIO的PWM模式。

      調(diào)度誤差分析:操作系統(tǒng)調(diào)度延遲一般都不會(huì)超過(guò)1ms(支持高精度定時(shí)器的操作系統(tǒng)調(diào)度誤差一般在50us左右)這樣的延遲對(duì)于舵機(jī)控制來(lái)說(shuō),基本沒(méi)有什么影響,也不會(huì)最終影響舵機(jī)位置。

      下面以6個(gè)自由度機(jī)器手臂運(yùn)動(dòng)舉例,結(jié)合上述不同電機(jī)的控制方式,詳細(xì)說(shuō)明本發(fā)明系統(tǒng)的工作過(guò)程。

      所謂自由度是指自由運(yùn)動(dòng)空間的維數(shù),自由度的個(gè)數(shù)是指用于計(jì)算某個(gè)特征數(shù)(比如樣本期望或樣本方差)的獨(dú)立觀察值的個(gè)數(shù)。在機(jī)器人領(lǐng)域,一般一個(gè)關(guān)節(jié)就是一個(gè)自由度。

      如果需要機(jī)器人手指畫(huà)一條長(zhǎng)100mm的直線(xiàn),那么應(yīng)用層模塊下發(fā)通用運(yùn)動(dòng)指令到規(guī)劃層模塊,所述通用運(yùn)動(dòng)指令是指不考慮底層電機(jī)的類(lèi)型及具體的被控對(duì)象;規(guī)劃接口單元接收到所述通用運(yùn)動(dòng)指令后,傳送給指令解析單元對(duì)該指令進(jìn)行解析,核心處理單元根據(jù)指令解析單元的解析結(jié)果并結(jié)合被控對(duì)象當(dāng)前運(yùn)動(dòng)狀態(tài),生成運(yùn)動(dòng)目標(biāo)集合,傳送給各適配層模塊。

      需要說(shuō)明的是,通用運(yùn)動(dòng)指令封裝形式可以有很多種,如普通tag-value字符串,json字符串,接口參數(shù)等;指令內(nèi)容需要包括坐標(biāo)系信息、位置、速度、加速度等必要的運(yùn)動(dòng)控制信息;如這條直線(xiàn)是水平的,與x方向重合,以增量指令下發(fā),則可以指定世界坐標(biāo)系下增量指令類(lèi)型是100,那么這條指令類(lèi)型就是100,同時(shí)世界坐標(biāo)一般有6個(gè)值(x,y,z,a,b,c)其中x,y,z決定位置信息,a,b,c決定姿態(tài)信息,那么這條指令的增量位姿信息就是(100,0,0,0,0,0)。

      規(guī)劃層收到上述通用運(yùn)動(dòng)指令后,會(huì)首先根據(jù)當(dāng)前機(jī)械臂位置與姿態(tài),計(jì)算用戶(hù)想讓機(jī)械臂到達(dá)的目標(biāo)位置,然后判斷是否在機(jī)械臂工作空間內(nèi);如果確認(rèn)可以,則進(jìn)行軌跡規(guī)劃,然后進(jìn)行運(yùn)動(dòng)學(xué)反解,計(jì)算出機(jī)械臂6個(gè)關(guān)節(jié)每個(gè)的目標(biāo)值;然后對(duì)每個(gè)關(guān)節(jié)的目標(biāo)值進(jìn)行插值算法,以輸出位置、速度、加速度連續(xù)變化的運(yùn)動(dòng)曲線(xiàn),方便電機(jī)運(yùn)動(dòng)控制。需要說(shuō)明的是,規(guī)劃層模塊做軌跡點(diǎn)的理論計(jì)算時(shí),不考慮具體電機(jī)類(lèi)型,與不同電機(jī)對(duì)應(yīng)的適配層模塊從規(guī)劃層模塊計(jì)算得到的數(shù)據(jù)中提取和轉(zhuǎn)換自己需要的數(shù)據(jù)。

      所述核心處理單元主要是根據(jù)指令類(lèi)型,進(jìn)行運(yùn)動(dòng)安全和障礙判斷,進(jìn)而對(duì)指令數(shù)據(jù)進(jìn)行軌跡插補(bǔ),將插補(bǔ)后的數(shù)據(jù)通過(guò)運(yùn)動(dòng)學(xué)正反解,算出各個(gè)自由度運(yùn)動(dòng)目標(biāo)。

      在實(shí)際應(yīng)用中,本發(fā)明實(shí)施例的系統(tǒng)可以采用軟硬件相結(jié)合的控制方式,通過(guò)AP芯片實(shí)現(xiàn)對(duì)直流有刷電機(jī)、步進(jìn)電機(jī)、舵機(jī)位置的通用控制(一般系統(tǒng)中只用一種電機(jī),當(dāng)然也可以支持多種電機(jī))。

      本發(fā)明實(shí)施例提供的一種電機(jī)通用控制系統(tǒng),采用分層架構(gòu),上層模塊不用關(guān)注底層具體是什么電機(jī),大大增加了系統(tǒng)的通用性,通過(guò)軟、件硬的配合,可以有效簡(jiǎn)化系統(tǒng)架構(gòu),降低研發(fā)、測(cè)試、生產(chǎn)、維護(hù)成本。

      相應(yīng)地,本發(fā)明實(shí)施例還提供一種電機(jī)通用控制方法,如圖6所示,是該方法的一種流程圖,包括以下步驟:

      步驟601,接收通用運(yùn)動(dòng)指令;

      步驟602,對(duì)所述通用運(yùn)動(dòng)指令進(jìn)行解析,并結(jié)合被控對(duì)象當(dāng)前運(yùn)動(dòng)狀態(tài),生成運(yùn)動(dòng)目標(biāo)集合;

      具體地,解析所述通用運(yùn)動(dòng)指令,獲得指令類(lèi)型及指令數(shù)據(jù);獲取被控對(duì)象當(dāng)前狀態(tài);然后根據(jù)所述指令類(lèi)型、指令數(shù)據(jù)、以及被控對(duì)象當(dāng)前狀態(tài),進(jìn)行路徑規(guī)劃、軌跡規(guī)劃、插補(bǔ)處理,得到平滑的運(yùn)動(dòng)軌跡曲線(xiàn);最后將所述運(yùn)動(dòng)軌跡曲線(xiàn)轉(zhuǎn)換成各個(gè)自由度的運(yùn)動(dòng)序列點(diǎn)集合;

      步驟603,由電機(jī)適配層模塊根據(jù)所述運(yùn)動(dòng)目標(biāo)集合生成對(duì)應(yīng)所述電機(jī)的控制信息;

      步驟604,由電機(jī)驅(qū)動(dòng)層模塊根據(jù)所述控制信息控制所述電機(jī)工作,以使所述電機(jī)驅(qū)動(dòng)被控對(duì)象運(yùn)動(dòng)。

      對(duì)不同電機(jī)的控制過(guò)程可以參照前面本發(fā)明系統(tǒng)實(shí)施例中的說(shuō)明,在此不再贅述。

      在本發(fā)明實(shí)施例中,所述通用運(yùn)動(dòng)指令可以不考慮底層電機(jī)的類(lèi)型及控制方式,只需提供針對(duì)被控對(duì)象的啟停、點(diǎn)位、直線(xiàn)、圓弧、動(dòng)作文件、調(diào)速、控制等信息即可。

      另外,為了方便本發(fā)明方法在不同的環(huán)境下的適應(yīng)性,本發(fā)明方法另一實(shí)施例還可進(jìn)一步提供針對(duì)不同應(yīng)用環(huán)境的接口,這樣,應(yīng)用層下發(fā)通用運(yùn)動(dòng)指令時(shí),只需調(diào)用與應(yīng)用環(huán)境相適配的接口即可完成指令的下發(fā)。所述接口包括以下任意一種或多種:C接口、C++接口、Java接口等。

      本發(fā)明實(shí)施例的方法,可以實(shí)現(xiàn)對(duì)直流有刷電機(jī)、步進(jìn)電機(jī)、舵機(jī)的位置控制,可以應(yīng)用于由單一電機(jī)驅(qū)動(dòng)的被控對(duì)象,當(dāng)然也可以應(yīng)用于由多種電機(jī)驅(qū)動(dòng)的被控對(duì)象。

      本發(fā)明實(shí)施例提供的電機(jī)通用控制方法,采用分層架構(gòu),上層模塊不用關(guān)注底層具體是什么電機(jī),大大增加了系統(tǒng)的通用性,通過(guò)軟、件硬的配合,可以有效簡(jiǎn)化系統(tǒng)架構(gòu),降低研發(fā)、測(cè)試、生產(chǎn)、維護(hù)成本。

      本說(shuō)明書(shū)中的各個(gè)實(shí)施例均采用遞進(jìn)的方式描述,各個(gè)實(shí)施例之間相同相似的部分互相參見(jiàn)即可,每個(gè)實(shí)施例重點(diǎn)說(shuō)明的都是與其他實(shí)施例的不同之處,各實(shí)施例相關(guān)之處可以參見(jiàn)其它實(shí)施例的相關(guān)部分說(shuō)明即可。

      以上對(duì)本發(fā)明實(shí)施例進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體實(shí)施方式對(duì)本發(fā)明進(jìn)行了闡述,以上實(shí)施例的說(shuō)明只是用于幫助理解本發(fā)明的方法及系統(tǒng);同時(shí),對(duì)于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實(shí)施方式及應(yīng)用范圍上均會(huì)有改變之處,綜上所述,本說(shuō)明書(shū)內(nèi)容不應(yīng)理解為對(duì)本發(fā)明的限制。

      當(dāng)前第1頁(yè)1 2 3 
      網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1