(電力電子與電力傳動(dòng)專業(yè)論文)機(jī)器人運(yùn)動(dòng)控制系統(tǒng)的軟件設(shè)計(jì).pdf_第1頁(yè)
(電力電子與電力傳動(dòng)專業(yè)論文)機(jī)器人運(yùn)動(dòng)控制系統(tǒng)的軟件設(shè)計(jì).pdf_第2頁(yè)
(電力電子與電力傳動(dòng)專業(yè)論文)機(jī)器人運(yùn)動(dòng)控制系統(tǒng)的軟件設(shè)計(jì).pdf_第3頁(yè)
(電力電子與電力傳動(dòng)專業(yè)論文)機(jī)器人運(yùn)動(dòng)控制系統(tǒng)的軟件設(shè)計(jì).pdf_第4頁(yè)
(電力電子與電力傳動(dòng)專業(yè)論文)機(jī)器人運(yùn)動(dòng)控制系統(tǒng)的軟件設(shè)計(jì).pdf_第5頁(yè)
已閱讀5頁(yè),還剩74頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

(電力電子與電力傳動(dòng)專業(yè)論文)機(jī)器人運(yùn)動(dòng)控制系統(tǒng)的軟件設(shè)計(jì).pdf.pdf 免費(fèi)下載

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

