freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

六腳爬蟲(chóng)機(jī)器人機(jī)械結(jié)構(gòu)設(shè)計(jì)與控制系統(tǒng)研討-資料下載頁(yè)

2025-06-23 00:42本頁(yè)面
  

【正文】 tri135no[j]。 l=channelno[k]。 SendPacket(s*3, l, backwardposi[k])。 }注:6腳與5類似,略去。} 因?yàn)镾endPacket函數(shù)涉及到三個(gè)變量:速度、舵機(jī)號(hào)、舵機(jī)位置,所以利用變量l、k分別提取舵機(jī)號(hào)及其對(duì)應(yīng)的數(shù)組號(hào)。為使機(jī)器人行走時(shí)滿足運(yùn)動(dòng)周期要求,則需要設(shè)定不同速度,經(jīng)調(diào)試,當(dāng)s=7,著地移動(dòng)速度為21時(shí)滿足行走要求。為使機(jī)器人動(dòng)作到位,每次發(fā)送指令后必須要延遲,其延遲關(guān)系近似為舵機(jī)位置變化值的五分之一,即Delayms=stride/5=150/5。四腳步態(tài)與三腳步態(tài)類似,由于有四只腳同時(shí)著地,則顯得更穩(wěn)定。以前進(jìn)為例,其行走路徑為:一、5腳上抬;二、5腳前進(jìn);三、5腳落地;四、5腳后退;五、234腳同上。當(dāng)34腳落地時(shí),15腳正好抬起,同樣需要通過(guò)改變步態(tài)速度來(lái)實(shí)現(xiàn)。在編程之前,需聲明如下三個(gè)數(shù)組:quar15no[6] = {1,2,13,14,0,12}。 quar26no[6] = {4,5,16,17,3,15}。 quar34no[6] = {7,8,10,11,6,9}。 程序則為:void quarforward(int time){ int i,j,k,l=0。 for(i=0。itime。i++) { for(j=0。j4。j++) //5腳上抬 { k=quar15no[j]。 //獲取數(shù)組序號(hào) l=channelno[k]。 //獲取端口號(hào) SendPacket(s, l, raiseposi[k])。 } delay_ms(Delayms)。 for(j=4。j6。j++) //5腳前進(jìn) { k=quar15no[j]。 l=channelno[k]。 SendPacket(s, l, forwardposi[k])。 } delay_ms(Delayms)。 for(j=0。j4。j++) //5腳下降至初位 { k=quar15no[j]。 l=channelno[k]。 SendPacket(s, l, initposi1[k])。 } delay_ms(Delayms)。 for(j=4。j6。j++) //5腳后退至初位 { k=quar15no[j]。 l=channelno[k]。 SendPacket(s*3, l, backwardposi[k])。 注:6;4與5的一致,只要將數(shù)組換掉即可 }由于四腳步態(tài)的穩(wěn)定性,后續(xù)的其它涉及到行走的程序,均調(diào)用的是四腳步態(tài)的前進(jìn)后退。(波動(dòng))步態(tài)單腳步態(tài)由于每次只移動(dòng)一只腳,看起來(lái)動(dòng)作較快,實(shí)際上走一步花的時(shí)間較長(zhǎng),總體上看行走較慢,只適合表演一下。其行走步驟為:一、1腳上抬;二、1腳前進(jìn);三、1腳落地;四、1腳后退;五、按6腳的順序依次完成與1腳相同的動(dòng)作。為實(shí)現(xiàn)6腳落地時(shí),1腳抬起,則動(dòng)作速度設(shè)置為28。首先定義六個(gè)數(shù)組,與前述功能一致:int single1no[3] = {0,1,2}。int single2no[3] = {3,4,5}。int single3no[3] = {6,7,8}。int single4no[3] = {9,10,11}。int single5no[3] = {12,13,14}。int single6no[3] = {15,16,17}。然后編寫(xiě)程序,同樣以前進(jìn)程序?yàn)槔?。void singleforward(int time){ int i,j,k,l=0。 for(i=0。itime。i++) { for(j=1。j3。j++) //1腳上抬 { k=single1no[j]。 //獲取數(shù)組序號(hào) l=channelno[k]。 //獲取端口號(hào) SendPacket(s, l, raiseposi[k])。 } delay_ms(Delayms)。 //1腳前進(jìn) k=single1no[0]。 l=channelno[k]。 SendPacket(s, l, forwardposi[k])。 delay_ms(Delayms)。 for(j=1。j3。j++) //1腳下降至初位 { k=single1no[j]。 l=channelno[k]。 SendPacket(s, l, initposi1[k])。 } delay_ms(Delayms)。 //1腳后退至初位 k=single1no[0]。 l=channelno[k]。 SendPacket(s*4, l, backwardposi[k])。 注:其它腳的程序略去,與1腳一致}相對(duì)于上面兩個(gè)程序,單腳步態(tài)的程序作了一定簡(jiǎn)化,因?yàn)閿?shù)組中只有三個(gè)值,有時(shí)便不需要用到for循環(huán)。機(jī)器人不光要回直行,如果遇到障礙物,還要學(xué)會(huì)轉(zhuǎn)彎避讓,或者采用類似螃蟹一樣的橫爬方式也可。右轉(zhuǎn),與四腳步態(tài)相同,只是每一對(duì)腳起步時(shí),左腳起腳前邁,而右腳起腳后擺。順序?yàn)椋鹤竽_:抬腿——前擺——下落——后擺右腳:抬腿——后擺——下落——前擺其余動(dòng)作時(shí)間等均與四腳步態(tài)相同。左轉(zhuǎn),與右轉(zhuǎn)相反。順序?yàn)椋鹤竽_:抬腿——后擺——下落——前擺右腳:抬腿——前擺——下落——后擺從上面的動(dòng)作順序可見(jiàn),舵機(jī)左右運(yùn)動(dòng)方向恰好相反,反應(yīng)在數(shù)值變化符號(hào)上則是正好一致,所以程序中無(wú)需用到forward[18]等數(shù)組。以右轉(zhuǎn)為例,具體程序?yàn)椋簐oid rotateright(int time){ int i,j,k,l=0。 Initservo1()。 for(i=0。itime。i++) { for(j=0。j4。j++) //5腳上抬 { k=quar15no[j]。 l=channelno[k]。 SendPacket(s, l, raiseposi[k])。 } delay_ms(Delayms1)。 for(j=4。j6。j++) //1腳前進(jìn)、5腳后退 { k=quar15no[j]。 l=channelno[k]。 SendPacket(s, l, initposi1[k]Stride1)。 } delay_ms(Delayms1)。 for(j=0。j4。j++) //5腳下降至初位 { k=quar15no[j]。 l=channelno[k]。 SendPacket(s, l, initposi1[k])。 } delay_ms(Delayms1)。 for(j=4。j6。j++) //1腳后退、5腳前進(jìn) { k=quar15no[j]。 l=channelno[k]。 SendPacket(s*3, l, initposi1[k]+Stride1)。 }注:6與4程序與上述一致,略去}其中Stride1為舵機(jī)變動(dòng)幅度,其值為45,低于直行,避免幅度過(guò)大,行走不穩(wěn)。而橫爬程序就不那么容易了,它的值需要重新設(shè)定。關(guān)節(jié)號(hào)(數(shù)組號(hào))初值抬腿前擺下落后擺0(0)900+00+001(1)655+100140+15+1252(2)685+100向內(nèi)15175+1903(6)655+00+004(4)710+100140+15+1255(5)720+10015175+1906(6)680+00+007(7)614+100140+15+1258(8)820+10015175+19031(9)645+0+0+0030(10)850100+125+1514029(11)815100向內(nèi)+1901751528(12)785+0+0+0027(13)850100+125+1514026(14)855100+1901751525(15)890+0+0+0024(16)925100+125+1514023(17)915100+19017515 右移舵機(jī)數(shù)值從上表中可以看出,數(shù)據(jù)不再具備規(guī)律性,那么在書(shū)寫(xiě)程序時(shí),便要一步步書(shū)寫(xiě)了。對(duì)于左移,其數(shù)據(jù)恰與右移相反,只需將第四列與第六列的數(shù)據(jù)對(duì)換,便分別取相反數(shù)即可。以右移為例,其部分程序?yàn)椋簐oid crabright(int time){ int i=0。 for(i=0。itime。i++) { //5 抬腿 SendPacket(s, 1, initposi2[1]+100)。 SendPacket(s, 2, initposi2[2]+100)。 SendPacket(s, 27, initposi2[13]100)。 SendPacket(s, 26, initposi2[14]20)。 delay_ms(Delayms)。 //5收縮 SendPacket(s, 1, initposi2[1]40)。 SendPacket(s, 2, initposi2[2]+45)。 SendPacket(s, 27, initposi2[13]+25)。 SendPacket(s, 26, initposi2[14]+50)。 delay_ms(Delayms)。 //5外推 SendPacket(s*2, 1, initposi2[1]25)。 SendPacket(s*2, 2, initposi2[2]50)。 SendPacket(s*2, 27, initposi2[13]+40)。 SendPacket(s*2, 26, initposi2[14]45)。注:6與4腳程序略去}從程序中不難發(fā)現(xiàn),實(shí)際程序編寫(xiě)值與表中所列值是有區(qū)別的,這是因?yàn)?,在調(diào)試過(guò)程中可以知道,如果按表中的值來(lái)運(yùn)行的話,在很多舵機(jī)還未到達(dá)設(shè)定點(diǎn)時(shí),便要完成下一個(gè)動(dòng)作,單純通過(guò)改動(dòng)延遲時(shí)間,會(huì)使得機(jī)器人行走時(shí)不那么順暢,產(chǎn)生動(dòng)作停頓,影響觀賞性。為使機(jī)器人更加智能化,功能更強(qiáng)大, 一個(gè)簡(jiǎn)單的方法就是在其上加上各種傳感器,探知外界,再通過(guò)主控制器,來(lái)完成相應(yīng)動(dòng)作。按照調(diào)試順序,下面將對(duì)用到的傳感器進(jìn)行一一介紹。需提出的是,傳感器的基本功能程序在本文中就不介紹了,主要介紹傳感器的基本情況與應(yīng)用,當(dāng)然會(huì)提及到一點(diǎn)如何將單一的傳感器程序集成到總的控制程序中來(lái)。 指南針傳感器Hitachi HM55B(29123)是Parallax推出的一款可以測(cè)量方向的指南針傳感器。它是通過(guò)內(nèi)部安裝的雙軸磁場(chǎng)傳感器測(cè)量周圍的磁場(chǎng)強(qiáng)度來(lái)探知當(dāng)前位置的朝向。通過(guò)函數(shù)pass(),即可測(cè)出方向值,其變化范圍為0~360。并隨著方向的連續(xù)變化數(shù)值發(fā)生連續(xù)變化。在調(diào)試時(shí),由于STM32與51單片機(jī)在接受數(shù)據(jù)存在不一致,故根據(jù)示數(shù)變化規(guī)律對(duì)51程序進(jìn)行了一定調(diào)整。相傳黃帝發(fā)明了指南車,當(dāng)然絕不是用了指南針傳感器,這里可以利用該傳感器來(lái)編寫(xiě)一個(gè)按設(shè)定方向行走的程序控制機(jī)器人運(yùn)動(dòng)。程序如下:void passlead(int direction) // 按設(shè)定方向運(yùn)動(dòng){ int tempdirect,max,min。 tempdirect=pass()。 if(direction=355) //左分別為10度誤差 { max = direction+5360。 min = direction5。 if (tempdirectminamp。amp。tempdirect=min170) //向左增大 向右減小 rotateleft(1)。 else if(tempdirectmaxamp。amp。tempdirectmax+170) rotateright(1)。 else quarforward(1)。 } else if(direction5) { max = direction+5。 min = direction+3605。 if(tempdirectminamp。amp。tempdirectmin170) rotateleft(1)。 else if(tempdirectmaxamp。amp。tempdirect=max+170) rotateright(1)。 else quarforward(1)。 } else if(direction=170
點(diǎn)擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計(jì)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1