專利名稱:機(jī)器人控制系統(tǒng)的制作方法
機(jī)器人控制系統(tǒng)技術(shù)領(lǐng)域[OOOl]本發(fā)明涉及機(jī)器人控制系統(tǒng),特別涉及在機(jī)器人的主處理器和傳感器單元之間的數(shù)據(jù)通信。
背景技術(shù):
加速度傳感器和角速度傳感器用于機(jī)器人等的可移動軀體 的姿態(tài)控制。如果建立三個正交軸,即X軸、Y軸和Z軸,那么在這 三個軸向上的加速度由三個加速度傳感器檢測,并且圍繞這三個軸的 角速度由三個角速度傳感器檢測。圍繞這些軸的角,即姿態(tài)角,通過 角速度傳感器的輸出的時間積分來獲得,并且因而計算側(cè)傾(roll)角、 俯仰(pitch)角和橫擺(yaw)角。
在公開號為JP-A-2004-268730的日本專利申請中,公開了利用從陀螺儀傳感器輸出的加速度數(shù)據(jù)和姿態(tài)數(shù)據(jù)來執(zhí)行姿態(tài)控制的技 術(shù)。
而且,在公開號為JP-A-6-340149的日本專利申請中,公開了發(fā)送和接收包括可變長度的命令和參數(shù)組的數(shù)據(jù)。
盡管由傳感器單元檢測到的例如姿態(tài)角等傳感器數(shù)據(jù)被發(fā) 送到執(zhí)行機(jī)器人的姿態(tài)控制的主處理器(或主處理機(jī)),并且被用在反 饋控制中,但是由于當(dāng)隨著數(shù)據(jù)量的增加控制周期變長時機(jī)器人的可 控性降低,所以理想的是能夠根據(jù)需要通過調(diào)節(jié)發(fā)送的數(shù)據(jù)量并因此 確保數(shù)據(jù)通信速度,來增強(qiáng)可控性。
而且,如果由于通信失敗等導(dǎo)致數(shù)據(jù)丟失,主處理器能夠執(zhí)行預(yù)定丟失程序并且能夠保持機(jī)器人的可控性,但是需要主處理器能 夠可靠地檢測發(fā)生了數(shù)據(jù)丟失的事實。發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種機(jī)器人控制系統(tǒng),其可以確保機(jī) 器人控制的響應(yīng)度。
根據(jù)本發(fā)明的第一方案的機(jī)器人控制系統(tǒng),包括用于機(jī)器人 的主處理器和將傳感器輸出發(fā)送到主處理器的傳感器單元。在主處理 器和傳感器單元之間,數(shù)據(jù)以可變長度數(shù)據(jù)格式發(fā)送和接收。
在本發(fā)明的第一方案中,沒有使用固定長度數(shù)據(jù)格式,而是 通過以可變長度數(shù)據(jù)格式來發(fā)送和接收數(shù)據(jù)來確保機(jī)器人的可控性。 換句話說,通過在適當(dāng)?shù)乜s短數(shù)據(jù)長度的同時執(zhí)行數(shù)據(jù)發(fā)送和接收, 可以增強(qiáng)通信速度,并且因此抑制控制滯后。[OOIO]因此,具體來說,可變數(shù)據(jù)長度格式包括傳送大小段、命 令段、傳送模式段和數(shù)據(jù)段;傳送大小段規(guī)定了傳送的數(shù)據(jù)量;命令 段規(guī)定了傳送目的地的細(xì)節(jié);并且傳送模式段規(guī)定了要被傳送的數(shù)據(jù) 的類型和序列。因此可以通過減小要被傳送的數(shù)據(jù)的類型數(shù)來縮短數(shù) 據(jù)的長度,此外,因為要被傳送的數(shù)據(jù)的類型和序列(從接收方來看, 是接收的數(shù)據(jù)的類型和序列)由傳送模式段規(guī)定,即使數(shù)據(jù)的長度變 化,也可以可靠地獲得接收方所需的數(shù)據(jù)。[OOll]根據(jù)本發(fā)明的第二方案,在第一方案中,載有由主處理器計 時的瞬時時刻的數(shù)據(jù)包含在從主處理器發(fā)送到所述傳感器單元的數(shù)據(jù) 中;而且,此外,在載有瞬時時刻的數(shù)據(jù)和載有由傳感器單元計時的經(jīng)過時間的數(shù)據(jù)包含在從傳感器單元發(fā)送到主處理器的數(shù)據(jù)中。通過 將載有瞬時時刻的數(shù)據(jù)和載有經(jīng)過時間的數(shù)據(jù)包含在從傳感器單元發(fā) 送到主處理器的數(shù)據(jù)中,可以在主處理器中獲得與已經(jīng)從傳感器單元 接收到的數(shù)據(jù)有關(guān)的時間信息,并且可以簡單地和容易地從接收數(shù)據(jù) 的非順序時間中檢測到數(shù)據(jù)的丟失。而且,即使在從傳感器單元發(fā)送 到主處理器的數(shù)據(jù)中有延遲發(fā)生,由于(載有瞬時時刻的數(shù)據(jù)+載有 經(jīng)過時間的數(shù)據(jù))包含在從傳感器單元發(fā)送到主處理器的數(shù)據(jù)中,因 而主處理器可以準(zhǔn)確地識別從傳感器單元發(fā)送的數(shù)據(jù)的時間(測量時 間)。此外,由于載有瞬時時刻的數(shù)據(jù)僅僅由主處理器產(chǎn)生,所以可以 沒有任何所謂的同步問題的發(fā)生,即,由主處理器測量的瞬時時刻和 由傳感器單元測量的瞬時時刻之間的任何誤差問題。
根據(jù)本發(fā)明,由于可以以合適的方式增加和減小發(fā)送和接收的數(shù)據(jù)的長度,因而可以確保機(jī)器人控制的響應(yīng)度。
此外,根據(jù)本發(fā)明的第二個方案,由于主處理器可以以精確 的方式獲得時間信息,即使在通過傳感器單元的數(shù)據(jù)發(fā)送中發(fā)生時間 延遲,也可以執(zhí)行機(jī)器人的實時處理。
/人參照附圖的下述描述和示例實施例中,本發(fā)明的前述和進(jìn) 一步的目標(biāo)、特點(diǎn)和優(yōu)點(diǎn)將變得明顯,其中相同或相應(yīng)部分用相同的 附圖標(biāo)號表示,其中圖1為根據(jù)本發(fā)明實施例的機(jī)器人控制系統(tǒng)的示意結(jié)構(gòu)圖;圖2A和2B為數(shù)據(jù)發(fā)送和接收的時間圖(timing chart);圖3為數(shù)據(jù)格式圖;圖4A和4B為可變長度數(shù)據(jù)的說明圖;圖5為包含在測量數(shù)據(jù)段中的時間戳和計時時間的說明圖;圖6為示出了時間戳和計時時間的實例圖;及圖7A和7B為示出了該機(jī)器人控制系統(tǒng)的時間管理的說明圖。
具體實施方式
下面將參照
本發(fā)明的實施例。
圖1為根據(jù)本發(fā)明實施例的機(jī)器人控制系統(tǒng)的示意結(jié)構(gòu)圖。 設(shè)置有傳感器單元IO和作為機(jī)器人的主處理器(主處理機(jī))的機(jī)器人 CPU 12,并且該傳感器單元IO和機(jī)器人CPU 12通過串行數(shù)據(jù)線14 連接起來,以使彼此能夠串行通信。應(yīng)理解為該傳感器單元IO和機(jī)器 人CPU 12所安裝到的機(jī)器人可以是任何所需的類型;其可以是任何在 兩個輪子上行走的機(jī)器人,在四個輪子上行走的機(jī)器人,兩條腿行走 的機(jī)器人,飛行機(jī)器人等。
傳感器單元10包括作為加速度傳感器或角速度傳感器等 的傳感器15、 RAM 16、 ROM 18、驅(qū)動器20和CPU22。
ROM 18存儲OS (操作系統(tǒng))或?qū)懭肓俗鳛橛糜趥鞲衅鲉?元10的運(yùn)行程序的程序。在該程序中,包括轉(zhuǎn)變要發(fā)送到機(jī)器人CPU 12的傳感器輸出的類型或重啟功能的參數(shù),或者設(shè)定內(nèi)部濾波器等的 瞬時時刻的參數(shù)。ROM 18是可重寫的存儲器,例如閃存ROM等。
RAM 16存儲已經(jīng)存儲在ROM 18中的參數(shù)。換句話說,存 儲在ROM 18中的參數(shù)^t讀出并且寫入(即,導(dǎo)入)到RAM 16中, 并且然后通過讀出寫入到RAM 16中的參數(shù)來執(zhí)行預(yù)定程序。CPU 22 將這些已經(jīng)從ROM 18讀出的參數(shù)寫入到RAM 16的特定區(qū)域中。在 該實施例中,該特定區(qū)域稱為"第一區(qū)域"。對于該第一區(qū)域,其起始 地址(物理地址)及其結(jié)束地址可以被預(yù)先固定地設(shè)置在ROM 16內(nèi); 或者可選的,它們也可以是可變的。
根據(jù)從RAM 16讀出的參數(shù),CPU 22從已經(jīng)從傳感器15輸并且將它們經(jīng)由驅(qū)動器20發(fā)送到機(jī)器人CPU 12。驅(qū)動器20可以是, 例如RS - 232C驅(qū)動器,但是不限于此;其可選地可以是USB、 RS422、 IEEE1394等。CPU 22將傳感器輸出數(shù)據(jù)經(jīng)由驅(qū)動器20發(fā)送到串行線 上,但是僅僅在作為預(yù)定控制階段的一部分的發(fā)送階段過程中發(fā)送該 數(shù)據(jù)。所述預(yù)定控制階段的剩余階段被分配為接收階段,在所述接收 階段中,CPU22經(jīng)由串行數(shù)據(jù)線14接收從機(jī)器人CPU 12發(fā)送的數(shù)據(jù)。
圖2A和2B為示出了在傳感器單元10的CPU 22和機(jī)器人 的CPU 12之間進(jìn)行的串行通信的時間圖。圖2A為從CPU 22看在數(shù) 據(jù)發(fā)送過程中的時間圖,而圖2B為從CPU22看在數(shù)據(jù)接收過程中的時間圖。
在圖2A中, 一個控制階段為,例如10msec,并且該控制階 段被時間分割為發(fā)送階段和接收階段。CPU 22在該發(fā)送階段將傳感器 輸出串行地從傳感器15發(fā)送到機(jī)器人CPU 12。在圖中,在該發(fā)送階 段從CPU 22發(fā)送的數(shù)據(jù)示出為發(fā)送數(shù)據(jù)100。例如,該發(fā)送數(shù)據(jù)IOO 可以在編碼為BASE64之后發(fā)送。該BASE64是公知技術(shù),并且是用于發(fā)送編碼為ASCII文件的二進(jìn)制數(shù)據(jù)的變換方法其通過將二進(jìn)制 數(shù)據(jù)每6比特進(jìn)行分割,并且通過將這些分割的每個看作是從0到63 的6比特整數(shù)來對應(yīng)于包括文字字符和其它標(biāo)識的64個傳統(tǒng)ASCII符 號中的一個來完成。通過BASE64編碼,數(shù)據(jù)量增加,有利的方面是 容易讀寫數(shù)據(jù),因為其是常規(guī)格式。當(dāng)然,可以使用其它編碼方法或 數(shù)據(jù)壓縮方法。
通過在BASE64編碼數(shù)據(jù)之前或之后附加預(yù)定的分離符(分 隔符)來構(gòu)造發(fā)送數(shù)據(jù)的單個幀。對于分隔符,使用了 "("、"<"和 ")"。"("和"<"用作幀的起始分隔符,而")"用作結(jié)束分隔符; 發(fā)送數(shù)據(jù)的單個幀的兩個可能的例子如下發(fā)送數(shù)據(jù)的一幀=(BASE64編碼數(shù)據(jù))發(fā)送數(shù)據(jù)的一幀=< BASE64編碼數(shù)據(jù))這里,"("為表示在發(fā)送數(shù)據(jù)中包含有命令的分隔符,而"<"為 表示在發(fā)送數(shù)據(jù)中包含有由傳感器單元IO檢測到的傳感器數(shù)據(jù)的分隔 符。前一個類型幀稱為命令類型幀,而后一個類型幀稱為測量數(shù)據(jù)類 型幀。
另一方面,如圖2B中所示,除了發(fā)送階段之外的控制階段 的剩余部分被分配為接收階段,并且機(jī)器人CPU 12在該時刻將數(shù)據(jù)發(fā) 送到串行數(shù)據(jù)線14。 CPU 22在此時刻接收從機(jī)器人CPU 12發(fā)送的數(shù) 據(jù)。在圖中,從機(jī)器人CPU 12發(fā)送的數(shù)據(jù)被示為接收數(shù)據(jù)200。當(dāng)CPU 22在該接收階段從機(jī)器人CPU 12接收數(shù)據(jù)時,其將該接收數(shù)據(jù)200 存儲在RAM 16中。接收數(shù)據(jù)200所存儲的區(qū)域為第二區(qū)域,其與第 一區(qū)域不同。第二區(qū)域的起始地址可以是在第一區(qū)域的結(jié)束地址之后的下一個地址,或者可以從那里間隔預(yù)定數(shù)量的存儲地址。如果要發(fā) 送的數(shù)據(jù)量大,那么機(jī)器人CPU 12將該數(shù)據(jù)分割為分布在多個控制階段上的包,并且連續(xù)地發(fā)送它們。CPU22連續(xù)地接收該數(shù)據(jù)并且將它 存儲在RAM 16的第二區(qū)域中。當(dāng)改變從傳感器單元IO發(fā)送到機(jī)器人 CPU 12的數(shù)據(jù)的類型等時,存儲在第二區(qū)域中的參數(shù)被使用??勺償?shù)據(jù)長度格式圖3示出了用于在傳感器單元10和機(jī)器人CPU 12之間的數(shù)據(jù)傳 輸?shù)臄?shù)據(jù)格式300。其是可變長度數(shù)據(jù)格式,其中發(fā)送的數(shù)據(jù)的數(shù)量可 以通過增加和減少來進(jìn)行調(diào)節(jié)。數(shù)據(jù)格式300包含,順序地,傳送大小段302、命令段304、 傳送模式段306、測量數(shù)據(jù)段308和CRC段310。傳送大小段302規(guī)定了發(fā)送數(shù)據(jù)的 一幀中的數(shù)據(jù)總量。該數(shù) 據(jù)總量可以用例如兩個字節(jié)來表示。命令段304規(guī)定了傳送目的地的執(zhí)行細(xì)節(jié)。特別地,其規(guī)定 了必須由傳感器單元IO執(zhí)行的細(xì)節(jié)。該命令用一個字節(jié)表示。這樣的 命令的例子3o下。 "START"命令為用于啟動通過傳感器單元10測量的命令。 當(dāng)收到該"START"命令時,CPU22在分配的階段內(nèi)將傳感器輸出從 傳感器15發(fā)送到機(jī)器人CPU 12。 "STOP"命令為用于停止通過傳感器單元10的測量的命令。 "GET"命令為用于讀取存儲在RAM 16的第一區(qū)域或第二 區(qū)域中的參數(shù)的命令。
"SET"命令為用于將新參數(shù)寫入到RAM 16的第二區(qū)域中 的命令,并且,基于該"SET"命令,如上所述,CPU22將從機(jī)器人 CPU 12接收到的數(shù)據(jù)存儲到RAM 16的第二區(qū)域中,并且能夠通過讀 取和執(zhí)行存儲在該第二區(qū)域中的新參數(shù)(更新參數(shù))來改變其屬性。 在本發(fā)明的該實施例中,發(fā)送數(shù)據(jù)的類型的變化或者發(fā)送數(shù)據(jù)的數(shù)量 的變化包含在傳感器單元10的屬性的變化中。
"WRITE"命令為用于將存儲在RAM 16的第二區(qū)域中的新 參數(shù)寫入ROM 18中的命令。據(jù)此,即使電源中斷之后新參數(shù)也被保 留在傳感器單元12中。
"RstTim"命令為用于將傳感器單元10的計時時間重置到 0的命令。傳感器單元10的計時時間將在以后進(jìn)行描述。
傳送模式段306規(guī)定了從傳感器單元10發(fā)送到機(jī)器人CPU 12的傳感器數(shù)據(jù)的類型。該傳送模式可以用例如6字節(jié)來表示。盡管 需要為測量類型幀分配傳送模式,但并不需要為命令類型幀分配一個。 傳送類型的例子如下最低有效位(LSB):姿態(tài)角(側(cè)傾角、俯仰角、橫擺角)比特l:角速度比特3:傾斜角比特4:重力補(bǔ)償之后的加速度 比特5:速度比特6:位置 比特7:姿態(tài)矩陣 比特8:姿態(tài)矩陣 比特9:姿態(tài)矩陣 比特10:姿態(tài)矩陣 比特11:未使用 比特12:單元溫度 比特13:基一反溫度 比特14:診斷 比特15:計時時間當(dāng)這些比特中的任一個為"1"時,對應(yīng)它的數(shù)據(jù)被作為測量數(shù)據(jù) 發(fā)送。例如,當(dāng)比特0(LSB)為'T,時,來自傳感器15的姿態(tài)角數(shù) 據(jù)被作為測量數(shù)據(jù)發(fā)送。
測量數(shù)據(jù)段308為由傳送模式規(guī)定的傳感器15的輸出中的 傳感器輸出。例如,可能是姿態(tài)角、角速度、溫度、時間戳、計時時 間、單元名等。這些傳感器數(shù)據(jù)中的每個具有固定數(shù)據(jù)格式。換句話 說,姿態(tài)角、角速度、加速度、溫度等是浮點(diǎn)型數(shù)據(jù),而時間戳和計 時時間是整型數(shù)據(jù),單元名是字符型數(shù)據(jù)。
CRC段310規(guī)定了 CRC ( Cyclic Redundancy Check)數(shù)據(jù)。 CRC是公知技術(shù),其中作為測試對象的發(fā)送數(shù)據(jù)塊被認(rèn)為是二進(jìn)制數(shù)據(jù),通過例如產(chǎn)生二進(jìn)制數(shù)據(jù)的多項式等式的計算等式來處理所述塊, 來產(chǎn)生固定比特數(shù)(16比特或32比特)的測試數(shù)據(jù),這樣生成的此用 于測試的數(shù)據(jù)附加在實際數(shù)據(jù)之后被發(fā)送,并且,在接收方,利用相 同的多項式等式來處理來測試有無錯誤。
在此方式中,因為數(shù)據(jù)量由在發(fā)送數(shù)據(jù)格式的頭部的傳送大 小段302規(guī)定,并且要發(fā)送的傳感器數(shù)據(jù)的類型和要發(fā)送的順序由傳 送模式段306規(guī)定,因而即使數(shù)據(jù)的長度改變,也可以以準(zhǔn)確的方式 在接收方接收各種傳感器數(shù)據(jù)。而且,由于特定的分隔符附加在幀頭 和幀尾,接收方可以簡單地和容易地確定數(shù)據(jù)接收的開始和結(jié)束,而 不用關(guān)心數(shù)據(jù)的長度。另外,當(dāng)機(jī)器人CPU12 (或用戶)要求傳感器 單元改變數(shù)據(jù)的類型或格式時,即使由于實時處理導(dǎo)致發(fā)送幀的發(fā)送 被延遲,該變化的細(xì)節(jié)在所述發(fā)送幀中在從傳感器單元10到機(jī)器人 CPU 12中被反映出來,因為涉及數(shù)據(jù)類型等的信息寫入到數(shù)據(jù)格式 300中,機(jī)器人CPU 12也可以執(zhí)行輸入,而不關(guān)心幀被延遲的實情。
在下面將描述一個示例,在該示例中,要從機(jī)器人CPU 12 發(fā)送到傳感器單元10的用于改變傳感器輸出的命令被輸出,并且傳感 器單元根據(jù)該命令改變傳感器輸出,并且從傳感器單元IO發(fā)送到機(jī)器 人CPU 12的數(shù)據(jù)的長度改變。
假定在傳感器15的輸出中,傳感器單元10的CPU 22在發(fā) 送階段過程中發(fā)送姿態(tài)角、角速度和加速度。在圖3的數(shù)據(jù)格式300 中,機(jī)器人CPU12在命令段304中設(shè)置"SET"命令,然后設(shè)置數(shù)據(jù) 量(在設(shè)置位置中)和設(shè)置參數(shù)(setting parameters ),并且在圖2的接 收階段將它們發(fā)送到傳感器單元10。傳感器單元10的CPU 22解釋該 "SET"命令,并且將設(shè)置在測量數(shù)據(jù)段308中的參數(shù)存儲到RAM 16的第二區(qū)域中。已經(jīng)存儲在RAM 16的第一區(qū)域中的參數(shù)是傳送模式 的各種比特值,并且因為這是全部的姿態(tài)角、角速度和加速度被發(fā)送 的模式,所以第二比特、第一比特和最低有效位設(shè)定為"111"。另一 方面,從機(jī)器人CPU 12接收到的并且存儲在RAM 16的第二區(qū)域中的 新參數(shù)為"100"。這是加速度被輸出,而角速度和姿態(tài)角沒有被輸出 的模式。將這些參數(shù)存儲在RAM 16的第二區(qū)域中之后,根據(jù)這樣被 存儲在第二區(qū)域中的參數(shù),CPU 22將傳感器輸出以圖3的數(shù)據(jù)格式300 從傳感器15發(fā)送到機(jī)器人CPU 12。并且,在解釋完"SET"命令并且 將新參數(shù)存儲在RAM 16的第二區(qū)域中之后,CPU22轉(zhuǎn)換到新參數(shù)并 且從下一個發(fā)送時刻發(fā)送數(shù)據(jù)。如果CPU 22不能在計算程序的執(zhí)行過 程中分配任務(wù),或者在通過RS - 232C等的通信過程中沒有剩余時間, 那么轉(zhuǎn)換到新參數(shù)從下一個發(fā)送幀反映出來。以此方式,傳送模式段 306的傳送模式從"111"轉(zhuǎn)換到"100",并且包含在測量數(shù)據(jù)段308 中的傳感器輸出也從(加速度、角速度和姿態(tài)角)轉(zhuǎn)換到(加速度)。 間隔符"<,,附加在幀頭,間隔符")"附加在幀尾。因為角速度和姿 態(tài)角從測試數(shù)據(jù)中去除,所以數(shù)據(jù)的長度變短,從而一幀中數(shù)據(jù)量也 變少。數(shù)據(jù)的總量由傳送大小段302在其頭中設(shè)置。
機(jī)器人CPU 12通過檢測數(shù)據(jù)的頭間隔符和尾間隔符來確定 從傳感器單元IO接收到的數(shù)據(jù)的一幀,從幀的傳送大小段302確定接 收到的幀中的數(shù)據(jù)量,從傳送模式段306確定只有加速度被發(fā)送,并 且獲得設(shè)置在測量數(shù)據(jù)段308中的加速度。機(jī)器人CPU 12根據(jù)接收到 的該加速度執(zhí)行機(jī)器人的姿態(tài)的反饋控制。由于發(fā)送的數(shù)據(jù)量少(即, 數(shù)據(jù)的長度變短),因而可以增強(qiáng)通信速度。
在圖4A和4B中,示出了在參數(shù)變化之前的數(shù)據(jù)格式(在 圖4A中)和在參數(shù)變化之后的數(shù)據(jù)格式(在圖4B中)。示意性地示 出了測量數(shù)據(jù)段308表示的數(shù)據(jù)長度變短的情況?!?0431通過時間戳的時間管理另一方面,當(dāng)將傳感器輸出從傳感器單元IO發(fā)送到機(jī)器人CPU 12 時,有時會發(fā)生數(shù)據(jù)丟失的數(shù)據(jù)"跳躍"。如果控制階段分為Tl、 T2 和T3,那么在這些階段期間,傳感器單元10不中斷地發(fā)送數(shù)據(jù),有時 可能會發(fā)生,當(dāng)機(jī)器人CPU 12在階段T1和T3中接收數(shù)據(jù)時,而另 一方面階段T2中的數(shù)據(jù)丟失。當(dāng)該類型的數(shù)據(jù)丟失發(fā)生時,機(jī)器人 CPU 12需要可靠地檢測到數(shù)據(jù)丟失的發(fā)生以執(zhí)行丟失處理。如果不能 檢測這樣的數(shù)據(jù)丟失,那么基于在該錯誤期間的傳感器輸出,會錯誤 地執(zhí)行姿態(tài)控制;然而,在另一方面,如果可以;險測這樣的數(shù)據(jù)丟失, 那么可以通過執(zhí)行用于丟失數(shù)據(jù)的輔助處理來保持姿態(tài)控制。
因此,在本發(fā)明的該實施例中,除了如上所述的可變長度數(shù) 據(jù)格式,"時間戳"數(shù)據(jù)和"計時時間"數(shù)據(jù)還被附加到測量數(shù)據(jù)段308 上。該"時間戳"數(shù)據(jù)在周期性時刻,或在任何需要的時刻被附加到 從機(jī)器人CPU 12發(fā)送到傳感器單元IO的數(shù)據(jù)上。用于附加所述時間 戳的時刻由用戶來設(shè)定。機(jī)器人CPU12結(jié)合內(nèi)部計時器,并且當(dāng)發(fā)送 數(shù)據(jù)時,將表示參考瞬時時刻的數(shù)據(jù)作為時間戳發(fā)送到傳感器單元10。
傳感器單元10的CPU 22也結(jié)合內(nèi)部計時器,并且在將傳感 器15的傳感器輸出發(fā)送到機(jī)器人CPU 12時,將包含在來自機(jī)器人CPU 12的數(shù)據(jù)中的時間戳發(fā)送到機(jī)器人CPU12,換句話說,即表示參考瞬 時時刻的數(shù)據(jù),以及由計時器計時的已過時間。每當(dāng)CPU22從機(jī)器人CPU 12接收到時間戳?xí)r,其進(jìn)行更新并且將時間戳存儲到RAM 16中。 而且,當(dāng)電源打開時,或者當(dāng)從機(jī)器人CPU12接收到"RtTim"命令 時,CPU22的計時器重置。因此,經(jīng)過時間給出了從電源打開時的經(jīng) 過時間,或者接收到"RtTim"命令時的經(jīng)過時間。通過使時間戳隨著 機(jī)器人CPU12發(fā)送"RtTim"命令而發(fā)送,可以確保計時時間示出了 由時間戳示出的瞬時時刻的經(jīng)過時間,因而從所述兩項信息,即,時 間戳和計時時間,機(jī)器人CPU 12可以精確地;險測到與從傳感器單元 10接收到的數(shù)據(jù)有關(guān)的時間信息。
圖5示意性地示出了數(shù)據(jù)結(jié)構(gòu)300中的測量數(shù)據(jù)段部分。"時 間戳"308a包含在從機(jī)器人CPU 12發(fā)送到傳感器單元10的數(shù)據(jù)中, 并且為載有參考瞬時時刻的數(shù)據(jù),在所述參考瞬時時刻機(jī)器人CPU 12 執(zhí)行測量例如,其可以是12:01:15等。并且"計時時間,,308b為載 有從傳感器單元10執(zhí)行測量開始時的經(jīng)過時間;例如,其可能是 00:00:12,通過檢測附加在從傳感器單元10接收到的數(shù)據(jù)上的時間戳 308a和計時器308b,才幾器人CPU 12可以識別^M專感器單元10接收到 的數(shù)據(jù)的時刻。"時間戳"308a也可被稱為附加在"計時時間"308b 上的時間標(biāo)簽。如圖6中所示,假定機(jī)器人CPU 12從傳感器單元10 順序接收到的幀1、 2和3的時間戳和計時時間如下<接收到的幀1>時間戳12:01:15計時時間00:00:12<接收到的幀2>時間戳12:01:15計時時間00:00:14 <接收到的幀3> 時間戳12:01:15 計時時間00:00:18從接收到的幀2的計時時間和接收到的幀3的計時時間之間差, 機(jī)器人CPU 12可以檢測接收到的幀2和接收到的幀3之間的數(shù)據(jù)丟失 了。
圖7A和7B示意性地示出了傳感器單元IO和機(jī)器人CPU 12 之間的時間管理,換句話說,通過時間數(shù)據(jù)的發(fā)送和接收來進(jìn)行時間 管理。首先,在圖7A中,機(jī)器人CPU12在瞬時時刻tl發(fā)送時間戳。 傳感器單元10的CPU22接收該時間戳,并且將該載有瞬時時刻tl的 時間戳存儲在RAM 16中。如果"RsTim"命令與所述時間戳一同接收, 那么計時器被該命令重置到0,并且從該時間戳的瞬時時刻tl重新執(zhí) 行計時。如圖7B中所示,CPU22將瞬時時刻tl的時間戳和通過計時 器測量的計時時間At附加在來自傳感器15的傳感器輸出上,然后將它 們發(fā)送到機(jī)器人CPU 12。機(jī)器人CPU 12能夠識別收到數(shù)據(jù)的瞬時時 刻為tl+At。因而,即使例如通信需要一些時間,使得在從傳感器單 元10到機(jī)器人CPU 12的傳輸中發(fā)生時間延遲,由于機(jī)器人CPU 12 可以識別所接收到的幀的瞬時時刻,即傳感器單元10的測量時間,其 可以進(jìn)行實時處理。而且,如果數(shù)據(jù)被連續(xù)接收的有效瞬時時刻分別 為tl + At、 tl+2.At和tl + 3.At,那么可以檢測到數(shù)據(jù)已經(jīng)被無丟失地 接收。另一方面,如果數(shù)據(jù)被連續(xù)接收的有效瞬時間分別為tl + At、 tl+ 2.At和tl + 4.At,那么,因為數(shù)據(jù)是在預(yù)定的階段從傳感器單元10 無中斷地發(fā)送,可以檢測到在tl + 3.At的數(shù)據(jù)項丟失。
盡管在該實施例中,不僅可以在機(jī)器人CPU 12中還可以在 傳感器單元10中設(shè)置專用計時器,并且對于被該內(nèi)部計時器測量的、 當(dāng)發(fā)送來自傳感器單元10的數(shù)據(jù)時要被附加和傳輸?shù)漠?dāng)前瞬時時刻, 需要傳感器單元10中的計時器和機(jī)器人CPU 12中的計時器彼此精確 地一致。因為在該實施例中,當(dāng)前瞬時時刻不是由傳感器單元IO測量, 而是只有時間間隔和時間戳一起被測量和發(fā)送,因此不需要考慮兩個 計時器的同步問題。
如上所述,根據(jù)本發(fā)明的實施例,可以通過如下來提供流暢 的姿態(tài)控制(1)以預(yù)定的間隔將數(shù)據(jù)從傳感器單元10無中斷地發(fā)送到機(jī)器 人CPU 12;元10發(fā)送到機(jī)器人CPU 12,并且使得機(jī)器人CPU 12可以可靠地接收 并讀取任何類型的數(shù)據(jù),即使其是在任何時刻發(fā)送的;及(3 )當(dāng)數(shù)據(jù)從傳感器單元10發(fā)送到機(jī)器人CPU 12時,設(shè)置要被 傳感器單元10附加的并且被發(fā)送到機(jī)器人CPU 12的測量時間數(shù)據(jù), 使得兩個計時器之間的同步或誤差問題不會發(fā)生,并且機(jī)器人CPU 12 可以準(zhǔn)確地確定這是多少數(shù)據(jù)。
盡管在該實施例中,傳感器單元IO將載有時間戳和計時時 間的數(shù)據(jù)以可變常數(shù)數(shù)據(jù)格式300發(fā)送到機(jī)器人CPU 12, 也可以將 此應(yīng)用到任何需要的數(shù)據(jù)格式,包括固定長度數(shù)據(jù)格式。
而且,盡管在所述實施例中,通過示例的方式示出了機(jī)器人CPU 12和傳感器單元IO之間的一對一通信,本發(fā)明并不限于此。將 大量的器件連^^到例如USB、 IEEE1394、 Ethernet (注冊商標(biāo))等的通 信線也是可接受的。具體來說,當(dāng)前有多個類型的傳感器或致動器, 此外還有大量的機(jī)器人CPU 12,它們?nèi)窟B接在通訊網(wǎng)絡(luò)上。對于此 多對多系統(tǒng),為了確保其實時性能,不僅通訊速度足夠高是不夠的, 而且對于該系統(tǒng)來說,能夠在它的數(shù)據(jù)單元中執(zhí)行數(shù)據(jù)的解碼也是非 常重要的,并且在數(shù)據(jù)中包括用于執(zhí)行瞬時時刻補(bǔ)償?shù)谋匾乃矔r時 刻信息也是非常重要的。換句話說,在通訊網(wǎng)絡(luò)中,通信速度快的高 級別器件,通信速度慢的低級別器件,以及盡管是高級別而且具有高 通信速度、但數(shù)據(jù)量極大、以致需要相當(dāng)大的時間進(jìn)行通信的器件或 類似器件混合在一起,并且由于它們之間的通信是隨機(jī)執(zhí)行的,所以 對于所有這些器件來說不可能實時地精確地運(yùn)行,并且實際上需要在 充分的時間寬度內(nèi)匹配它們的時刻。在實際中,該充分的時間寬度取 決于系統(tǒng),但是通常來說其大約是lms到100ms。因此,在實際中, 為了確保實時控制,設(shè)置自解碼能力和瞬時時刻計算功能變得關(guān)鍵。 應(yīng)理解為,盡管需要標(biāo)識自身或者基于命令所來自的器件,這可以通 過頭部分來管理。而且,如上所述,盡管在該示例中使用了 BASE64, 因為BASE64是常用格式,其還有一個有利的方面是多個器件的每一 個可以通過讀取數(shù)據(jù)大小和頭,甚至是不讀取內(nèi)容(測量數(shù)據(jù)),以簡 單和容易的方式確定這是否是其自身所需要的數(shù)據(jù)。
下面更具體地說明將機(jī)器人CPU 12和傳感器單元IO連接到 網(wǎng)絡(luò)的例子。應(yīng)理解為,假定對于這些中的每個,附加有相互標(biāo)識在的符號(處理器名稱或處理器編號等)的符號,并且這些符號被包含 在發(fā)送數(shù)據(jù)中?!窺0531當(dāng)網(wǎng)絡(luò)中有多個傳感器時因為在來自傳感器的數(shù)據(jù)中,包含有標(biāo)識傳感器的符號,因而機(jī) 器人CPU能夠從多個傳感器中識別特定的傳感器。而且,機(jī)器人CPU 能夠利用該標(biāo)識傳感器的符號將命令發(fā)送到特定的傳感器?!?0541當(dāng)網(wǎng)絡(luò)中有多個CPU時因為在來自傳感器的數(shù)據(jù)中,包含有標(biāo)識多個CPU的特定的CPU 的符號,因而機(jī)器人的多個CPU能夠從多個CPU中識別使用該傳感 器的數(shù)據(jù)的特定的CPU。而且,因為來自機(jī)器人的多個CPU的特定的 CPU包含了在其發(fā)送的數(shù)據(jù)中標(biāo)識其自身的符號,因而可以在識別特 定的CPU的同時將命令發(fā)送給傳感器。「00551當(dāng)網(wǎng)絡(luò)中有多個傳感器和多個CPU時因為在來自傳感器的數(shù)據(jù)中,包含有標(biāo)識傳感器的符號和標(biāo)識CPU的符號,因而機(jī)器人的多個CPU和多個傳感器能夠互相識別傳感 器和CPU的組合。而且,因為在機(jī)器人的多個CPU中的特定的CPU 執(zhí)行包含有標(biāo)識傳感器的符號和標(biāo)識CPU的符號的數(shù)據(jù)傳輸,因而可 以在識別特定的CPU的同時將命令發(fā)送給傳感器?!?0561當(dāng)網(wǎng)絡(luò)中有多個傳感器和多個CPU時的時間戳和計時時間計時時間以積分方式由每一個傳感器固有的計時器來計算。對于時間戳,每一個CPU具有其自己的固有的時間戳和傳感器,并且通過 傳感器的預(yù)定組合,傳感器和CPU共享共有的時間戳。據(jù)此,由多個傳感器識別和管理的瞬時時刻被同步,而且即使沒有維持該同步也可 以實時地控制機(jī)器人。傳感器可以以簡單的計時器(時鐘計時器等) 來操作,所以可以以低成本來實現(xiàn)這些功能。
在此方法下,可以同步多個CPU的瞬時時刻,并且即使沒 有維持該同步也可以實時地控制機(jī)器人。據(jù)此,使得CPU更緊湊并且 可以以低成本來實現(xiàn)。而且,因為即使擴(kuò)展系統(tǒng)或者插入額外的器件, 也不需要同步所增加的CPU或傳感器的瞬時時刻,因此系統(tǒng)的增減簡 單并且容易。 一般地,同步多個傳感器或CPU的瞬時時刻并且保持它 們的同步是困難的,并且這使得系統(tǒng)尺寸增大、成本增加、以及操作 延遲。因為通常,在筒單的時鐘計時器中,計時由例如石英晶體震蕩 器的低級時鐘執(zhí)行,因此難于精確地匹配多個傳感器和多個CPU的時 鐘周期和時鐘時刻,所以實際中不可能同步多個傳感器和多個CPU的 瞬時時刻。因為機(jī)器人的實時控制等所需要的是確定用于預(yù)定的CPU 和預(yù)定的傳感器的同步的瞬時時刻,因此通過具有固有的共有時間戳, 可以實現(xiàn)相等的行為來進(jìn)行瞬時時刻的同步。而且,通過以預(yù)定長度 的周期來更新時間戳,可以消除由于通過例如石英晶體震蕩器的時鐘 進(jìn)行的計時導(dǎo)致的積分誤差,并且因此在實際中長期的瞬時時刻管理 變得可能。因此,對于具有共有的時間戳的多個CPU,可以筒單地并 且容易地實現(xiàn)它們相互的瞬時時刻的等同匹配。
權(quán)利要求
1、一種機(jī)器人控制系統(tǒng),包括用于機(jī)器人的主處理器以及將傳感器輸出發(fā)送到所述主處理器的傳感器單元,其特征在于,在所述主傳感器和所述傳感器單元之間,數(shù)據(jù)以可變長度數(shù)據(jù)格式發(fā)送和接收;所述可變長度數(shù)據(jù)格式包括傳送大小段、命令段、傳送模式段和數(shù)據(jù)段;所述傳送大小段規(guī)定了傳送的數(shù)據(jù)量;所述命令段規(guī)定了傳送目的地的細(xì)節(jié);及所述傳送模式段規(guī)定了要被傳送的數(shù)據(jù)的類型和序列。
2、 根據(jù)權(quán)利要求1所述的機(jī)器人控制系統(tǒng),其中所述主處理器將參數(shù)設(shè)定為所述傳送模式,以減小要被傳送的數(shù) 據(jù)的類型數(shù),并且將所述參數(shù)發(fā)送到所述傳感器單元;及傳送大小和所述傳送模式,并且將類型數(shù)減少的數(shù)據(jù)發(fā)送到所述主處理器。
3、 根據(jù)權(quán)利要求1所述的機(jī)器人控制系統(tǒng),其中載有由所述主處理器計時的瞬時時刻的數(shù)據(jù)包含在從所述處理器 發(fā)送到所述傳感器單元的數(shù)據(jù)中;及所述載有瞬時時刻的數(shù)據(jù),和載有由所述傳感器單元計時的經(jīng)過 時間的數(shù)據(jù)包含在從所述傳感器單元發(fā)送到所述主處理器的數(shù)據(jù)中。
4、 根據(jù)權(quán)利要求3所述的機(jī)器人控制系統(tǒng),其中所述經(jīng)過時間由 每一個傳感器所固有的計時器累加得到。
5、 根據(jù)權(quán)利要求1所述的機(jī)器人控制系統(tǒng),其中在作為預(yù)定控制階段的一部分的發(fā)送階段過程中,所述傳感器單元將數(shù)據(jù)發(fā)送到所述 主處理器,并且在所述預(yù)定控制階段的剩余階段過程中,所述傳感器 單元從所述主處理器接收數(shù)據(jù)。
6、 根據(jù)權(quán)利要求1所述的機(jī)器人控制系統(tǒng),其中所述傳感器輸出 包括姿態(tài)角、角速度、加速度、溫度、時間戳、計時時間和單元名中 的至少一個。
7、 根據(jù)權(quán)利要求1所述的機(jī)器人控制系統(tǒng),其中所述傳感器輸出 包括標(biāo)識傳感器的符號和標(biāo)識CPU的符號中的至少一個。
全文摘要
本發(fā)明涉及機(jī)器人控制系統(tǒng)。利用串行數(shù)據(jù)線(14)在傳感器單元(10)和機(jī)器人CPU(12)之間進(jìn)行通信??勺冮L度數(shù)據(jù)格式包括傳送大小段、命令段、傳送模式段、測量數(shù)據(jù)段和CRC段;并且,隨著增加和減小所述測量數(shù)據(jù)段中的數(shù)據(jù)的類型數(shù),由傳送類型段規(guī)定該數(shù)據(jù)的類型。通過減小所述數(shù)據(jù)的類型數(shù),所述數(shù)據(jù)的長度被縮短,因而確保了通信速度。此外,通過發(fā)送來自所述機(jī)器人CPU(12)的時間戳數(shù)據(jù),以及通過發(fā)送來自所述傳感器單元(10)的時間戳+計時時間數(shù)據(jù),所述傳感器單元(10)的測量次數(shù)精確地被所述機(jī)器人CPU(12)控制。
文檔編號B25J9/00GK101232977SQ200680027933
公開日2008年7月30日 申請日期2006年8月1日 優(yōu)先權(quán)日2005年8月1日
發(fā)明者杉原久義, 藤吉基弘, 野野村裕 申請人:豐田自動車株式會社