機(jī)器人的控制方法和裝置的制造方法
【專利摘要】本發(fā)明涉及一種機(jī)器人的控制方法和裝置,所述方法包括:主站節(jié)點接收多個從站節(jié)點對應(yīng)的軸命令;所述主站節(jié)點通過總線對從站節(jié)點發(fā)送軸命令;所述從站節(jié)點通過總線接收所述軸命令,根據(jù)所述軸命令獲取對應(yīng)的狀態(tài)數(shù)據(jù),并將所述狀態(tài)數(shù)據(jù)通過總線返回至所述主站節(jié)點;主站節(jié)點接收多個從站節(jié)點返回的狀態(tài)數(shù)據(jù),并對所述狀態(tài)數(shù)據(jù)進(jìn)行存儲。采用本方法能夠有效提高模塊化機(jī)器人的控制性能。
【專利說明】
機(jī)器人的控制方法和裝置
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及機(jī)器人技術(shù)領(lǐng)域,特別是涉及一種機(jī)器人的控制方法和裝置。
【背景技術(shù)】
[0002]在設(shè)備制造領(lǐng)域中,機(jī)器人目前成為一種新興的生產(chǎn)設(shè)備,其擴(kuò)展新、系統(tǒng)性和操作的簡易性使得機(jī)器人能夠應(yīng)用于多種生產(chǎn)流水線來替代人工操作。目前出現(xiàn)了一種結(jié)構(gòu)簡化的模塊化機(jī)器人,可以將多個軸的控制環(huán)路集成在幾個特定的模塊內(nèi),模塊之間的電氣連接只有電源線和通訊總線。與傳統(tǒng)機(jī)器人相比,這種模塊化機(jī)器人消除了傳統(tǒng)的驅(qū)動控制電柜,但是由于各個軸與主控制器之間的通訊存在不同程度的延遲,由此導(dǎo)致模塊化機(jī)器人的控制性能降低。
【發(fā)明內(nèi)容】
[0003]基于此,有必要針對上述技術(shù)冋題,提供一種能夠有效提尚I旲塊化機(jī)器人的控制性能的機(jī)器人控制方法和裝置。
[0004]—種機(jī)器人的控制方法,所述方法包括:
[0005]主站節(jié)點接收多個從站節(jié)點對應(yīng)的軸命令;
[0006]所述主站節(jié)點通過總線對從站節(jié)點發(fā)送軸命令;
[0007]所述從站節(jié)點通過總線接收所述軸命令,根據(jù)所述軸命令獲取對應(yīng)的狀態(tài)數(shù)據(jù),并將所述狀態(tài)數(shù)據(jù)通過總線返回至所述主站節(jié)點;
[0008]主站節(jié)點接收多個從站節(jié)點返回的狀態(tài)數(shù)據(jù),并對所述狀態(tài)數(shù)據(jù)進(jìn)行存儲。
[0009]在其中一個實施例中,所述從站節(jié)點包括目標(biāo)從站節(jié)點,所述從站節(jié)點通過總線接收所述軸命令,根據(jù)所述軸命令獲取對應(yīng)的狀態(tài)數(shù)據(jù),并將所述狀態(tài)數(shù)據(jù)通過總線返回至所述主站節(jié)點的步驟包括:
[0010]所述目標(biāo)從站節(jié)點通過總線接收所述軸命令,識別所述軸命令并對所述軸命令進(jìn)行解析,得到解析后的軸命令;
[0011 ]所述目標(biāo)從站節(jié)點將所述解析后的軸命令存儲至對應(yīng)的命令緩存,在狀態(tài)緩存中獲取上一個周期的狀態(tài)數(shù)據(jù);
[0012]所述目標(biāo)從站節(jié)點將所述上一個周期的狀態(tài)數(shù)據(jù)按照預(yù)設(shè)格式進(jìn)行封包,得到封包后的狀態(tài)數(shù)據(jù),并將所述封包后的狀態(tài)數(shù)據(jù)發(fā)送至總線。
[0013]在其中一個實施例中,所述軸命令中包括同步命令;所述主站節(jié)點通過總線對從站節(jié)點發(fā)送軸命令的步驟之后,還包括:
[0014]所述主站節(jié)點開啟發(fā)送延時,在等待預(yù)設(shè)的時間間隔后觸發(fā)與目標(biāo)從站節(jié)點相同的同步動作;
[0015]其他從站節(jié)點通過總線接收所述同步命令,根據(jù)所述同步命令觸發(fā)與所述目標(biāo)從站節(jié)點相同的同步動作。
[0016]在其中一個實施例中,在所述將所述狀態(tài)數(shù)據(jù)通過總線返回至所述主站節(jié)點的步驟之后,還包括:
[0017]所述主站節(jié)點向多個從站節(jié)點發(fā)送同步命令;
[0018]所述主站節(jié)點開啟發(fā)送延時,在等待預(yù)設(shè)的時間間隔后與多個從站節(jié)點根據(jù)所述同步命令觸發(fā)相同的同步動作。
[0019]在其中一個實施例中,所述方法還包括:
[0020]在觸發(fā)同步動作時,主站節(jié)點或從站節(jié)點獲取當(dāng)前狀態(tài)數(shù)據(jù),并將當(dāng)前狀態(tài)數(shù)據(jù)保存至狀態(tài)緩存;
[0021]讀取命令緩存中的軸命令作為插補(bǔ)時的命令基數(shù);
[0022]計算軸命令的變化率;
[0023]根據(jù)所述命令基數(shù)和變化率計算出插補(bǔ)后的命令,將所述插補(bǔ)后的命令作為實際命令進(jìn)行下發(fā)。
[0024]在其中一個實施例中,在所述讀取命令緩存中的軸命令作為插補(bǔ)時的命令基數(shù)的步驟之前,還包括:
[0025]主站節(jié)點或從站節(jié)點在接收到同步命令之后,判斷對應(yīng)的命令緩存是否被更新;
[0026]若是,則記錄當(dāng)前時間為第一時間;
[0027]獲取上次同步的第二時間;
[0028]利用本次軸命令的命令值和上一次軸命令的命令值的變化量,以及第一時間與第二時間的時間間隔來計算連續(xù)的軸命令對應(yīng)的變化率;
[0029]將當(dāng)前狀態(tài)數(shù)據(jù)上傳至狀態(tài)緩存,并將命令緩存中的軸命令確定為命令基數(shù)。
[0030]—種機(jī)器人的控制裝置,包括:主站節(jié)點、總線和從站節(jié)點,其中:
[0031]主站節(jié)點,用于接收多個從站節(jié)點對應(yīng)的軸命令,通過總線對從站節(jié)點發(fā)送軸命令;
[0032]從站節(jié)點,用于通過總線接收所述軸命令,根據(jù)所述軸命令獲取對應(yīng)的狀態(tài)數(shù)據(jù),并將所述狀態(tài)數(shù)據(jù)通過總線返回至所述主站節(jié)點;
[0033]所述主站節(jié)點還用于接收多個從站節(jié)點返回的狀態(tài)數(shù)據(jù),并對所述狀態(tài)數(shù)據(jù)進(jìn)行存儲。
[0034]在其中一個實施例中,所述從站節(jié)點包括目標(biāo)從站節(jié)點,所述目標(biāo)從站節(jié)點用于通過總線接收所述軸命令,識別所述軸命令并對所述軸命令進(jìn)行解析,得到解析后的軸命令;將所述解析后的軸命令存儲至對應(yīng)的命令緩存,在狀態(tài)緩存中獲取上一個周期的狀態(tài)數(shù)據(jù);將所述上一個周期的狀態(tài)數(shù)據(jù)按照預(yù)設(shè)格式進(jìn)行封包,得到封包后的狀態(tài)數(shù)據(jù),并將所述封包后的狀態(tài)數(shù)據(jù)發(fā)送至總線。
[0035]在其中一個實施例中,所述軸命令中包括同步命令,所述主站節(jié)點還用于開啟發(fā)送延時,在等待預(yù)設(shè)的時間間隔后觸發(fā)與目標(biāo)從站節(jié)點相同的同步動作;其他從站節(jié)點用于通過總線接收所述同步命令,根據(jù)所述同步命令觸發(fā)與目標(biāo)從站節(jié)點相同的同步動作。
[0036]在其中一個實施例中,所述主站節(jié)點還用于向多個從站節(jié)點發(fā)送同步命令;開啟發(fā)送延時,在等待預(yù)設(shè)的時間間隔后與多個從站節(jié)點根據(jù)所述同步命令觸發(fā)相同的同步動作。
[0037]上述機(jī)器人控制方法和裝置,通過主站節(jié)點來統(tǒng)一接收多個從站節(jié)點的軸命令,主站節(jié)點通過總線向從站節(jié)點發(fā)送軸命令,從站節(jié)點根據(jù)軸命令獲取對應(yīng)的狀態(tài)數(shù)據(jù)后通過總線返回至主站節(jié)點。主站節(jié)點接收多個從站節(jié)點返回的狀態(tài)數(shù)據(jù)并進(jìn)行存儲。由此能夠通過主站節(jié)點來統(tǒng)一管理多個從站節(jié)點的軸命令和狀態(tài)數(shù)據(jù),無需多個軸與外部主控制器單獨進(jìn)行通信,從而使得模塊化機(jī)器人克服了多個軸不同步的問題,有效提高了模塊化機(jī)器人的控制性能。
【附圖說明】
[0038]圖1為一個實施例中機(jī)器人控制方法的流程圖;
[0039]圖2為一個實施例中六軸機(jī)器人的結(jié)構(gòu)示意圖;
[0040]圖3為一個實施例中機(jī)器人控制裝置的結(jié)構(gòu)示意圖。
【具體實施方式】
[0041 ]為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合附圖及實施例,對本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0042]在一個實施例中,如圖1所示,提供了一種機(jī)器人的控制方法,包括:
[0043 ]步驟102,主站節(jié)點接收多個從站節(jié)點對應(yīng)的軸命令。
[0044]機(jī)器人是指簡化結(jié)構(gòu)的模塊化機(jī)器人,該機(jī)器人是多軸機(jī)器人,例如,該機(jī)器人可以是六軸機(jī)器人、五軸機(jī)器人或四軸機(jī)器人等。為了克服目前模塊化機(jī)器人各個軸與主控制器之間的通信延遲不同的問題,對該機(jī)器人搭建一種主從結(jié)構(gòu)的總線架構(gòu)。該總線架構(gòu)中包括主站節(jié)點、總線和多個從站節(jié)點。該機(jī)器人構(gòu)成一個包含多個節(jié)點的總線網(wǎng)絡(luò)。以六軸機(jī)器人為例,其結(jié)構(gòu)示意圖如圖2所示。其中,第一軸202作為主站節(jié)點,第二軸204、第三軸206、第四軸208、第五軸210和第六軸212分別作為從站節(jié)點。主站節(jié)點還包括網(wǎng)絡(luò)接口。網(wǎng)絡(luò)接口的形式按照與該機(jī)器人通信的外部網(wǎng)絡(luò)協(xié)議決定。該網(wǎng)絡(luò)接口是外部網(wǎng)絡(luò)與主站節(jié)點之間的通道。對于外部網(wǎng)絡(luò)而言,該機(jī)器人可以視為一個獨立的設(shè)備進(jìn)行控制。其中,由主站節(jié)點負(fù)責(zé)所有節(jié)點的軸命令和狀態(tài)數(shù)據(jù)的管理,并保持與外部網(wǎng)絡(luò)的通訊。
[0045]步驟104,主站節(jié)點通過總線對從站節(jié)點發(fā)送軸命令。
[0046]主站節(jié)點接收外部網(wǎng)絡(luò)通過網(wǎng)絡(luò)接口發(fā)送過來的軸命令。主站節(jié)點將接收到的軸命令存儲到主站節(jié)點對應(yīng)的命令緩存。軸命令也就是對多個軸的控制命令。機(jī)器人的每個節(jié)點都設(shè)置了對應(yīng)的命令緩存和狀態(tài)緩存。由于主站節(jié)點與第一軸相對應(yīng),主站節(jié)點的軸命令不需通過總線來發(fā)送,主站節(jié)點可以從對應(yīng)的命令緩存中獲取對第一軸的軸命令,并根據(jù)該軸命令在對應(yīng)的狀態(tài)緩存中獲取第一軸的狀態(tài)數(shù)據(jù)。
[0047]主站節(jié)點通過總線對從站節(jié)點發(fā)送對應(yīng)的軸命令。具體的,主站節(jié)點在對應(yīng)的命令緩存中獲取從站節(jié)點的軸命令,并將軸命令按照預(yù)設(shè)格式進(jìn)行封包,將封包后的軸命令發(fā)送至總線。其中,軸命令的預(yù)設(shè)格式可以是總線協(xié)議格式。軸命令中包括了節(jié)點標(biāo)識和對應(yīng)的命令內(nèi)容。節(jié)點標(biāo)識可以在軟件燒寫時決定,也可以通過硬件撥碼開關(guān)決定。
[0048]步驟106,從站節(jié)點通過總線接收所述軸命令,根據(jù)軸命令獲取對應(yīng)狀態(tài)數(shù)據(jù),并將狀態(tài)數(shù)據(jù)通過總線返回至主站節(jié)點。
[0049]從站節(jié)點包括目標(biāo)從站節(jié)點和其他從站節(jié)點。主站節(jié)點通過總線對目標(biāo)從站節(jié)點發(fā)送軸命令時,其他從站節(jié)點可以通過總線來接收該軸命令。多個從站節(jié)點在接收到軸命令后,將軸命令存入對應(yīng)的命令緩存。
[0050]在一個實施例中,從站節(jié)點通過總線接收軸命令,根據(jù)軸命令獲取對應(yīng)的狀態(tài)數(shù)據(jù),并將狀態(tài)數(shù)據(jù)通過總線返回至主站節(jié)點的步驟包括:目標(biāo)從站節(jié)點通過總線接收軸命令,識別軸命令并對軸命令進(jìn)行解析,得到解析后的軸命令;目標(biāo)從站節(jié)點將解析后的軸命令存儲至對應(yīng)的命令緩存,在狀態(tài)緩存中獲取上一個周期的狀態(tài)數(shù)據(jù);目標(biāo)從站節(jié)點將上一個周期的狀態(tài)數(shù)據(jù)按照預(yù)設(shè)格式進(jìn)行封包,得到封包后的狀態(tài)數(shù)據(jù),并將封包后的狀態(tài)數(shù)據(jù)發(fā)送至總線。
[0051 ]從站節(jié)點根據(jù)節(jié)點標(biāo)識來對軸命令進(jìn)行識別。若該軸命令中攜帶的節(jié)點標(biāo)識與從站節(jié)點一致,則表示目標(biāo)從站節(jié)點接收到了對應(yīng)的軸命令。其他從站節(jié)點可以將該軸命令忽略。目標(biāo)從站節(jié)點對該軸命令進(jìn)行解析,得到解析后的軸命令,將解析后的軸命令存儲至命令緩存中,并在狀態(tài)緩存中獲取上一個周期的狀態(tài)數(shù)據(jù)。目標(biāo)從站節(jié)點將所述上一個周期的狀態(tài)數(shù)據(jù)按照預(yù)設(shè)格式進(jìn)行封包,得到封包后的狀態(tài)數(shù)據(jù),并將所述封包后的狀態(tài)數(shù)據(jù)發(fā)送至總線。
[0052]主站節(jié)點對所有節(jié)點發(fā)送對應(yīng)的軸命令并接收到各個節(jié)點返回的狀態(tài)數(shù)據(jù),可以視為一個周期。其中主站節(jié)點對各節(jié)點發(fā)出的同步命令可以視為上一個周期的結(jié)束與下一個周期的開始的分界點。為了保持多個軸之間的同步,其他從站節(jié)點通過總線接收到軸命令后,將軸命令存儲至對應(yīng)的命令緩存中。
[0053]主站節(jié)點和其他從站節(jié)點可以通過總線同時接收到目標(biāo)從站節(jié)點返回的狀態(tài)數(shù)據(jù),但是除了總站節(jié)點之外其他從站節(jié)點會將該狀態(tài)數(shù)據(jù)忽略掉。主站節(jié)點在接收到目標(biāo)從站節(jié)點通過總線返回的狀態(tài)數(shù)據(jù)之后,再向下一個目標(biāo)從站節(jié)點發(fā)送軸命令,直至所有的從站節(jié)點向主站節(jié)點返回對應(yīng)的狀態(tài)數(shù)據(jù)。
[0054]步驟108,主站節(jié)點接收多個從站節(jié)點返回的狀態(tài)數(shù)據(jù),并對狀態(tài)數(shù)據(jù)進(jìn)行存儲。
[0055]主站節(jié)點對每個從站節(jié)點返回的封包后的狀態(tài)數(shù)據(jù)進(jìn)行解包,得到解包后的狀態(tài)數(shù)據(jù),將解包后的狀態(tài)數(shù)據(jù)對應(yīng)節(jié)點標(biāo)識存儲在主站節(jié)點對應(yīng)的狀態(tài)緩存中。
[0056]以六軸機(jī)器人為例,主站節(jié)點獲取第一軸對應(yīng)的軸命令,根據(jù)該軸命令將第一軸的狀態(tài)數(shù)據(jù)存儲在對應(yīng)的狀態(tài)緩存中。主站節(jié)點獲取第二軸對應(yīng)的從站節(jié)點的軸命令,對該軸命令進(jìn)行封包并發(fā)送至總線上,其他軸對應(yīng)的從站節(jié)點通過總線同時接收該軸命令,第二軸對應(yīng)的從站節(jié)點識別出該軸命令,其他從站節(jié)點忽略該軸命令。第二軸對應(yīng)的從站節(jié)點對軸命令進(jìn)行解包,根據(jù)解包后的軸命令獲取第二軸的狀態(tài)數(shù)據(jù)。第二軸對應(yīng)的從站節(jié)點將狀態(tài)數(shù)據(jù)進(jìn)行封包并發(fā)送到總線上。主站節(jié)點和其他從站節(jié)點通過總線同時接收封包后的狀態(tài)數(shù)據(jù),除了主站節(jié)點之外其他節(jié)點將該狀態(tài)數(shù)據(jù)忽略。主站節(jié)點將該狀態(tài)數(shù)據(jù)進(jìn)行解包,并將解包后的狀態(tài)數(shù)據(jù)存儲在主站節(jié)點對應(yīng)的狀態(tài)緩存中。主站節(jié)點向第三軸對應(yīng)的從站節(jié)點發(fā)送軸命令,直至對第六軸對應(yīng)的從站節(jié)點發(fā)送軸命令,主站節(jié)點接收到所有從站節(jié)點返回的各個軸的狀態(tài)數(shù)據(jù),并存入對應(yīng)的狀態(tài)緩存中。由此完成一次軸數(shù)據(jù)的交換行為。
[0057]進(jìn)一步的,主站節(jié)點可以將多個目標(biāo)從站節(jié)點的軸命令分別按照預(yù)設(shè)格式進(jìn)行封包,可以同時將封包后的多個軸命令發(fā)送至總線。多個目標(biāo)從站節(jié)點可以同時接收封包后的軸命令,并根據(jù)節(jié)點標(biāo)識來識別出各自對應(yīng)的軸命令。多個目標(biāo)從站節(jié)點對軸命令進(jìn)行解包,分別根據(jù)解包后的軸命令獲取對應(yīng)的狀態(tài)數(shù)據(jù),并將狀態(tài)數(shù)據(jù)根據(jù)預(yù)設(shè)格式進(jìn)行封包。多個目標(biāo)從站節(jié)點可以同時將封包后的狀態(tài)數(shù)據(jù)發(fā)送至總線,主站節(jié)點接收多個封包后的狀態(tài)數(shù)據(jù),并對多個封包后的狀態(tài)數(shù)據(jù)進(jìn)行解包,得到多個解包后的狀態(tài)數(shù)據(jù)。主站節(jié)點將多個解包后的狀態(tài)數(shù)據(jù)對應(yīng)節(jié)點標(biāo)識存儲在主站節(jié)點對應(yīng)的狀態(tài)緩存中。
[0058]本實施例中,通過主站節(jié)點來統(tǒng)一接收多個從站節(jié)點的軸命令,主站節(jié)點通過總線向從站節(jié)點發(fā)送軸命令,從站節(jié)點根據(jù)軸命令獲取對應(yīng)的狀態(tài)數(shù)據(jù)后通過總線返回至主站節(jié)點。主站節(jié)點接收多個從站節(jié)點返回的狀態(tài)數(shù)據(jù)并進(jìn)行存儲。由此能夠通過主站節(jié)點來統(tǒng)一管理多個從站節(jié)點的軸命令和狀態(tài)數(shù)據(jù),無需多個軸與外部主控制器單獨進(jìn)行通信,從而使得模塊化機(jī)器人克服了多個軸不同步的問題,有效提高了模塊化機(jī)器人的控制性能。
[0059]在一個實施例中,軸命令中包括同步命令;主站節(jié)點通過總線對從站節(jié)點發(fā)送軸命令的步驟之后,還包括:主站節(jié)點開啟發(fā)送延時,在等待預(yù)設(shè)的時間間隔后觸發(fā)與目標(biāo)從站節(jié)點相同的同步動作;其他從站節(jié)點通過總線接收同步命令,根據(jù)同步命令觸發(fā)與目標(biāo)從站節(jié)點相同的同步動作。
[0060]本實施例中,主站節(jié)點中發(fā)送的軸命令可以包括同步命令。由于同步命令是包括在軸命令中的,因此能夠有效節(jié)省命令緩存空間。同步命令可以包括在主站節(jié)點發(fā)送的第一個軸命令中,也可以包括在其他的軸命令中。優(yōu)選的,同步命令包括在主站節(jié)點向第一個從站節(jié)點發(fā)送的軸命令中。同步命令可以視為上一個周期的結(jié)束和下一個周期的開始的分界點。
[0061]主站節(jié)點通過總線發(fā)送同步命令時,會相應(yīng)的開啟發(fā)送延時,等待一個預(yù)設(shè)的時間間隔。由于總線傳輸軸命令和同步命令需要一定的時間,為了保持多個軸的控制延時相同,需要對主站節(jié)點增加一個發(fā)送延時。發(fā)送延時等待的預(yù)設(shè)時間間隔與從站節(jié)點響應(yīng)軸命令的時間相等。在主站節(jié)點發(fā)布完同步命令后,觸發(fā)第一軸與目標(biāo)從站節(jié)點相同的同步動作,在主站節(jié)點對應(yīng)的命令緩存中獲取命令緩存值用以控制第一軸的行為,并讀取第一軸的實際狀態(tài)至主站節(jié)點對應(yīng)的狀態(tài)緩存。其他從站節(jié)點通過總線可以檢測到同步命令。其他從站節(jié)點根據(jù)同步命令觸發(fā)與目標(biāo)從站節(jié)點相同的同步動作。
[0062]以六軸機(jī)器人為例,同步命令可以包括在主站節(jié)點向第二軸對應(yīng)的從站節(jié)點發(fā)送的軸命令中。主站節(jié)點向總線上發(fā)送第二軸對應(yīng)的軸命令,并相應(yīng)的開啟發(fā)送延時,等待一個預(yù)設(shè)的時間間隔。主站節(jié)點觸發(fā)第一軸與第二軸相同的同步動作,在命令緩存中獲取命令緩存值用以控制第一軸的行為,并讀取第一軸的實際狀態(tài)至主站節(jié)點對應(yīng)的狀態(tài)緩存。其他從站檢測到對第二軸發(fā)送的軸命令后,會根據(jù)該軸命令中攜帶的同步命令觸發(fā)與第二軸相同的同步動作。
[0063]本實施例中,通過執(zhí)行同步命令,能夠使得多個軸的控制延時相同,響應(yīng)時間得到統(tǒng)一。外部網(wǎng)絡(luò)對機(jī)器人發(fā)出控制命令后,機(jī)器人的各個軸均會在相同的延時之后產(chǎn)生動作。
[0064]在一個實施例中,在將狀態(tài)數(shù)據(jù)通過總線返回至主站節(jié)點的步驟之后,還包括:主站節(jié)點向多個從站節(jié)點發(fā)送同步命令;主站節(jié)點開啟發(fā)送延時,在等待預(yù)設(shè)的時間間隔后與多個從站節(jié)點根據(jù)同步命令觸發(fā)相同的同步動作。
[0065]本實施例中,主站節(jié)點可以在所有的節(jié)點返回狀態(tài)數(shù)據(jù)之后,再通過總線向所有的節(jié)點發(fā)送同步命令。主站節(jié)點在發(fā)送同步命令時,開啟發(fā)送延時,等待一個預(yù)設(shè)的時間間隔。主站節(jié)點可以觸發(fā)與某個從站節(jié)點相同的同步動作。優(yōu)選的,主站節(jié)點可以觸發(fā)與第一個從站節(jié)點相同的同步動作。預(yù)設(shè)的時間間隔與從站節(jié)點響應(yīng)軸命令的時間相同。在主站節(jié)點對應(yīng)的命令緩存中獲取命令緩存值用以控制第一軸的行為,并讀取第一軸的實際狀態(tài)至主站節(jié)點對應(yīng)的狀態(tài)緩存。多個從站節(jié)點根據(jù)同步命令觸發(fā)相同的同步動作。具體的,多個從站節(jié)點可以觸發(fā)與某個從站節(jié)點相同的同步動作。優(yōu)選的,多個從站節(jié)點可以觸發(fā)與第一個從站節(jié)點相同的同步動作。通過執(zhí)行同步命令,能夠使得多個軸的控制延時相同,響應(yīng)時間得到統(tǒng)一。外部網(wǎng)絡(luò)對機(jī)器人發(fā)出控制命令后,機(jī)器人的各個軸均會在相同的延時之后產(chǎn)生動作。
[0066]在一個實施例中,方法還包括:在觸發(fā)同步動作時,主站節(jié)點或從站節(jié)點獲取當(dāng)前狀態(tài)數(shù)據(jù),并將當(dāng)前狀態(tài)數(shù)據(jù)保存至狀態(tài)緩存;讀取命令緩存中的軸命令作為插補(bǔ)時的命令基數(shù);計算軸命令的變化率;根據(jù)命令基數(shù)和變化率計算出插補(bǔ)后的命令,將插補(bǔ)后的命令作為實際命令進(jìn)行下發(fā)。
[0067]本實施例中,每個節(jié)點會接收到連續(xù)的軸命令,其中節(jié)點包括主站節(jié)點和多個從站節(jié)點。鑒于每個節(jié)點的命令更新速度較慢,需要對連續(xù)變化的軸命令的命令值進(jìn)行插補(bǔ),以便對輸出的軸命令曲線進(jìn)行有效平滑。
[0068]當(dāng)主站節(jié)點或從站節(jié)點被觸發(fā)同步動作時,獲取當(dāng)前狀態(tài)數(shù)據(jù),并將當(dāng)前狀態(tài)數(shù)據(jù)保存至狀態(tài)緩存。主站節(jié)點或從站節(jié)點讀取命令緩存中的軸命令作為插補(bǔ)時的命令基數(shù)。在讀取命令基數(shù)之前還需要判斷命令是否被更新。
[0069]在一個實施例中,在讀取命令緩存中的軸命令作為插補(bǔ)時的命令基數(shù)的步驟之前,還包括:主站節(jié)點或從站節(jié)點在接收到同步命令之后,判斷對應(yīng)的命令緩存是否被更新;若是,則記錄當(dāng)前時間為第一時間;獲取上次同步的第二時間;利用本次軸命令的命令值和上一次軸命令的命令值的變化量,以及第一時間與第二時間的時間間隔來計算連續(xù)的軸命令對應(yīng)的變化率;將當(dāng)前的狀態(tài)數(shù)據(jù)上傳至狀態(tài)緩存,并將命令緩存中的軸命令確定為命令基數(shù)。
[0070]主站節(jié)點或從站節(jié)點在接收到同步命令之后,會判斷對應(yīng)的命令緩存是否被更新。具體的,在命令緩存中設(shè)置開關(guān)標(biāo)識,如果命令緩存中有更新則對更新的軸命令添加開標(biāo)識,如果未更新則保持關(guān)標(biāo)識。開關(guān)標(biāo)識可以采用布爾量來表示。如果命令緩存中有開標(biāo)識的軸命令,則表示命令緩存被更新。記錄當(dāng)前時間為第一時間。如果命令緩存未更新,則直接結(jié)束同步動作。獲取上次同步的時間作為第二時間。計算第一時間與第二時間之間的時間間隔,將該時間間隔作為上一次同步的時間間隔。獲取本次軸命令的命令值與上一次軸命令的命令值,計算本次軸命令的命令值與上一次軸命令的命令值的變化量。將該變化量除以上一次同步的時間間隔,得到本次軸命令與上一次軸命令的變化率。
[0071]主站節(jié)點或從站節(jié)點將當(dāng)前狀態(tài)數(shù)據(jù)上傳至狀態(tài)緩存,并將命令緩存中的軸命令確定為命令技術(shù)。由此使得狀態(tài)緩存與實際的狀態(tài)數(shù)據(jù)同步,命令緩存與命令基數(shù)同步。更新當(dāng)前時間為第二時間。從而完成了軸命令的更新。
[0072]主站節(jié)點或從站節(jié)點在計算出軸命令的變化率之后,會根據(jù)命令基數(shù)和軸命令的變化率來計算插補(bǔ)后的命令,并將插補(bǔ)后的命令作為實際命令。具體的,記錄下發(fā)實際命令的時間為第三時間,計算第三時間與第二時間的時間間隔作為插補(bǔ)時間間隔。利用命令基數(shù)加上軸命令的變化率與插補(bǔ)時間間隔的乘積計算出實際命令的命令值。即實際命令的命令值=命令基數(shù)+軸命令的變化率*(第三時間-第二時間)。主站節(jié)點或從站節(jié)點將實際命令進(jìn)行下發(fā)。通過對連續(xù)變化的軸命令的命令值進(jìn)行插補(bǔ),由此能夠?qū)敵龅妮S命令曲線進(jìn)行有效平滑。
[0073]在一個實施例中,如圖3所示,提供了一種機(jī)器人的控制裝置,包括:主站節(jié)點、總線和從站節(jié)點,其中:
[0074]主站節(jié)點,用于接收多個從站節(jié)點對應(yīng)的軸命令,通過總線對從站節(jié)點發(fā)送軸命令。
[0075]從站節(jié)點,用于通過總線接收軸命令,根據(jù)軸命令獲取對應(yīng)的狀態(tài)數(shù)據(jù),并將狀態(tài)數(shù)據(jù)通過總線返回至主站節(jié)點。
[0076]主站節(jié)點還用于通過總線接收多個從站節(jié)點返回的狀態(tài)數(shù)據(jù),并對狀態(tài)數(shù)據(jù)進(jìn)行存儲。
[0077]在一個實施例中,所述從站節(jié)點包括目標(biāo)從站節(jié)點,所述目標(biāo)從站節(jié)點用于通過總線接收所述軸命令,識別所述軸命令并對所述軸命令進(jìn)行解析,得到解析后的軸命令;將所述解析后的軸命令存儲至對應(yīng)的命令緩存,在狀態(tài)緩存中獲取上一個周期的狀態(tài)數(shù)據(jù);將上一個周期的狀態(tài)數(shù)據(jù)按照預(yù)設(shè)格式進(jìn)行封包,得到封包后的狀態(tài)數(shù)據(jù),并將封包后的狀態(tài)數(shù)據(jù)發(fā)送至總線。
[0078]在一個實施例中,軸命令中包括同步命令,主站節(jié)點還用于開啟發(fā)送延時,在等待預(yù)設(shè)的時間間隔后觸發(fā)與目標(biāo)從站節(jié)點相同的同步動作;其他從站節(jié)點用于通過總線接收同步命令,根據(jù)同步命令觸發(fā)與目標(biāo)從站節(jié)點相同的同步動作。
[0079]在一個實施例中,主站節(jié)點還用于向多個從站節(jié)點發(fā)送同步命令;開啟發(fā)送延時,在等待預(yù)設(shè)的時間間隔后與多個從站節(jié)點根據(jù)同步命令觸發(fā)相同的同步動作。
[0080]在一個實施例中,在觸發(fā)同步動作時,主站節(jié)點或從站節(jié)點還用于獲取當(dāng)前狀態(tài)數(shù)據(jù),并將當(dāng)前狀態(tài)數(shù)據(jù)保存至狀態(tài)緩存;讀取命令緩存中的軸命令作為插補(bǔ)時的命令基數(shù);計算軸命令的變化率;根據(jù)命令基數(shù)和變化率計算出插補(bǔ)后的命令,將插補(bǔ)后的命令作為實際命令進(jìn)行下發(fā)。
[0081]在一個實施例中,主站節(jié)點或從站節(jié)點還用于在接收到同步命令之后,判斷對應(yīng)的命令緩存是否被更新;若是,則記錄當(dāng)前時間為第一時間;獲取上次同步的第二時間;利用本次軸命令的命令值和上一次軸命令的命令值的變化量,以及第一時間與第二時間的時間間隔來計算連續(xù)的軸命令對應(yīng)的變化率;將當(dāng)前狀態(tài)數(shù)據(jù)上傳至狀態(tài)緩存,并將命令緩存中的軸命令確定為命令基數(shù)。
[0082]以上實施例的各技術(shù)特征可以進(jìn)行任意的組合,為使描述簡潔,未對上述實施例中的各個技術(shù)特征所有可能的組合都進(jìn)行描述,然而,只要這些技術(shù)特征的組合不存在矛盾,都應(yīng)當(dāng)認(rèn)為是本說明書記載的范圍。
[0083]以上實施例僅表達(dá)了本發(fā)明的幾種實施方式,其描述較為具體和詳細(xì),但并不能因此而理解為對發(fā)明專利范圍的限制。應(yīng)當(dāng)指出的是,對于本領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干變形和改進(jìn),這些都屬于本發(fā)明的保護(hù)范圍。因此,本發(fā)明專利的保護(hù)范圍應(yīng)以所附權(quán)利要求為準(zhǔn)。
【主權(quán)項】
1.一種機(jī)器人的控制方法,所述方法包括: 主站節(jié)點接收多個從站節(jié)點對應(yīng)的軸命令; 所述主站節(jié)點通過總線對從站節(jié)點發(fā)送軸命令; 所述從站節(jié)點通過總線接收所述軸命令,根據(jù)所述軸命令獲取對應(yīng)的狀態(tài)數(shù)據(jù),并將所述狀態(tài)數(shù)據(jù)通過總線返回至所述主站節(jié)點; 主站節(jié)點接收多個從站節(jié)點返回的狀態(tài)數(shù)據(jù),并對所述狀態(tài)數(shù)據(jù)進(jìn)行存儲。2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述從站節(jié)點包括目標(biāo)從站節(jié)點,所述從站節(jié)點通過總線接收所述軸命令,根據(jù)所述軸命令獲取對應(yīng)的狀態(tài)數(shù)據(jù),并將所述狀態(tài)數(shù)據(jù)通過總線返回至所述主站節(jié)點的步驟包括: 所述目標(biāo)從站節(jié)點通過總線接收所述軸命令,識別所述軸命令并對所述軸命令進(jìn)行解析,得到解析后的軸命令; 所述目標(biāo)從站節(jié)點將所述解析后的軸命令存儲至對應(yīng)的命令緩存,在狀態(tài)緩存中獲取上一個周期的狀態(tài)數(shù)據(jù); 所述目標(biāo)從站節(jié)點將所述上一個周期的狀態(tài)數(shù)據(jù)按照預(yù)設(shè)格式進(jìn)行封包,得到封包后的狀態(tài)數(shù)據(jù),并將所述封包后的狀態(tài)數(shù)據(jù)發(fā)送至總線。3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述軸命令中包括同步命令;所述主站節(jié)點通過總線對從站節(jié)點發(fā)送軸命令的步驟之后,還包括: 所述主站節(jié)點開啟發(fā)送延時,在等待預(yù)設(shè)的時間間隔后觸發(fā)與目標(biāo)從站節(jié)點相同的同步動作; 其他從站節(jié)點通過總線接收所述同步命令,根據(jù)所述同步命令觸發(fā)與所述目標(biāo)從站節(jié)點相同的同步動作。4.根據(jù)權(quán)利要求1所述的方法,其特征在于,在所述將所述狀態(tài)數(shù)據(jù)通過總線返回至所述主站節(jié)點的步驟之后,還包括: 所述主站節(jié)點向多個從站節(jié)點發(fā)送同步命令; 所述主站節(jié)點開啟發(fā)送延時,在等待預(yù)設(shè)的時間間隔后與多個從站節(jié)點根據(jù)所述同步命令觸發(fā)相同的同步動作。5.根據(jù)權(quán)利要求3或4所述的方法,其特征在于,所述方法還包括: 在觸發(fā)同步動作時,主站節(jié)點或從站節(jié)點獲取當(dāng)前狀態(tài)數(shù)據(jù),并將當(dāng)前狀態(tài)數(shù)據(jù)保存至狀態(tài)緩存; 讀取命令緩存中的軸命令作為插補(bǔ)時的命令基數(shù); 計算軸命令的變化率; 根據(jù)所述命令基數(shù)和變化率計算出插補(bǔ)后的命令,將所述插補(bǔ)后的命令作為實際命令進(jìn)行下發(fā)。6.根據(jù)權(quán)利要求5所述的方法,其特征在于,在所述讀取命令緩存中的軸命令作為插補(bǔ)時的命令基數(shù)的步驟之前,還包括: 主站節(jié)點或從站節(jié)點在接收到同步命令之后,判斷對應(yīng)的命令緩存是否被更新; 若是,則記錄當(dāng)前時間為第一時間; 獲取上次同步的第二時間; 利用本次軸命令的命令值和上一次軸命令的命令值的變化量,以及第一時間與第二時間的時間間隔來計算連續(xù)的軸命令對應(yīng)的變化率; 將當(dāng)前狀態(tài)數(shù)據(jù)上傳至狀態(tài)緩存,并將命令緩存中的軸命令確定為命令基數(shù)。7.—種機(jī)器人的控制裝置,其特征在于,所述控制裝置包括:主站節(jié)點、總線和從站節(jié)點,其中: 主站節(jié)點,用于接收多個從站節(jié)點對應(yīng)的軸命令,通過總線對從站節(jié)點發(fā)送軸命令; 從站節(jié)點,用于通過總線接收所述軸命令,根據(jù)所述軸命令獲取對應(yīng)的狀態(tài)數(shù)據(jù),并將所述狀態(tài)數(shù)據(jù)通過總線返回至所述主站節(jié)點; 所述主站節(jié)點還用于通過總線接收多個從站節(jié)點返回的狀態(tài)數(shù)據(jù),并對所述狀態(tài)數(shù)據(jù)進(jìn)行存儲。8.根據(jù)權(quán)利要求7所述的控制裝置,其特征在于,所述從站節(jié)點包括目標(biāo)從站節(jié)點,所述目標(biāo)從站節(jié)點用于通過總線接收所述軸命令,識別所述軸命令并對所述軸命令進(jìn)行解析,得到解析后的軸命令;將所述解析后的軸命令存儲至對應(yīng)的命令緩存,在狀態(tài)緩存中獲取上一個周期的狀態(tài)數(shù)據(jù);將所述上一個周期的狀態(tài)數(shù)據(jù)按照預(yù)設(shè)格式進(jìn)行封包,得到封包后的狀態(tài)數(shù)據(jù),并將所述封包后的狀態(tài)數(shù)據(jù)發(fā)送至總線。9.根據(jù)權(quán)利要求7所述的控制裝置,其特征在于,所述軸命令中包括同步命令,所述主站節(jié)點還用于開啟發(fā)送延時,在等待預(yù)設(shè)的時間間隔后觸發(fā)與目標(biāo)從站節(jié)點相同的同步動作;其他從站節(jié)點用于通過總線接收所述同步命令,根據(jù)所述同步命令觸發(fā)與目標(biāo)從站節(jié)點相同的同步動作。10.根據(jù)權(quán)利要求7所述的控制裝置,其特征在于,所述主站節(jié)點還用于向多個從站節(jié)點發(fā)送同步命令;開啟發(fā)送延時,在等待預(yù)設(shè)的時間間隔后與多個從站節(jié)點根據(jù)所述同步命令觸發(fā)相同的同步動作。
【文檔編號】G06F13/40GK105843764SQ201610214800
【公開日】2016年8月10日
【申請日】2016年4月7日
【發(fā)明人】王璐明, 高云峰
【申請人】大族激光科技產(chǎn)業(yè)集團(tuán)股份有限公司, 深圳市大族電機(jī)科技有限公司