東南人學(xué)碩 j 學(xué)位論文 a b s t r a c t a tt h eb a s i so fe x i s t e dh a r d w a r ep l a t f o r m ,t h i sp a p e rd e v e l o p e sac o m p l e t es e to f r o b o tm o t i o nc o n t r o ls y s t e ms o f t w a r e f i r s t l y , t h i sp a p e ri m p r o v e sr e v e r s ek i n e m a t i c s s o l u t i o no fr o b o ta n di n t r o d u c e sp a t hp l a n n i n gi nj o i n ts p a c ea n dr e c t a n g u l a rc o o r d i n a t e s s p a c e a n dt h e n ,s o f t w a r e so fip ca n dd s p , a sw e l la sc o m m u n i c a t i o np r o t o c o lb e t w e e n i p ca n dd s pi sd e s i g n e d t h es o f t w a r eo fd s pa d o p t ss t r u c t u r e dp r o g r a mm e t h o d a n d a c c o r d i n gt ot h ep r i n c i p l eo fh i g hc o h e s i o na n dl o wc o u p l i n g ,r e a s o n a b l em o d u l e sd i v i s i o n i sm a d e d e t a i l e di n t r o d u c t i o n sa r em a d eo nt h ed e s i g na n di m p l e m e n t a t i o no fe v e r y m o d u l e t h es o f t w a r eo fi p ca d o p t st h ei d e ao fo o p f u n c t i o n a lr e q u i r e m e n t so fi p c s o f t w a r ea r ei m p l e m e n t e db yc l a s s e sa n di n t e r a c t i o nb e t w e e nc l a s s e s a tt h es a m et i m e t h ep a p e rd i s c u s s e st h ea p p l i c a t i o n so fd e s i g np a t t e r na n dc + + s t lo ni p cs o f t w a r e a n d o nt h i sb a s i s ,as e to fc o m m u n i c a t i o np r o t o c o lf o rt h es i x - j o i n tr o b o tm o t i o nc o n t r o li s d e s i g n e d b a s e do nt h er e s e a r c ho f r o b o tp o s i t o nl o o pc o n t r o la l g o r i t h m ,t h i sp a p e r i n t r o d u c e st h ed e s i g na n di m p l e m e n t a t i o no fp o s i t o nf u z z yc o n t r o l l e ri nd e t a i l a tl a s t , d e b u g g i n go fs i n g l ej o i n t ,m u l t i p l ej o i n t s ,l i n em o v e ,a r cm o v ea n d f u n c t i o no f t e a c h - p l a y b a c ka r em a d et ot h er o b o tm o t i o nc o n t r o ls y s t e m t h i si s s u eh a ss u c c e s s f u l l ys e tu pas o f t w a r ep l a t f o r mf o rs i x - j o i n tr o b o tm o t i o nc o n t r o l s y s t e m ,a n dp a s st h ed e b u g g i n g ,w h i c hh a sl a i dag o o df o u n d a t i o nf o rt h en e x tp h a s eo f r e s e a r c hw o r k k e y w o r d :r o b o t ,p a t hp l a n n i n g ,o o p , d e s i g np a t t e m ,f u z z yc o n t r o l i l 東南大學(xué)學(xué)位論文獨(dú)創(chuàng)性聲明 本人聲明所呈交的學(xué)位論文是我個(gè)人在導(dǎo)師指導(dǎo)下進(jìn)行的研究工作及取得 的研究成果。盡我所知,除了文中特別加以標(biāo)注和致謝的地方外,論文中不包含 其他人已經(jīng)發(fā)表或撰寫(xiě)過(guò)的研究成果,也不包含為獲得東南大學(xué)或其它教育機(jī)構(gòu) 的學(xué)位或證書(shū)而使用過(guò)的材料。與我一同工作的同志對(duì)本研究所做的任何貢獻(xiàn)均 已在論文中作了明確的說(shuō)明并表示了謝意。 研究生簽名:c 驂毳民同期: 少繆一丫一2 艿 東南大學(xué)學(xué)位論文使用授權(quán)聲明 東南大學(xué)、中國(guó)科學(xué)技術(shù)信息研究所、國(guó)家圖書(shū)館有權(quán)保留本人所送交學(xué)位 論文的復(fù)印件和電子文檔,可以采用影印、縮印或其他復(fù)制手段保存論文。本人 電子文檔的內(nèi)容和紙質(zhì)論文的內(nèi)容相一致。除在保密期內(nèi)的保密論文外,允許論 文被查閱和借閱,可以公布( 包括刊登) 論文的全部或部分內(nèi)容。論文的公布( 包 括刊登) 授權(quán)東南大學(xué)研究生院辦理。 研究生簽名:c 蓮盟導(dǎo)師簽名 第一章緒論 1 1 引言 第一章緒論 工業(yè)機(jī)器人,是“在工業(yè)領(lǐng)域應(yīng)用的一種可重復(fù)編程的( 至少具有三個(gè)可重復(fù)編程軸) , 具有多種用途的自動(dòng)機(jī)器”( 國(guó)際機(jī)器人聯(lián)合會(huì)的定義) 。它所處的環(huán)境為制造環(huán)境,即所謂 的“結(jié)構(gòu)化”環(huán)境。由于具有可重復(fù)編程的特點(diǎn),特別適合于多品種、變批量的柔性生產(chǎn), 它已被廣泛應(yīng)用在工業(yè)生產(chǎn)線上。 工業(yè)機(jī)器人系統(tǒng)包括機(jī)械本體和控制器兩大部分。目前,機(jī)器人的機(jī)械本體方面的設(shè)計(jì) 與制造技術(shù)已相當(dāng)成熟,主要應(yīng)用開(kāi)發(fā)與研究方向集中在機(jī)器人的控制器??刂破魇菣C(jī)器人 系統(tǒng)的指揮中樞,負(fù)責(zé)信息處理和與人交互,它接收來(lái)自傳感器的信號(hào),對(duì)其進(jìn)行數(shù)據(jù)處理, 并按照預(yù)存信息、機(jī)器人的狀態(tài)及其環(huán)境情況等,產(chǎn)生出控制信號(hào)去驅(qū)動(dòng)機(jī)器人各個(gè)關(guān)節(jié)。 控制器決定了機(jī)器人性能的優(yōu)劣。 開(kāi)發(fā)“具有開(kāi)放式結(jié)構(gòu)的模塊化、標(biāo)準(zhǔn)化機(jī)器人控制器”是當(dāng)前機(jī)器人控制器一個(gè)重要 發(fā)展方向。所謂開(kāi)放式結(jié)構(gòu)是指控制器沒(méi)計(jì)的各個(gè)層次對(duì)用戶開(kāi)放,用戶可以方便的擴(kuò)展和 改進(jìn)其性能。其主要思想是: ( 1 ) 利用基于1 f 封閉式計(jì)算機(jī)平臺(tái)的開(kāi)發(fā)系統(tǒng),如s u n ,s g i 。p c s 有效利用標(biāo)準(zhǔn)計(jì) 算機(jī)平臺(tái)的軟、硬件資源為控制器擴(kuò)展創(chuàng)造條件。 ( 2 ) 利用標(biāo)準(zhǔn)的操作系統(tǒng),如u n i x ,v x w o r k s 和標(biāo)準(zhǔn)的控制語(yǔ)言,如c ,c + + 。采片j 標(biāo) 準(zhǔn)操作系統(tǒng)和控制語(yǔ)言,從而可以改變各種專用機(jī)器人語(yǔ)言并存且互不兼容的局面。 ( 3 ) 采用標(biāo)準(zhǔn)總線結(jié)構(gòu),使得為擴(kuò)展控制器性能而必須的硬件,如各種傳感器,i ,o 板、運(yùn)動(dòng)控制板可以很容易的集成到原系統(tǒng)。 ( 4 ) 利用網(wǎng)絡(luò)通訊,實(shí)現(xiàn)資源共享或遠(yuǎn)程通訊目前,幾乎所有的控制器都沒(méi)有網(wǎng)絡(luò) 功能,利用網(wǎng)絡(luò)通訊功能可以提高系統(tǒng)變化的柔性。 開(kāi)放式控制器包含硬件和軟件兩個(gè)部分,硬件是實(shí)現(xiàn)機(jī)器人控制功能的實(shí)體。軟件是實(shí) 現(xiàn)操作者對(duì)機(jī)器人控制的軟環(huán)境。通過(guò)軟件把機(jī)器人控制器的硬件同操作者聯(lián)系起來(lái),操作 者通過(guò)軟件來(lái)實(shí)現(xiàn)對(duì)機(jī)器人的操作,完成各種作業(yè)任務(wù)。 控制器軟件系統(tǒng)功能的好壞關(guān)系到是否可以最大限度的發(fā)揮硬件系統(tǒng)的功能,好的軟件 系統(tǒng)甚至可以彌補(bǔ)一些硬件性能方面的不足,提高機(jī)器人的作業(yè)能力。 1 2 國(guó)內(nèi)外機(jī)器人控制軟件研究現(xiàn)狀 國(guó)外關(guān)于工業(yè)機(jī)器人的控制器的研究已經(jīng)比較成熟了,機(jī)器人控制器的研究已經(jīng)由硬件 過(guò)渡到軟件,當(dāng)前機(jī)器人控制器軟件系統(tǒng)主要采用以下六種結(jié)構(gòu)方式: ( 1 ) 基于任務(wù)描述型 把整個(gè)系統(tǒng)軟件按照任務(wù)劃分為不同的任務(wù)模塊,對(duì)單獨(dú)的任務(wù)模塊進(jìn)行編程,最后通 過(guò)任務(wù)優(yōu)先級(jí)和定時(shí)的方式來(lái)完成對(duì)每一個(gè)任務(wù)的調(diào)度。由于是基于明確任務(wù)型的,因此, 其專用性比較強(qiáng)。 ( 2 ) 基于部件描述型 按照機(jī)器人所實(shí)現(xiàn)的功能,把整個(gè)控制軟件系統(tǒng)劃分為幾大部件,每個(gè)部件完成一項(xiàng)單 東南人學(xué)碩l j 學(xué)位論文 獨(dú)的任務(wù)。這種部件描述犁軟t t :結(jié)構(gòu)提高了軟件系統(tǒng)的通削性和升放性,h j 戶町以通過(guò)具體 的需要添加新的功能郜仆。與此l 叫u 寸,由j :丌發(fā)出束的郜f i 乓仃 醍蝕的獨(dú)立性,w 此,u j 以 在開(kāi)發(fā)新的軟件系統(tǒng)時(shí)重用這些現(xiàn)成的部件。 ( 3 ) 基丁多代理( a g e n t ) 描述的模型 由t - a g e n t 具有自治性、開(kāi)放性、反應(yīng)能力和主動(dòng)性,因此近年米它鈹j 泛地應(yīng)用在智 能領(lǐng)域。 ( 4 ) 基于端口對(duì)象動(dòng)態(tài)重新配置的軟件結(jié)構(gòu) 這種方法將面向?qū)ο蟮脑O(shè)計(jì)同數(shù)字控制系統(tǒng)的端口設(shè)計(jì)相結(jié)合。一個(gè)基丁端口的對(duì)象被 定義為具有通信功能端口的對(duì)象,每一個(gè)端口對(duì)象的輸入輸出表示一個(gè)狀態(tài)變量串。對(duì)其 他對(duì)象而言,隱藏了內(nèi)部的狀態(tài)和方法。該結(jié)構(gòu)和框架設(shè)置了一個(gè)全局狀態(tài)信息庫(kù),所有對(duì) 象端口變量的狀態(tài)以表格的形式存在該庫(kù)中。 ( 5 ) 面向通訊的機(jī)器人軟件系統(tǒng) 美國(guó)s a n d i a 國(guó)家實(shí)驗(yàn)室與其他能源實(shí)驗(yàn)部分合作,并由d o e 的機(jī)器人技術(shù)發(fā)展( r t d p ) 資助,開(kāi)發(fā)通用智能系統(tǒng)控制器( g i s c ) ,g i s c 采用基于面向通訊的概念,并按照這樣一 個(gè)概念,將一組能夠相互通信的、具有互補(bǔ)能力的和半自主式的子系統(tǒng)合成為一個(gè)監(jiān)督系統(tǒng)。 每一個(gè)子系統(tǒng)有定義良好的命令和接口,并且通過(guò)各子系統(tǒng)的接口由一個(gè)監(jiān)督控制程序直轄 市系統(tǒng)的整個(gè)活動(dòng)。單獨(dú)的子系統(tǒng)也具有適時(shí)低層次控制功能,可以采用自主方式和異步方 式來(lái)實(shí)現(xiàn)。 ( 6 ) 分布式控制和管理系統(tǒng) 美國(guó)c i m f l e x 技術(shù)公司將新技術(shù)基礎(chǔ)和相關(guān)方法用于高性能智能控制器的快速開(kāi)發(fā)過(guò) 程,研制了一種分布式智能控制和管理( d i c a m ) 系統(tǒng)。這種通用控制結(jié)構(gòu)結(jié)合面向任務(wù) 的、帶有元控制器的領(lǐng)域控制器,元控制器可以在一個(gè)領(lǐng)域內(nèi)調(diào)度活動(dòng)。本項(xiàng)目包括四個(gè)部 分:用丁智能控制的參考模型的形式化;在開(kāi)發(fā)上作空間中應(yīng)用程序的構(gòu)建,工作空間中系 統(tǒng)的要求通過(guò)選擇設(shè)計(jì)組件來(lái)滿足,設(shè)計(jì)組件是通用參考結(jié)構(gòu)組件的專門(mén)化和詳細(xì)化;應(yīng)用 庫(kù)中再使用模塊的構(gòu)建;豐富大量的開(kāi)發(fā)工具的創(chuàng)建,融合了從軟件工程( 控制定律說(shuō)明符、 代碼發(fā)生器、協(xié)議、編輯器和調(diào)試器) 和知識(shí)丁程( 領(lǐng)域模型器、規(guī)則管理器、基于知識(shí)的 設(shè)計(jì)助理) 中的大量技術(shù)。 前兩種軟件結(jié)構(gòu)一般用于示教再現(xiàn)型工業(yè)機(jī)器人。后四種軟件結(jié)構(gòu)形式主要應(yīng)用在機(jī)器 人的智能控制器。本課題的研究對(duì)象屬于示教再現(xiàn)型工業(yè)機(jī)器人,本課題的任務(wù)是在師兄設(shè) 計(jì)的基于i p c ( 工控機(jī)) + d s p 的開(kāi)放式控制器硬件平臺(tái)及部分軟件的基礎(chǔ)上開(kāi)發(fā)出一套 完整的具有界面友好,開(kāi)放性和通用性強(qiáng)的機(jī)器人運(yùn)動(dòng)控制系統(tǒng)軟件。為了提高軟件的重用 性,我們采用了第二種基于部件描述的軟件結(jié)構(gòu)。 1 3 課題的研究對(duì)象和內(nèi)容 本課題的研究對(duì)象是一個(gè)6 關(guān)節(jié)機(jī)器人手臂,由底座主體、大臂、小臂和手腕等幾個(gè)部 分組成,其結(jié)構(gòu)如圖1 1 所示,連桿參數(shù)如表1 1 所示。本課題是在2 0 0 2 界師兄研究工作 的基礎(chǔ)上進(jìn)行進(jìn)一步工作,2 0 0 2 屆師兄完成了機(jī)器人運(yùn)動(dòng)控制卡的設(shè)計(jì),以及部分軟件設(shè) 計(jì),這其中包括:下位機(jī)的c p l d 程序、上位機(jī)p c i 驅(qū)動(dòng)程序、兩關(guān)節(jié)的運(yùn)動(dòng)控制的上下 位機(jī)程序、機(jī)器人運(yùn)動(dòng)學(xué)正逆解解析表達(dá)式的推導(dǎo)等。本課題延續(xù)他的工作,完成的主要內(nèi) 容有如下幾個(gè)方面: ( 1 ) 對(duì)機(jī)器人運(yùn)動(dòng)學(xué)逆解進(jìn)行完善。 ( 2 ) 開(kāi)發(fā)一套完整的機(jī)器人運(yùn)動(dòng)控制系統(tǒng)軟件并設(shè)計(jì)工控機(jī)和d s p 運(yùn)動(dòng)控制卡的通 訊協(xié)議。 2 第一章緒論 ( 2 ) 對(duì)機(jī)器人位置環(huán)控制算法進(jìn)行研究,主要針對(duì)p i d 控制與模糊控制。 ( 3 ) 完成機(jī)器人六關(guān)1 ,軟硬件調(diào)試。 本課題設(shè)計(jì)中使剛的軟件開(kāi)發(fā)i :具主要有:t ic c 4 0 ,v i s u a lc + + 6 0 ,m i c r o s o f ts q l s e r v e r 2 0 0 0 。i :控機(jī)操作系統(tǒng)采川m i c r o s o f t 公司的w i n d o w s2 0 0 0 。 一i :控機(jī)c p u 配置為p e n t u i m 川1 0 g h z ,內(nèi)存大小為2 5 6 m 。d s p 仿真器使用聞亭公 司的t d s 5 1 0j t a g 仿真器。機(jī)器人各關(guān)節(jié)上面安裝有交流伺服電機(jī),電機(jī)額定轉(zhuǎn)速為3 0 0 0 轉(zhuǎn),分,帶有光電碼盤(pán)和制動(dòng)器,和伺服電機(jī)配套的是日本安川i 公司的s g d m a 伺服驅(qū)動(dòng)器。 r o t ( s ) 圖1 1 機(jī)器人結(jié)構(gòu)圖 表1 1 連桿參數(shù) s tf l a n g e 桿號(hào)關(guān)節(jié)變量 qi ( 度) a i ( m m )d i ( m m ) 轉(zhuǎn)角范圍 oi ( 度) ( 度) 101 9 0 1 5 0 ( a 1 ) 0 1 7 0 2 e2 ( 一9 0 ) 1 8 0 2 6 0 ( a 2 ) 01 3 5 + 6 0 3 0 3 9 0 6 0 ( a 3 ) 0- 7 0+ 1 9 0 4 o4 9 0 0 - 2 6 0 ( d 4 ) 1 8 0 5 0 5 9 0 00 1 3 5 6 06 1 8 00 - 9 0 ( d 6 ) 3 5 0 注:oi :繞z i 1 從x i 1 到x i 轉(zhuǎn)角,以逆時(shí)針為正;c ii :繞x i 從乙1 到z i 轉(zhuǎn)角,以逆時(shí)針為正; a i :沿x i 從z i 1 平移到z i 的距離,與) ( i 正方向一致時(shí)為正;d i :沿乙1 從1 平移到 x i 的距離,與z i 1 正方向一致時(shí)為正。 將圖1 1 所示的機(jī)器人結(jié)構(gòu)圖與實(shí)際的機(jī)器人相對(duì)比,我們發(fā)現(xiàn)表1 1 中的連桿參數(shù) a 3 應(yīng)由原來(lái)的6 0 改為一6 0 。 1 4 章節(jié)安排 全文共分為五章,內(nèi)容如下: 3 東南人學(xué)頌i :學(xué)位論文 第一章 第二章 第二章 第四章 第五章 第八章 緒論。介紹j ,i 業(yè)機(jī)器人技術(shù)和開(kāi)放式機(jī)器人控制器,給出j ,本課題的研 歹寸象f l j 內(nèi)彳。 機(jī)器人理論基礎(chǔ)。完善了解析法求解機(jī)器人運(yùn)動(dòng)學(xué)逆解,介糾了機(jī)器人大 節(jié)空間與直角坐標(biāo)空間軌跡規(guī)劃。 軟件設(shè)計(jì)。運(yùn)用結(jié)構(gòu)化以及面向?qū)ο蟮木庯椒ň帉?xiě)了卜位機(jī)和上位機(jī)軟 件。 機(jī)器人控制算法。詳細(xì)介紹了模糊控制算法在本課題中的應(yīng)剛。 機(jī)器人調(diào)試。完成機(jī)器人單關(guān)節(jié)、多關(guān)節(jié)、直線與圓弧運(yùn)動(dòng)以及示教再現(xiàn) 功能的調(diào)試。 結(jié)論與展望。對(duì)本課題的設(shè)計(jì)做出總結(jié),對(duì)f 一步的上作做了展望。 4 第二章機(jī)器人理論旗礎(chǔ) 第二章機(jī)器人理論基礎(chǔ) 2 1 機(jī)器人運(yùn)動(dòng)學(xué) 機(jī)器人的運(yùn)動(dòng)學(xué),看重研究機(jī)器人各個(gè)坐標(biāo)系之間的運(yùn)動(dòng)關(guān)系,是對(duì)機(jī)器人進(jìn)行運(yùn)動(dòng)控 制的理論基礎(chǔ)。機(jī)器人運(yùn)動(dòng)學(xué)主要描述了以下兩個(gè)基本問(wèn)題: 1 ) 運(yùn)動(dòng)學(xué)正問(wèn)題。對(duì)一個(gè)給定的機(jī)器人,已知機(jī)器人的幾何尺寸和關(guān)節(jié)空間的值,求 末端執(zhí)行機(jī)構(gòu)相對(duì)于給定直角坐標(biāo)系的位置和姿態(tài)。 2 ) 運(yùn)動(dòng)學(xué)逆問(wèn)題。已知機(jī)器人幾何尺寸和末端執(zhí)行機(jī)構(gòu)相對(duì)于給定直角坐標(biāo)系的位置 和姿態(tài),確定關(guān)節(jié)空間變量的值。 在參考文獻(xiàn)【1 】f 2 】中,對(duì)運(yùn)動(dòng)學(xué)的正解與逆解的求解進(jìn)行了詳細(xì)討論和計(jì)算,我通過(guò)仔 細(xì)研究后發(fā)現(xiàn)在運(yùn)動(dòng)學(xué)逆解的求解過(guò)程中,存在一個(gè)小問(wèn)題。同時(shí)文獻(xiàn)f 1 】的正解的解析表 達(dá)式存在一些筆誤,在此將更正后的正解解析表達(dá)式列出如下: n 。= c l s 2 3 ( c 4 c 5 c 6 - $ 4 s 6 ) - c 2 3 s 5 c 6 卜s l ( $ 4 c 5 c 6 + c 4 s 6 ) 船,= s 1 【s 2 3 ( c 4 c 5 c 6 - s 4 s 6 ) - c 2 3 s 5 c 6 】+ c l ( s 4 c 5 c 6 + c 4 s 6 ) 刀:= c 2 3 ( c 4 c 5 c 6 - s 4 s 6 ) + $ 2 3 s 5 c 6 0 ,= c l 【s 2 3 ( c 4 c 5 s 6 + s 4 c 6 ) - c 2 3 s 5 s 6 卜s l ( s 4 c 5 s 6 - c 4 c 6 ) 0 ,= s l 【s 2 3 ( c 4 c 5 s 6 + s 4 c 6 ) 一c 2 3 s 5 s 6 】+ c l ( s 4 c 5 s 6 c 4 c 6 ) 0 z = c 2 3 ( c 4 c 5 s 6 + s 4 c 6 ) + s 2 3 s 5 s 6 a ,= c l ( s 2 3 c 4 s 5 + c 2 3 c 5 ) 一s l s 4 s 5 口v = s l ( s 2 3 c 4 s 5 + c 2 3 c 5 ) + c l s 4 s 5 a := c 2 3 c 4 s 5 - $ 2 3 c s 只= d 6 ( c l s 2 3 c 4 s 5 + s l s 4 s 5 一c l c 2 3 c 5 ) 一d 4 c l c 2 3 + a 3 c 1 s 2 3 + a 2 c 】s 2 + a 1 c 1 只2 d 6 ( 一s l s 2 3 c 4 s 5 一c l s 4 s 5 - s 1 c 2 3 c 5 ) 一d 4 s l c 2 3 + a 3 s l s 2 3 + a 2 s 1 s 2 + a l s l = 一d 6 ( c 2 3 c 4 s 5 $ 2 3 c 5 ) + d 4 s 2 3 + a 3 c 2 3 + a 2 c 2 其中:s ,= s i n o , c f = c o s o ji = 0 - - 6 ,c 2 3 = c o s ( 0 2 一島) ,s 2 3 = s i n ( 0 2 一秒3 ) 文獻(xiàn)【1 】在求解逆解過(guò)程中,由式( 2 1 ) 、( 2 2 ) 可以導(dǎo)出見(jiàn),而由式( 2 - 3 ) 、( 2 _ 4 ) 可以導(dǎo) 出皖。 s 2 3 ( c l 以+ s l a j ,) + c 2 3 口j = c 4 s 5 一s 1 c i j + c a y5 $ 4 s 5 一c 2 3 ( c i g x + s 1 y ) + s 2 3 刀2 = s 5 c 6 一c 2 3 ( c 1 0 膏+ 5 1 0 j ,) + s 2 3 0 := $ 5 5 6 5 ( 2 1 ) ( 2 - 2 ) ( 2 - 3 ) ( 2 - 4 ) 東南人學(xué)碩i :學(xué)位論文 將( 2 2 ) 式除以( 2 1 ) 式,( 2 - 4 ) 式除以( 2 3 ) 式從而得劍: cla 。一s1aj 釓=盯m卸而i再兩汀面(2-5s2 3 as 1c c2 3a ) ( ci j+ y ) + z 0 6 一c t a n ?;I羔糕 陋6 , 當(dāng)s i n0 ,= 0 時(shí),文獻(xiàn)【1 】中得出的結(jié)論是:良、嚷有無(wú)數(shù)個(gè)解,分別取與前一插補(bǔ)點(diǎn) 相同的關(guān):節(jié)角度。 在用程序?qū)崿F(xiàn)運(yùn)動(dòng)學(xué)逆解過(guò)程中,我們用正解來(lái)驗(yàn)證逆解求出來(lái)的結(jié)果是否正確時(shí)發(fā) 現(xiàn):當(dāng)s i n9 ,= 0 時(shí)文獻(xiàn) 1 l q b 的結(jié)論是錯(cuò)誤的。我們通過(guò)仔細(xì)觀察和認(rèn)真研究機(jī)器人的正 解表達(dá)式時(shí)發(fā)現(xiàn): 由于俠的范圍為1 3 5 一+ 1 3 5 ,因此當(dāng)且僅當(dāng)0 5 = 0 時(shí),s i no ,= 0 。 1 、當(dāng)s i no s = 0 ,c o s0 s = 1 ,c 2 3 0 時(shí),? :、0 :分別為: 以:= c 2 3 ( c 4 c 6 一$ 4 s 6 ) = c ”c o s ( a , + 8 6 ) 0 z = c 2 3 ( c 4 s 6 + s 4 c 6 ) = c 2 3 s i n ( 0 4 + 優(yōu)) 由式( 2 - 7 ) 和( 2 8 ) 可得: c 2 3 0 時(shí),0 4 + 8 6 = a r c t a n 2 ( 0 :,l :) c 2 3 0 時(shí),吼+ 眈= a r c t a n 2 ( 一0 z :, - - v i :) 2 、s i n0 5 = 0 ,c o s 9 ,= 1 ,c 2 3 = 0 時(shí),i ,、 y 分別為: 1 。= c l s 2 3c o s ( 0 4 + 見(jiàn)) 一s ls i n ( 0 4 + 眈) 刀) j = c 1 5 2 3c o s ( 0 4 + 眈) 一s ls i n ( 0 4 + 優(yōu)) 由式( 2 1 1 ) 和( 2 1 2 ) 可得 s 2 3 = 1 時(shí),幺+ 吼= a r c t a n 2 ( n y ,z ,) 一只 s 2 3 = 一1 時(shí),幺+ 皖= q a r c t a n 2 ( 一刀y ,一刀,) ( 2 7 ) ( 2 8 ) ( 2 9 ) ( 2 - 1 0 ) ( 2 - 1 1 ) ( 2 1 2 ) ( 2 1 3 ) ( 2 - 1 4 ) 綜上所述,當(dāng)s i n0 ,= 0 時(shí),幺與哦有無(wú)窮解,但它們之間存在上述約束關(guān)系。在求 解時(shí),幺或皖取與前一插補(bǔ)點(diǎn)相同的關(guān):爺角度,另一個(gè)關(guān)節(jié)角度可根據(jù)上面給出約束關(guān)系 求出。 6 第_ 二章機(jī)器人理論皋礎(chǔ) 2 2 機(jī)器人運(yùn)動(dòng)軌跡規(guī)劃 所謂軌跡,是指操作臂在運(yùn)動(dòng)過(guò)程中的位移、速度和加速度對(duì)時(shí)間t 的運(yùn)動(dòng)規(guī)律。機(jī)器 人運(yùn)動(dòng)軌跡規(guī)劃,就是根據(jù)機(jī)器人操作臂要完成的一段作業(yè)來(lái)設(shè)計(jì)機(jī)器人預(yù)期的運(yùn)動(dòng)軌跡。 通常將操作臂的運(yùn)動(dòng)看作是工具坐標(biāo)系相對(duì)于:作坐標(biāo)系的運(yùn)動(dòng)。機(jī)器人作業(yè)分成兩類:一 類為點(diǎn)到點(diǎn)的運(yùn)動(dòng)( p t p ) ,只需要規(guī)定操作臂在t 作坐標(biāo)系的起始位置和目標(biāo)位置。一類 為連續(xù)路徑運(yùn)動(dòng)( c p ) 不僅要規(guī)定操作臂的起始點(diǎn)和終止點(diǎn),而且要指明兩點(diǎn)之間的若干點(diǎn) ( 路徑點(diǎn)) ,必須沿特定路徑運(yùn)動(dòng)。軌跡規(guī)劃既可在關(guān)符空間也可在直角坐標(biāo)空間中進(jìn)行,一 般情況下,關(guān)節(jié)空間的軌跡規(guī)劃用于實(shí)現(xiàn)點(diǎn)到點(diǎn)運(yùn)動(dòng),而直角坐標(biāo)空間的軌跡規(guī)劃用于實(shí)現(xiàn) 連續(xù)路徑運(yùn)動(dòng)。下面我們將分別介紹關(guān)節(jié)空間和直角坐標(biāo)空間的軌跡規(guī)劃。 2 2 1 關(guān)節(jié)空間軌跡規(guī)劃 一般地,為了控制機(jī)器人的關(guān)節(jié)空間運(yùn)動(dòng)量,并使關(guān)節(jié)運(yùn)動(dòng)軌跡平滑,關(guān)節(jié)運(yùn)動(dòng)平衡, 需要對(duì)機(jī)器人的關(guān)節(jié)運(yùn)動(dòng)進(jìn)行規(guī)劃,主要內(nèi)容包括關(guān)節(jié)運(yùn)動(dòng)軌跡的選擇和關(guān)節(jié)運(yùn)動(dòng)位置的插 值。所謂關(guān)節(jié)位置的插值,是指對(duì)于給定關(guān)節(jié)空間的起始位置和目標(biāo)位置,通過(guò)插值計(jì)算中 間時(shí)刻的關(guān)節(jié)位置。 常見(jiàn)的關(guān)節(jié)空間的位置插補(bǔ)算法有:3 次多項(xiàng)式值、過(guò)路徑點(diǎn)的三次多項(xiàng)式插值、高階 多項(xiàng)式插值、b 樣條插值、用拋物線過(guò)渡的線性插值、過(guò)路徑點(diǎn)的用拋物線過(guò)渡的線性插值 等。 本課題在實(shí)現(xiàn)點(diǎn)到點(diǎn)運(yùn)動(dòng)時(shí),采用的關(guān)節(jié)空間位置插補(bǔ)算法為用拋物線過(guò)渡的線性插 值,下面詳細(xì)介紹用拋物線過(guò)渡的線性插值。 如圖2 - 1 所示,用拋物線過(guò)渡的線性插值,其中間線段利用直線插值,兩端利用拋物線 過(guò)渡。一般地,關(guān)節(jié)加速度9 為已知的,需要求取的是拋物線與直線過(guò)渡點(diǎn)位置。 圖2 1 拋物線過(guò)渡的線性插值 圖2 1 中,由直線段可以求出關(guān)節(jié)速度為 免= 等 , 一, ( 2 1 5 ) 其中,厶是時(shí)間中間點(diǎn),厶= ( t o + t d 2 ;o h 是關(guān)節(jié)初始位置和目標(biāo)位置的中間點(diǎn)j 7 東南人學(xué)幀i j 學(xué)位論文 皖= ( 釀+ 秒,) 2 :,。是拋物線向直線過(guò)渡的時(shí)刻。 而根據(jù)拋物線的方程,厶時(shí)刻的關(guān)節(jié)何置可以川式( 2 1 6 ) 表示。 皖= 島+ 抄 ( 2 1 6 ) 由式( 2 - 1 6 ) ,可以得到,6 時(shí)刻的關(guān)筲速度,見(jiàn)式( 2 1 7 ) 。 皖= 研6 ( 2 1 7 ) 將式( 2 1 6 ) 和式( 2 1 7 ) 代入式( 2 1 5 ) 中,經(jīng)整理得到,6 的一兀二次方程,見(jiàn)式( 2 1 8 ) a 其解見(jiàn)式( 2 1 9 ) 鉚;一8 t ,6 + ( 口r 一島) = 0 ( 2 - 1 8 ) 仁一t s 一墮i 二終生二型( 2 - 1 9 )。 22 口 如圖2 1 所示,利朋拋物線過(guò)渡的兩端是對(duì)稱的,即起始段的過(guò)渡時(shí)刻為t 6 ,結(jié)束段的 過(guò)渡時(shí)刻為r ,一,6 。當(dāng)口= 4 ( 夠一吼) ,;時(shí),6 = ,2 時(shí),無(wú)直線段。加速度越大,拋物 線過(guò)渡段越短。另外,為了保證有直線段,加速度不應(yīng)該太小,應(yīng)保證口4 ( 口,一島) f ;。 路徑軌跡見(jiàn)式( 2 2 0 ) 。 r 吼+ 圭旃2 ,曬 乙 i 一 目( ,) = _ 見(jiàn)+ 8 t 6 u 一吒) ,乙,t i 一,6 ( 2 2 0 ) l 巳一l 痧( t i 一,) 2 ,一乙, m a x p u l s e ) 止向溢出 為了確保該方法是創(chuàng)建這個(gè)類型的對(duì)象的唯一途徑,需要將構(gòu)造函數(shù)定義為保護(hù) ( p r o t e c t e d ) 或私有( p r i v a t e ) 類型。 在本課題中,雙口r a m 類c d p r a m 會(huì)在很多地方使用,但他們所使用的數(shù)據(jù)應(yīng)當(dāng)一致。 因此,應(yīng)當(dāng)使用s i n g l e t o n 模式,確保上位機(jī)程序中使用的是同一個(gè)c d p r a m 對(duì)象。這樣不 僅能保證他們的數(shù)據(jù)一致性,而且節(jié)省了內(nèi)存空間,因?yàn)榈趥€(gè)對(duì)象都要占用一定的內(nèi)存空間; 同時(shí)義節(jié)約了時(shí)間,因?yàn)闃?gòu)造每個(gè)對(duì)象都需要花費(fèi)一定的c p u 時(shí)間。s i n g l e t o n 模式是對(duì)全 局變量的一種改進(jìn),它避免了那些存儲(chǔ)唯一實(shí)例的全局變量造成的名字空間污染。代碼示例 2 6 第二三章軟件設(shè)計(jì) 如下: c d p r a m p u b l i c : s t a t i cc d p r a m + i n s t a n c e ( ) ; p r i v a t e : c d p r a m 0 ; s t a t i cc d p r a m 。m _ p d p r a m ; ) : c d p r a m + c d p r a m :l n s t a n c e 0 i f ( ! m _ p d p r a m ) m _ p d p r a m = n e wc d p r a m ; ) r e t u r nm _ p d p r a m ; ) 在需要使用類c d p r a m 對(duì)象時(shí),通過(guò)i n s t a n c e ( ) 方法獲得雙口f 認(rèn)m 類c d p r a m 的唯一 實(shí)例。 3 5 4 2c c o m m a n d 類 操作人員通過(guò)上位機(jī)提供的人機(jī)界面向下位機(jī)發(fā)出控制命令,一種直觀的方法是將上位 機(jī)命令散布在各個(gè)界面類中,將上位機(jī)命令以成員函數(shù)的形式封裝于各個(gè)界面類中。如果上 位機(jī)命令較少,采用這種方法是完全可行的;而當(dāng)上位機(jī)命令較多,并且可能發(fā)生變化時(shí), 程序的修改和維護(hù)將變得異常困難。 上位機(jī)命令類c c o m m a n d 將上位機(jī)命令即將上位機(jī)到下位機(jī)的協(xié)議內(nèi)容封裝起來(lái),當(dāng) 上位機(jī)到下位機(jī)的協(xié)議內(nèi)容發(fā)生變化時(shí),不需要改變c c o m m a n d 的接1 3 ,而只需改變 c c o m m a n d 類的實(shí)現(xiàn),使得變化限制在c c o m m a n d 類中,從而有效的封裝了變化,提高 了程序的易修改性和可維護(hù)性。 3 5 4 3c m o t i o n d a t a 類 c m o t i o n d a t a 類的主要功能是接收運(yùn)動(dòng)過(guò)程數(shù)據(jù),它對(duì)上、下位機(jī)之間的同步策略以 及數(shù)據(jù)交換方法進(jìn)行封裝,當(dāng)我們需要改變上、下位機(jī)通訊的同步策略或數(shù)據(jù)交換方法時(shí), 只需改變c m o t i o n d a t a 類的實(shí)現(xiàn),而程序的其他部分不會(huì)受到影響。 c m o t i o n d a t a 類是用于接收運(yùn)動(dòng)過(guò)程數(shù)據(jù),在機(jī)器人運(yùn)動(dòng)過(guò)程中,下位機(jī)將采集到的 數(shù)據(jù)放入雙1 3r a m 中,為了讓上位機(jī)在接收數(shù)據(jù)的同時(shí)不影響對(duì)用戶操作的響應(yīng), c m o t i o n d a t a 類可以用兩種方法來(lái)接收數(shù)據(jù):定時(shí)接收法和多線程接收法。 ( 1 ) 定時(shí)接收法 定時(shí)接收法是指在上位機(jī)程序中設(shè)定一個(gè)軟件定時(shí)器,每隔一定的時(shí)間間隔發(fā)出一個(gè) w m j 。i m e r 消息,在處理w m t i m e r 消息的過(guò)程中讀一次雙口r a m ,這種方式實(shí)現(xiàn)起 來(lái)比較簡(jiǎn)單。但是,由于w m t i m e r 消息的優(yōu)先級(jí)較低,只有當(dāng)消息隊(duì)列中沒(méi)有其他消息 東南人學(xué)壩l j 學(xué)位論文 時(shí),系統(tǒng)才響應(yīng)w m _ t i m e r 消息,也就是說(shuō)實(shí)際響應(yīng)的時(shí)間有時(shí)會(huì)遠(yuǎn)大r 定時(shí)時(shí)l 硼。在機(jī) 器入選動(dòng)過(guò)程l | ,d s p 每隔。段u 寸f u j 向從i - ir a m - ,:與組數(shù)據(jù),當(dāng)數(shù)掂量較人h 寸,上位機(jī) 如果不能及時(shí)地將數(shù)據(jù)從雙口r a m 中讀出,就會(huì)造成數(shù)據(jù)丟失。定時(shí)接收法的優(yōu)點(diǎn)是它的 程序邏輯比較簡(jiǎn)單,實(shí)現(xiàn)起來(lái)比較容易。因而,在數(shù)據(jù)量比較少的情況下我們用定時(shí)接收法。 ( 2 ) 多線程接收法 多線程接收法采用w i n 3 2 應(yīng)用程序的多線程技術(shù),專門(mén)開(kāi)辟一個(gè)線程用丁二接收運(yùn)動(dòng)過(guò) 程數(shù)據(jù)。該線程在機(jī)器人停止運(yùn)動(dòng)時(shí)處于掛起狀態(tài),基本上不占用系統(tǒng)資源。一旦發(fā)出機(jī)器 人運(yùn)動(dòng)命令,馬上啟動(dòng)該線程直劍運(yùn)動(dòng)結(jié)束。在機(jī)器人運(yùn)動(dòng)過(guò)程中,該線程循環(huán)檢測(cè)雙口 r a m 中的數(shù)據(jù)標(biāo)志,根據(jù)數(shù)據(jù)標(biāo)志來(lái)讀取雙口r a m 中的數(shù)據(jù),當(dāng)雙口r a m 中無(wú)數(shù)據(jù)時(shí), 讓該線程睡眠,從而讓主線程響應(yīng)用戶操作。 在m f c 中,線程分為兩種類型:用戶界面( u 1 ) 線程( u s e ri n t e r f a c et h r e a d s ) 和工 作者線程( w o r k e rt h r e a d s ) 。兩者的不同之處在于u i 線程具有消息循環(huán)而工作者線程沒(méi) 有。u i 線程可以創(chuàng)建窗口并處理發(fā)送給這些窗口的消息;工作者線程執(zhí)行后臺(tái)任務(wù),因其 不接收用戶的直接輸入,所以不需要窗口和消息循環(huán)。 工作者線程非常適合于執(zhí)行那些可以從應(yīng)用程序中分離出來(lái)的獨(dú)立任務(wù)以及在后臺(tái)中 執(zhí)行的任務(wù)。上位機(jī)接收運(yùn)動(dòng)過(guò)程數(shù)據(jù)是一個(gè)相對(duì)獨(dú)立的任務(wù),也不需要窗口和消息循環(huán), 因此,我們創(chuàng)建一個(gè)工作者線程用于接收運(yùn)動(dòng)過(guò)程數(shù)據(jù)。我們采用下面這個(gè)m f c 提供的函 數(shù)創(chuàng)建一個(gè)上作者線程: c w i n t h r e a d + a f x b e g i n t h r e a d ( a f x _ t h r e a d p r o cp f n t h r e a d p r o c , l p v o i dp p a r a m , i n tn pr i or i t y = t h r e a d _ p r i o r i t 、,- n o r m a l , u n tn s t a c k s i z e = 0 , d w o r d d w c r e a t e f l a g s = 0 , l p s e c u r i 、j 汛r i b u t e si p s e c u r i t y a t t r s = n u l l ) ; 返同值: 一個(gè)指向新線程的線程對(duì)象。 p f n t h r e a d p r o c :線程的入口函數(shù),聲明一定要如下: u i n tm y t h r e a d f u n c t i o n ( l p v o i dp p a r a m ) ; p p a r a m : 傳遞給線程的參數(shù),注意它的類型為:l p v o i d ,所以我們可以傳遞一個(gè)結(jié) 構(gòu)體給線程。 n p r i o r i t y :線程的優(yōu)先級(jí),一般設(shè)置為0 ,讓它和主線程具有相同的優(yōu)先級(jí)。 n s t a c k s i z e :指定新創(chuàng)建的線程的棧的大小。如果為0 ,新創(chuàng)建的線程具有和主線程一 樣的大小的棧。 d w c r e a t e f l a g s :指定創(chuàng)建線程以后的狀態(tài), 有兩個(gè)狀態(tài):一是 c r e a t e ,線程創(chuàng)建以后,會(huì)處于掛起狀態(tài),真到調(diào)用_suspended r e s u m e t h r e a d ; 二是0 ,創(chuàng)建線程后就開(kāi)始運(yùn)行。 i p s e c u r i t y a t t r s ;指向一個(gè)s e c u r i t ya 1 _ r r i b u t e s 的結(jié)構(gòu)體,用它來(lái)標(biāo)識(shí)新創(chuàng)建 線程的安全性。如果為n u l l ,那么新創(chuàng)建的線程就具有和主線程一樣的安全性。 線程的掛起操作采用m f c 類c w i n t h r e a d 的成員函數(shù)s u s p e n d t h r e a d o 實(shí)現(xiàn)。 當(dāng)數(shù)據(jù)量較大時(shí),相對(duì)于定時(shí)接收法,采用多線程接收法的數(shù)據(jù)丟失率低。多線程接收 法的缺點(diǎn)是程序邏輯較為復(fù)雜,在使用多線程接收法時(shí),還要注意線程間的同步問(wèn)題。當(dāng)上、 下位機(jī)間數(shù)據(jù)傳遞量較大時(shí),我們采用多線程接收法。 第三章軟件沒(méi)計(jì) 3 5 5 數(shù)據(jù)庫(kù)訪問(wèn)模塊 在機(jī)器人運(yùn)動(dòng)過(guò)程中,下位機(jī)會(huì)采集大量的數(shù)據(jù)送入上位機(jī),上位機(jī)首先將這些數(shù)據(jù)存 入文件中,運(yùn)動(dòng)結(jié)束后,將保存在文件中的數(shù)據(jù)寫(xiě)入數(shù)據(jù)庫(kù)。數(shù)據(jù)庫(kù)訪問(wèn)模塊的功能主要有 兩個(gè):一是將保存在文件中的運(yùn)動(dòng)過(guò)程數(shù)據(jù)寫(xiě)入數(shù)據(jù)庫(kù),二是提取數(shù)據(jù)庫(kù)中數(shù)據(jù)用于進(jìn)一步 分析。 3 5 5 1 數(shù)據(jù)庫(kù)訪問(wèn)技術(shù)的選擇 本課題使用的數(shù)據(jù)庫(kù)是目前使用比較廣泛的m i c r o s o f ts q ls e r v e r 2 0 0 0 。在v c 6 0 中 常用的數(shù)據(jù)庫(kù)訪問(wèn)技術(shù)有:o d b c 、d a o 、o l ed b 、a d o 。 o d b c ( o p e nd a t a b a s ec o n n e c t i v i t y ) ,開(kāi)放式數(shù)據(jù)庫(kù)互連。它提供了一個(gè)通用的編 程接口,允許程序與多種不同的數(shù)據(jù)庫(kù)連接。它為o r a c l e ,s q ls e r v e r ,m se x c e l 等提供 了驅(qū)動(dòng)程序,使得用戶可以使用s q l 語(yǔ)句對(duì)數(shù)據(jù)庫(kù)進(jìn)行直接的底層功能操作。o d b c 的特 點(diǎn)是功能強(qiáng)大,提供了異步操作、事務(wù)處理等高級(jí)功能,但相應(yīng)的編程比較復(fù)雜、工作量大。 與此同時(shí),o d b c 只能用于訪問(wèn)關(guān)系數(shù)據(jù)庫(kù),很難訪問(wèn)對(duì)象數(shù)據(jù)庫(kù)和非關(guān)系數(shù)據(jù)庫(kù)、順序 文件等系統(tǒng)。 d a o ( d a t aa c c e s so b j e c t ) ,數(shù)據(jù)訪問(wèn)對(duì)象。d a o 就是一組基于m i c r o s o f ta c c e s s j e t 數(shù)據(jù)庫(kù)引擎的c o m 自動(dòng)化接口。如果系統(tǒng)使用a c c e s s 數(shù)據(jù)庫(kù),則用d a o 編程比較方便。 o l ed b ,對(duì)象鏈接與嵌入數(shù)據(jù)庫(kù)。o l ed b 在兩個(gè)方面對(duì)o d b c 進(jìn)行了擴(kuò)展。首先, o l ed b 提供了一個(gè)數(shù)據(jù)庫(kù)編程的c o m 接口;其次,o l ed b 提供了一個(gè)可用于關(guān)系型和 非關(guān)系型數(shù)據(jù)源的接口。o l ed b 的兩個(gè)基本結(jié)構(gòu)是o l ed b 提供程序( p r o v i d e r ) 和o l e d b 用戶程序( c o n s u m e r ) 。直接使用o l ed b 來(lái)設(shè)計(jì)數(shù)據(jù)庫(kù)應(yīng)用程序需要大量的代碼。 a d o ( a c t i v e xd a t ao b j e c t ) ,a c t i v e x 數(shù)據(jù)對(duì)象。a d o 技術(shù)是基于o l ed b 的訪問(wèn) 接口,它繼承了o l ed b 技術(shù)的優(yōu)點(diǎn),并且,a d o 對(duì)o l ed b 的接口作了封裝,定義了 a d o 對(duì)象,使程序開(kāi)發(fā)得到簡(jiǎn)化,a d o 技術(shù)屬于數(shù)據(jù)庫(kù)訪問(wèn)的高層接口。 綜上所述,o d b c 與o l ed b 功能強(qiáng)大,但使用起來(lái)比較復(fù)雜,程序編碼量大。d a o 只能用于訪問(wèn)m i c r o s o f ta c c e s s m e t 數(shù)據(jù)庫(kù),而a d o 基于o l ed b 技術(shù)而且使用起來(lái)比較 簡(jiǎn)單。因此,我們使用a d o 作為數(shù)據(jù)庫(kù)訪問(wèn)技術(shù)。 3 5 5 2 在v c 中使用a d o 要在v c 中使用a d o ,在使用前必須作一些初始化的工作: ( 1 ) c o m 庫(kù)的初始化 由于a d o 是基于c o m 技術(shù)的,我們可以使用a f x o l e l n i t 0 來(lái)初始化c o m 庫(kù),這項(xiàng)工 作通常在c w i n a p p :l n i t l n s t a n c e 0 的重載函數(shù)中完成,代碼示例如下: b o o lc r o b o t a p p :l n i t l n s t a n c e ( ) c u r s o r l o c a t i o n = a d u s e c l i e n t ; ,游標(biāo)類型 ,設(shè)置連接字符串,必須是b s t r 型或- b s r _ t 類型 b s t rts t r c o n n e c t = ”p r o v i d e r = s q l o l e d b 1 :p e r s i s ts e c u r i t yi n f o = f a l s e ;” “u s e ri d = s a ;i n i t i a lc a t a l o g = r o b o t m o t i o n d a t a ;d a t as o u r c e = 1 7 2 2 1 5 1 9 ”: m _ p c o n n e c u o n 一 o p e n ( s t r c o n n e c t 。,a d m o d e u n k n o w n ) ;打開(kāi)數(shù)據(jù)庫(kù) r e t u mt r u e ; ) | l 捕捉異糠 c a t c h ( _ c o r n _ e r r o re ) ,顯示錯(cuò)誤信息 a f x m e s s a g e b o x ( e d e s c n p t i o n 0 ) ; r e t u r nf a l s e : 3 l 東南人學(xué)頎 j 學(xué)位論文 ) 其中m _ p c o n n e c t i o n 為_(kāi) c o n n e c t i o n p t r 接u 時(shí)象。我們征析構(gòu)函數(shù) j 火| = d j 數(shù)據(jù)庫(kù)連接。 為了霄約內(nèi)存空間,更為了防i 卜頻繁進(jìn)行數(shù)據(jù)庫(kù)的連接與關(guān)閉操作,我們將s i n g l e t o n 模式應(yīng)用于類f a c a d e a d o ,在整個(gè)應(yīng)用程序中只實(shí)例化一次f a c a d e a d o 類即整個(gè)應(yīng)用程 序中只存在唯一一個(gè)f a c a d e a d o 的對(duì)象。 3 5 6 曲線顯示模塊 曲線顯示模塊顧名思義主要功能是用于顯示曲線。曲線顯示有靜態(tài)顯示和動(dòng)態(tài)顯示之 分。靜態(tài)顯示的曲線是一個(gè)靜止圖形;而動(dòng)態(tài)顯示的曲線是一個(gè)變化圖形,能夠?qū)崿F(xiàn)對(duì)變化 數(shù)據(jù)的實(shí)時(shí)顯示。曲線顯示模塊既要進(jìn)行靜態(tài)曲線顯示也要進(jìn)行動(dòng)態(tài)曲線的顯示。動(dòng)態(tài)曲線 用于顯示實(shí)時(shí)顯示運(yùn)動(dòng)過(guò)程中位置與轉(zhuǎn)速的變化;而靜態(tài)曲線可用于觀察整個(gè)運(yùn)動(dòng)過(guò)程機(jī)器 人位置與轉(zhuǎn)速的變化趨勢(shì)。曲線顯示模塊是由類c p i o t 來(lái)實(shí)現(xiàn)的,它繼承自m f c 的窗口類 c w n d ,同時(shí)使用其他的一些m f c 類來(lái)實(shí)現(xiàn)輔助功能。 圖3 1 4c p i o t 類的界面 c p i o t 類的界面如圖3 1 4 所示。在界面中,有一個(gè)垂直滾動(dòng)條和一個(gè)水平滾動(dòng)條,利用 它們來(lái)實(shí)現(xiàn)曲線的垂直和水平滾動(dòng),左上角和右下角的s p i n 控件分別用于對(duì)y 軸和x 軸進(jìn) 行縮放。動(dòng)態(tài)的彈出式菜單能實(shí)現(xiàn)曲線的動(dòng)態(tài)放大和平移以便于數(shù)據(jù)的觀察與分析。 3 5 6 1 曲線的動(dòng)態(tài)顯示 為了實(shí)時(shí)觀察機(jī)器人各關(guān)節(jié)的運(yùn)動(dòng)情況,在機(jī)器人運(yùn)動(dòng)過(guò)程中,我們將運(yùn)動(dòng)過(guò)程中采集 到的位置與轉(zhuǎn)速信息在上位機(jī)中以曲線的形式顯示出來(lái),由于上位機(jī)不斷地接收來(lái)自下位機(jī) 的數(shù)據(jù),所以曲線不可能在有限的顯示屏中一次性地全部顯示出來(lái),曲線只能以動(dòng)態(tài)的形式 通過(guò)顯示屏幕,而且每個(gè)時(shí)刻可以看到的都應(yīng)該是最近剛接收的n 個(gè)數(shù)據(jù)( 假設(shè)一屏能顯 示n 個(gè)數(shù)據(jù)點(diǎn)) 所畫(huà)出來(lái)的曲線,為了實(shí)現(xiàn)“在有限的顯示屏中動(dòng)態(tài)顯示曲線”這一功能, 我們將從下位機(jī)接收到的數(shù)據(jù)保存起來(lái),每隔一段時(shí)間進(jìn)行一次曲線刷新,我們將最新接收 到的n 個(gè)數(shù)據(jù)取出來(lái)繪制在屏幕上,從而實(shí)現(xiàn)曲線的動(dòng)態(tài)顯示。 3 5 6 2 位圖雙緩沖技術(shù)的使用 我們的繪圖過(guò)程大多放在o n p a i n t 函數(shù)中,當(dāng)窗口由于某種原因需要重繪時(shí),首先用 3 2 第j 幸軟件設(shè)計(jì) 背景色將顯示區(qū)清除,然后才調(diào)用o n p a i n t ,而背景色往往與繪圖內(nèi)容反差很大,這樣在短 時(shí)問(wèn)內(nèi)背景色與顯示圖形的交替出現(xiàn)即出現(xiàn)屏幕閃爍現(xiàn)象,尤其是繪制點(diǎn)數(shù)較多時(shí),這種現(xiàn) 象更加嚴(yán)重。為了解決這個(gè)問(wèn)題,我們采用“雙緩沖”技術(shù),

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論