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