孟祥偉,劉志剛
(中國(guó)科學(xué)技術(shù)大學(xué)工程科學(xué)學(xué)院,安徽合肥 230027)
多目標(biāo)光纖光譜天文望遠(yuǎn)鏡[1]通過(guò)焦面上的k個(gè)光纖定位單元可以快速準(zhǔn)確地實(shí)現(xiàn)對(duì)k個(gè)星體目標(biāo)同時(shí)定位[2]觀察。光纖定位單元[3]由光纖及其控制機(jī)構(gòu)組成,采用雙回轉(zhuǎn)機(jī)構(gòu)[4](中心回轉(zhuǎn)軸和偏心回轉(zhuǎn)軸),簡(jiǎn)稱(chēng)中心軸和偏心軸,兩軸均由電機(jī)驅(qū)動(dòng),它們的運(yùn)動(dòng)使光纖端部可以到達(dá)觀測(cè)區(qū)域圓的任何位置。光纖定位采用的是各個(gè)光纖定位單元自動(dòng)定位的模式,每個(gè)光纖定位單元的觀測(cè)區(qū)域是一個(gè)圓形區(qū)域,為了保證所有光纖單元的觀察區(qū)域能夠覆蓋整個(gè)焦面以提高觀測(cè)效率[5],必須使相鄰光纖的觀測(cè)區(qū)域有部分重疊,這樣相鄰光纖定位單元的夾持機(jī)構(gòu)在運(yùn)動(dòng)過(guò)程中可能產(chǎn)生碰撞。對(duì)單元的中心軸和偏心軸的運(yùn)行進(jìn)行控制,使其按特定的運(yùn)行序列運(yùn)行,這樣就能夠規(guī)避碰撞。因此,從軟件控制上進(jìn)行單元之間的防碰撞[6]處理具有重要意義。
焦面上有k個(gè)光纖定位單元,如圖1(a)所示。一個(gè)光纖定位單位周?chē)?個(gè)單元與其相鄰,如圖1(b)所示。光纖定位單元的夾持機(jī)構(gòu)在運(yùn)動(dòng)過(guò)程中的外形輪廓可以提取為中心板和偏心桿,如圖1(c)所示。中心板在中心軸上以O(shè)點(diǎn)為圓心旋轉(zhuǎn)范圍為0~360°,偏心桿在偏心軸上以E點(diǎn)為圓心旋轉(zhuǎn)范圍為0~180°,光纖端部在偏心桿上。當(dāng)單元運(yùn)行時(shí),偏心軸的旋轉(zhuǎn)帶動(dòng)偏心桿展開(kāi)可能與其周?chē)鷨卧钠臈U或中心板產(chǎn)生碰撞,但它們中心板與中心板之間不會(huì)產(chǎn)生碰撞,且當(dāng)單元偏心桿不展開(kāi)時(shí)不會(huì)造成任何碰撞。
圖1 單元分析圖
在星象觀測(cè)[7]時(shí),光纖定位單元要運(yùn)行到星象位置,由星象坐標(biāo)位置計(jì)算單元中心軸和偏心軸需要旋轉(zhuǎn)多少角度才能使光纖端部到達(dá)星象位置,也即目標(biāo)位置。以一個(gè)單元運(yùn)行到星象位置P為例,如圖1(d)所示,若已知星象坐標(biāo)P(x,y),單元中心軸圓心坐標(biāo)O(x0,y0),中心軸臂長(zhǎng)為 Rc,偏心軸臂長(zhǎng)為Re,則可得中心軸、偏心軸需要旋轉(zhuǎn)的角度θc、θe為
運(yùn)行序列即一行由0和1數(shù)值組成的數(shù)組[8],光纖定位單元按照這行數(shù)組能夠運(yùn)行到星象處的目標(biāo)位置。把中心軸和偏心軸需要旋轉(zhuǎn)的角度θc、θe按一定比例劃分為兩組運(yùn)行序列。序列中的數(shù)值0表示暫停,數(shù)值1表示運(yùn)行,劃分比例按1 rad=100片數(shù)值1。
假設(shè)θc劃分為N片數(shù)值1,θe劃分為M片數(shù)值1,由于單元運(yùn)行時(shí)間要求盡量短,且偏心桿不展開(kāi)不會(huì)造成碰撞,則劃分運(yùn)行序列:
①若N>M,中心軸先運(yùn)行,偏心軸和中心軸同時(shí)運(yùn)行完成,如圖2(a)所示;
②若N<M,偏心軸和中心軸同時(shí)開(kāi)始運(yùn)行,中心軸先運(yùn)行完成,偏心軸后運(yùn)行完成,如圖2(b)所示。
圖2 運(yùn)行序列的劃分
對(duì)于焦面上k個(gè)光纖定位單元,每個(gè)單元在進(jìn)行定位時(shí)都按照其運(yùn)行序列運(yùn)行,運(yùn)行流程如圖3(a)所示。當(dāng)k個(gè)單元運(yùn)行1片時(shí),運(yùn)行序列的運(yùn)行位置向前移動(dòng)1個(gè),此時(shí)對(duì)每個(gè)單元進(jìn)行碰撞檢測(cè),相對(duì)于當(dāng)前正在檢測(cè)碰撞的單元,只要檢測(cè)到此單元與其周?chē)噜彽?個(gè)單元中的某一個(gè)單元產(chǎn)生碰撞,則立即處理碰撞,處理碰撞原理如圖3(b)所示。產(chǎn)生碰撞的兩個(gè)單元根據(jù)防碰撞算法進(jìn)行規(guī)避碰撞,之后進(jìn)行運(yùn)行序列的整理。由于規(guī)避碰撞和整理運(yùn)行序列會(huì)造成運(yùn)行序列的改變,故要對(duì)其單元再次進(jìn)行碰撞檢測(cè),直至無(wú)碰撞產(chǎn)生。當(dāng)k個(gè)單元運(yùn)行1片產(chǎn)生的碰撞都處理完成后,則再進(jìn)行下1片的運(yùn)行,直至所有單元都運(yùn)行到達(dá)其定位的目標(biāo)位置。該防碰撞算法通過(guò)對(duì)焦面上每個(gè)單元與其周?chē)噜弳卧呐鲎矙z測(cè),把產(chǎn)生碰撞的兩個(gè)單元進(jìn)行處理,直至無(wú)碰撞產(chǎn)生,從而解決焦面上k個(gè)光纖定位單元之間的碰撞。
由于單元在運(yùn)行時(shí)是同時(shí)的,則運(yùn)行時(shí)間最長(zhǎng)的那個(gè)單元決定了一次光纖定位的完成時(shí)間。為了讓單元運(yùn)行時(shí)間最短,即運(yùn)行序列片數(shù)最小,在處理碰撞時(shí),盡可能處理已經(jīng)達(dá)到目標(biāo)位置的單元,讓未達(dá)到目標(biāo)位置的單元繼續(xù)運(yùn)行。
圖3 單元運(yùn)行流程與處理碰撞原理圖
光纖定位單元在運(yùn)行時(shí)與其周?chē)膯卧加嘘P(guān)系,若發(fā)生碰撞現(xiàn)象,則處理碰撞時(shí)影響因素較多,難以直接解決,為此可以采用分治算法的思想[9]。分治算法[10]是將一個(gè)不能直接解決的大問(wèn)題,分割成一些相對(duì)容易解決的小問(wèn)題,以便各個(gè)擊破,分而治之。這些子問(wèn)題相互獨(dú)立且與原問(wèn)題性質(zhì)相同。求出子問(wèn)題的解,就可得到原問(wèn)題的解。
利用分治算法思想把復(fù)雜的單元碰撞現(xiàn)象劃分為幾種類(lèi)型處理,經(jīng)研究分析發(fā)現(xiàn)兩單元產(chǎn)生碰撞必定有單元偏心軸的旋轉(zhuǎn),即必定有單元的偏心桿參與。假設(shè)單元在運(yùn)行時(shí),當(dāng)前檢測(cè)碰撞的單元為n單元,則相對(duì)于單元n,檢測(cè)到n單元與m單元運(yùn)行時(shí)產(chǎn)生碰撞,如圖4所示,可分解為4種碰撞類(lèi)型。
①第1種碰撞類(lèi)型:n單元中心板與m單元偏心桿相碰,如圖4(a)所示,記為T(mén)p1;
②第2種碰撞類(lèi)型:n單元偏心桿與m單元中心板相碰,如圖4(b)所示,記為T(mén)p2;
③第3種碰撞類(lèi)型:n單元已到目標(biāo)位置,n單元偏心桿與m單元偏心桿相碰,如圖4(c)所示,記為T(mén)p3;
④第4種碰撞類(lèi)型:n單元未到目標(biāo)位置,n單元偏心桿與m單元偏心桿相碰,如圖4(d)所示,記為T(mén)p4。
兩個(gè)單元在運(yùn)行過(guò)程中產(chǎn)生碰撞,判斷處理哪個(gè)單元以及是處理其中心板還是處理偏心桿,碰撞標(biāo)簽就是判斷處理的重要依據(jù)。用單元碰撞屬性標(biāo)簽化[11]方法生成每個(gè)單元的碰撞標(biāo)簽[12]。
圖4 碰撞類(lèi)型示意圖
假設(shè)以n單元的中心板在目標(biāo)位置,其偏心桿從起始位置展開(kāi)至目標(biāo)位置的過(guò)程中是否與m單元在目標(biāo)位置(中心板及偏心桿在目標(biāo)位置)時(shí)產(chǎn)生碰撞,如圖5所示,進(jìn)行碰撞標(biāo)簽分類(lèi)。
①第1種碰撞標(biāo)簽:n單元偏心桿運(yùn)行過(guò)程中與m單元中心板目標(biāo)位置、偏心桿目標(biāo)位置都不相碰,如圖5(a)所示,記為T(mén)g1;
②第2種碰撞標(biāo)簽:n單元偏心桿運(yùn)行過(guò)程中與m單元中心板目標(biāo)位置相碰,如圖5(b)所示,記為T(mén)g2;
③第3種碰撞標(biāo)簽:n單元偏心桿運(yùn)行過(guò)程中與m單元偏心桿目標(biāo)位置相碰,如圖5(c)所示,記為T(mén)g3;
④第4種碰撞標(biāo)簽:n單元偏心桿與運(yùn)行過(guò)程中m單元中心板目標(biāo)位置、偏心桿目標(biāo)位置都相碰,如圖5(d)所示,記為T(mén)g4。
圖5 碰撞標(biāo)簽示意圖
由于單元碰撞屬性標(biāo)簽化處理只與單元的目標(biāo)位置有關(guān),故可在單元運(yùn)行之前預(yù)先處理,這樣在碰撞處理時(shí)可直接調(diào)用,能夠較大節(jié)省處理時(shí)間。
規(guī)避碰撞就是碰撞處理,將單元的中心軸或偏心軸運(yùn)行序列在當(dāng)前的碰撞位置之前暫停p片運(yùn)行數(shù)值為1的運(yùn)行片,并在運(yùn)行序列末尾加上p片運(yùn)行數(shù)值為1的運(yùn)行片。由于處理碰撞過(guò)程中要規(guī)避碰撞而處理p片運(yùn)行片,當(dāng)p值很小時(shí),則碰撞單元不能有效地規(guī)避碰撞,從而需要再次規(guī)避碰撞,造成處理時(shí)間長(zhǎng)。當(dāng)p值很大時(shí),雖然能有效地避免碰撞,但每次暫停的運(yùn)行片多,檢測(cè)碰撞次數(shù)多,故造成處理時(shí)間長(zhǎng),且運(yùn)行序列變長(zhǎng),將導(dǎo)致最終運(yùn)行完成時(shí)間變長(zhǎng)。如圖6所示,經(jīng)分析驗(yàn)證p=10時(shí)能有效地規(guī)避碰撞,且處理時(shí)間短。
圖6 處理時(shí)間與暫停片數(shù)關(guān)系
假設(shè)單元在運(yùn)行時(shí),當(dāng)前檢測(cè)碰撞的單元為n單元,檢測(cè)到n單元與m單元在運(yùn)行過(guò)程中產(chǎn)生碰撞,進(jìn)行碰撞處理時(shí),首先把碰撞情形對(duì)應(yīng)其碰撞類(lèi)型和碰撞標(biāo)簽,最后判斷處理某個(gè)單元的某個(gè)軸運(yùn)行序列。例如若碰撞情形對(duì)應(yīng)第1種碰撞類(lèi)型和第1種碰撞標(biāo)簽(記為T(mén)p1+Tg1),則處理m單元偏心軸運(yùn)行序列。處理單元運(yùn)行序列的依據(jù)有3條:
①由于最長(zhǎng)運(yùn)行時(shí)間的單元決定光纖定位的完成時(shí)間,故為縮短光纖定位時(shí)間,應(yīng)盡量處理已經(jīng)到達(dá)目標(biāo)位置的單元,例如碰撞情形Tp3+Tg1和Tp3+Tg3共2種;
②由于單元的偏心桿不展開(kāi)不會(huì)造成碰撞,故應(yīng)盡量處理單元偏心軸,例如碰撞情形Tp1+Tg1、Tp1+Tg3、Tp2+Tg1、Tp2+Tg3、Tp3+Tg2、Tp3+Tg4、Tp4+Tg1、Tp4+Tg2、Tp4+Tg4 共9 種;
③由于處理單元的偏心軸時(shí),有時(shí)不能有效地規(guī)避碰撞,即會(huì)產(chǎn)生碰撞標(biāo)簽中碰撞情形,故可處理單元的中心軸或碰撞的另一單元,例如碰撞情形Tp1+Tg2、Tp1+Tg4、Tp2+Tg2、Tp2+Tg4、Tp4+Tg3 共5 種。
經(jīng)綜合分析具體碰撞情形處理如表1所示。
表1 碰撞情形處理
由于碰撞處理是進(jìn)行運(yùn)行序列的暫停處理,則會(huì)造成運(yùn)行的不連續(xù),從而影響光纖單元的定位精度[13],碰撞處理前后運(yùn)行序列如圖7(a)和圖7(b)所示。因此要把運(yùn)行序列進(jìn)行整理,即運(yùn)行序列整理成兩段式或三段式,如圖7(c)~圖7(e)所示。因?yàn)檫\(yùn)行序列的調(diào)整必然會(huì)造成單元運(yùn)行軌跡的變化,故在調(diào)整運(yùn)行序列時(shí)要?jiǎng)討B(tài)的檢測(cè)單元碰撞并處理碰撞,這整個(gè)過(guò)程即稱(chēng)為動(dòng)態(tài)整理運(yùn)行序列。如圖7(f)和圖7(g)所示,單元在運(yùn)行序列位置n處發(fā)生碰撞,在位置n之前暫停10片,然后進(jìn)行運(yùn)行序列的整理。
圖7 運(yùn)行序列整理
編寫(xiě)軟件程序?qū)Ψ琅鲎卜种螛?biāo)簽算法進(jìn)行仿真模擬[14]實(shí)驗(yàn),如圖8所示,這6個(gè)模擬實(shí)驗(yàn)快照(圖8(a)~圖8(f))直觀地反映了防碰撞處理的全過(guò)程。如圖8(a)所示,單元1、單元2和單元3在起始位置,它們對(duì)應(yīng)的目標(biāo)星象點(diǎn)分別為1*、2*和3*。如圖8(b)所示,單元1、單元2和單元3正在運(yùn)行。如圖8(c)所示,單元1的偏心桿與單元3的偏心桿產(chǎn)生碰撞,屬于碰撞情形Tp3+Tg1。如圖8(d)所示,由于單元3已經(jīng)到達(dá)目標(biāo)位置,為縮短運(yùn)行時(shí)間,故處理單元3的偏心桿規(guī)避碰撞,其運(yùn)行序列也進(jìn)行動(dòng)態(tài)整理,同時(shí)單元1的中心板與單元2的偏心桿產(chǎn)生碰撞,屬于碰撞情形Tp3+Tg1。如圖8(e)所示,此時(shí)單元1與單元3的碰撞情形屬于Tp4+Tg1,而單元2已經(jīng)到達(dá)目標(biāo)位置,為縮短運(yùn)行時(shí)間,故處理單元2的偏心桿與單元3的偏心桿規(guī)避碰撞,并動(dòng)態(tài)整理其運(yùn)行序列。如圖8(f)所示,單元1運(yùn)行完成時(shí),單元2和單元3也運(yùn)行完成。
圖8 仿真演示
仿真實(shí)驗(yàn)結(jié)果表明單元在處理碰撞時(shí)不僅規(guī)避碰撞,也動(dòng)態(tài)整理運(yùn)行序列。單元1、單元2和單元3在處理碰撞前的運(yùn)行序列如圖9(a)、圖9(c)和圖9(e)所示,處理碰撞后的運(yùn)行序列如圖9(b)、圖9(d)和圖9(f)所示。結(jié)果表明此算法能夠動(dòng)態(tài)整理運(yùn)行序列成兩段式或三段式。
圖9 處理碰撞前后單元運(yùn)行序列
本文對(duì)光纖單元運(yùn)行碰撞的問(wèn)題,利用碰撞現(xiàn)象的特點(diǎn),以分而治之的策略,將運(yùn)行碰撞劃分為4個(gè)碰撞類(lèi)型,并對(duì)單元進(jìn)行標(biāo)簽化處理生成4個(gè)碰撞標(biāo)簽,以及碰撞處理后動(dòng)態(tài)整理運(yùn)行序列。實(shí)驗(yàn)結(jié)果表明,該防碰撞算法不僅能夠有效地規(guī)避碰撞,而且保證單元運(yùn)行連續(xù)。