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

正文內(nèi)容

六足步行機(jī)器人設(shè)計(jì)畢業(yè)論文(編輯修改稿)

2025-07-27 11:46 本頁面
 

【文章內(nèi)容簡(jiǎn)介】 它的確在前進(jìn)。接下來要做的就是更加細(xì)化動(dòng)作,使機(jī)器人的運(yùn)動(dòng)更加協(xié)調(diào)連貫。這樣就形成了八步法,加上了臂電機(jī)的運(yùn)動(dòng)。下面具體講一下八步法的實(shí)現(xiàn),結(jié)合程序中的一些定義。假設(shè)初始狀態(tài)時(shí)電機(jī)均處于中心位置。確定一個(gè)軸向,比如以第 4 小組為軸向。以下是八步法的動(dòng)作具體步驟:第一步:抬第一組腿。2C 前腿上抬至某處 Terminal_UP_2。2B、2A 后腿上抬至某處 Terminal_UP_2。 第二步:抬第一組腳,并旋轉(zhuǎn)第一組臂。3C 前腳上抬至某處 Terminal_UP_3。3B、3A 后腳反方向抬至某處 Terminal_DW_3。1B (處于軸向左邊)順時(shí)針旋轉(zhuǎn)至某處 Terminal_CLK_1。1A (處于軸向右邊)逆時(shí)針旋轉(zhuǎn)至某處 Terminal_ATCLK_1。 第三步:放下第一組腿。2C 前腿回到中心位置 Center_Position_2。2B、2A 后腿回到中心位置 Center_Position_2。 第四步:抬第二組腿5C、5B、5A 上抬至某處 Terminal_UP_2。 第五步:抬第二組腳,并旋轉(zhuǎn)第二組臂。6B、6C 抬起至某處 Terminal_UP_3。6A 反方向抬起至某處 Terminal_DW_3。4B (處于軸向左邊)順時(shí)針旋轉(zhuǎn)至某處 Terminal_CLK_1。4C (處于軸向右邊)逆時(shí)針旋轉(zhuǎn)至某處 Terminal_ATCLK_1。 第六步:蹬第一組腳,并旋轉(zhuǎn)第一組臂回原位。3C 前腳向前扒地Center_Position_3。3B、3A 后腳向后蹬地Center_Position_3。1B (處于軸向左邊)逆時(shí)針旋轉(zhuǎn)回初始位置Center_Position_1。1A (處于軸向右邊)順時(shí)針旋轉(zhuǎn)回初始位置Center_Position_1。 第七步:放第二組腿。5C、5B、5A 回到初始位置 Center_Position_2?! 〉诎瞬剑旱哦M腳,并旋轉(zhuǎn)第二組臂回原位。6B、6C 前腳向前扒地 Center_Position_3。6A 后腳向后蹬地 Center_Position_3。4B (處于軸向左邊)逆時(shí)針旋轉(zhuǎn)回原位 Center_Position_1。4C (處于軸向右邊)順時(shí)針旋轉(zhuǎn)回原位 Center_Position_1。 這里的有關(guān)變量的定義為:define Center_Position_1 308 //臂電機(jī)的中心位置量。define Center_Position_2 300 //腿電機(jī)的中心位置量。define Center_Position_3 320 //腳電機(jī)的中心位置量。define Step_1 35 //臂電機(jī)轉(zhuǎn)動(dòng)的偏角。define Step_2 130 //腿電機(jī)轉(zhuǎn)動(dòng)的偏角。define Step_3 50 //腳電機(jī)轉(zhuǎn)動(dòng)的偏角。define Terminal_UP_3 Center_Position_3 + Step_3 //腳電機(jī)上抬的終點(diǎn)量。define Terminal_DW_3 Center_Position_3 Step_3 //腳電機(jī)下置的終點(diǎn)量。define Terminal_UP_2 Center_Position_2 Step_2 //腿電機(jī)上抬的終點(diǎn)量(常用) 。define Terminal_UU_2 Center_Position_2 + Step_2 //腿電機(jī)上抬的終點(diǎn)量(不常用) 。define Terminal_ATCLK_1 Center_Position_1 + Step_1 //臂電機(jī)逆時(shí)針轉(zhuǎn)動(dòng)的終點(diǎn)量。define Terminal_CLK_1 Center_Position_1 Step_1 //臂電機(jī)順時(shí)針轉(zhuǎn)動(dòng)的終點(diǎn)量。 顯然是把這些量作為全局變量在主函數(shù)的開始預(yù)定義。同樣還有對(duì)應(yīng)舵機(jī)舵盤在個(gè)位置的值,定義一個(gè)數(shù)組 PWM_Duty[18]來完成。Unsigned int PWM_Duty[18] = { Center_Position_1, Center_Position_1, Center_Position_1, Center_Position_1, Center_Position_1, Center_Position_1, Center_Position_2, Center_Position_2, Center_Position_2, Center_Position_2, Center_Position_2, Center_Position_2, Center_Position_3, Center_Position_3, Center_Position_3, Center_Position_3, Center_Position_3, Center_Position_3}。以上定義的共同特點(diǎn)是將 18 個(gè)電機(jī)看作 3 種電機(jī)(臂、腿、腳)而對(duì)于同樣的如臂電機(jī)不加區(qū)分。好處是方便編程,但是由于安裝等問題,即使同樣作用的電機(jī)也會(huì)有差異性,這種差異性如果在軟件上來修正是比較恰當(dāng)?shù)?,效果也?huì)更好。留給日后的師弟師妹們來做?! ∵@樣編程出來,前進(jìn)的動(dòng)作蠻完美。然后就想到怎么使機(jī)器人按任意軸向前進(jìn),也就是怎樣運(yùn)用歸納法得出一般性的算法。定義出下面幾個(gè)變量,由 Mode的值來計(jì)算其他變量的值。Mode,Mode_couple,pwm_0,pwm_1,pwm_2,pwm_3,pwm_4,pwm_5,pwm_6,pwm_7,pwm_8,pwm_9, pwm_10,pwm_11,pwm_12,pwm_13,pwm_14,pwm_15。在上面的以第 4 小組為軸向的例子中,看看怎樣用變量來代替原來確定的電機(jī)(由編號(hào)來表示) 。Mode=4, Mode_couple 是與第四小組沿直徑關(guān)于中心對(duì)稱的小組編號(hào),參見圖 可知是第一小組,所以 Mode_couple=1。pwm_02C pwm_12B pwm_22A pwm_33Cpwm_43B pwm_53A pwm_61B pwm_71Apwm_85A pwm_95B pwm_105C pwm_116Apwm_126B pwm_136C pwm_144B pwm_154C表 一般性變量代替表 然后要做的事就是根據(jù) Mode 的值計(jì)算出這些變量的值。程序中的Compute_pwmN()函數(shù)就是完成這項(xiàng)任務(wù)的函數(shù)。void Compute_pwmN(void){ pwm_0 = Mode + 6。 pwm_3 = Mode + 12。 if(Mode 2) { pwm_1 = pwm_0 + 2。 pwm_2 = pwm_0 + 4。 pwm_4 = pwm_3 + 2。 pwm_5 = pwm_3 + 4。 pwm_6 = Mode + 2。 //保證 pwm_6 在軸向左邊 pwm_7 = Mode + 4。 //保證 pwm_7 在軸向右邊 } else if(Mode 3) { pwm_1 = pwm_0 4。 pwm_2 = pwm_0 2。 pwm_4 = pwm_3 4。 pwm_5 = pwm_3 2。 pwm_6 = Mode 4。 //保證 pwm_6 在軸向左邊 pwm_7 = Mode 2。 //保證 pwm_7 在軸向右邊 } else { pwm_1 = pwm_0 + 2。 pwm_2 = pwm_0 2。 pwm_4 = pwm_3 + 2。 pwm_5 = pwm_3 2。 pwm_6 = Mode + 2。 //保證 pwm_6 在軸向左邊 pwm_7 = Mode 2。 //保證 pwm_7 在軸向右邊 } if(Mode = 3) Mode_couple = Mode 3。 else Mode_couple = Mode + 3。 pwm_8 = Mode_couple + 6。 pwm_11 = Mode_couple + 12。//Mode_couple 定義與軸向相對(duì)的腿,以此好計(jì)算出第二組腿。注意Mode_couple 的左//邊就是 Mode 軸向的右邊。 if(Mode_couple 2) { pwm_9 = pwm_8 + 4。 pwm_10 = pwm_8 + 2。 pwm_12 = pwm_11 + 4。 pwm_13 = pwm_11 + 2。 pwm_14 = Mode_couple + 4。 //pwm_14:軸向的左邊 pwm_15 = Mode_couple + 2。 //pwm_15:軸向的右邊 } else if(Mode_couple 3) { pwm_9 = pwm_8 2。 pwm_10 = pwm_8 4。 pwm_12 = pwm_11 2。 pwm_13 = pwm_11 4。 pwm_14 = Mode_couple 2。 //pwm_14:軸向的左邊 pwm_15 = Mode_couple 4。 //pwm_15:軸向的右邊 } else { pwm_9 = pwm_8 2。 pwm_10 = pwm_8 + 2。 pwm_12 = pwm_11 2。 pwm_13 = pwm_11 + 2。 pwm_14 = Mode_couple 2。 //pwm_14 軸向的左邊 pwm_15 = Mode_couple + 2。 //pwm_15 軸向的右邊 } }這樣前進(jìn)一步的動(dòng)作細(xì)化(分為八步)程序可以寫出來了。PWM_Duty[18]是一個(gè)數(shù)組,用來定義分別控制 18 個(gè)電機(jī)的 PPM 脈沖寬度對(duì)應(yīng)值。PWM_Duty[0] PWM_Duty[17]的順序?qū)?yīng)圖 的編號(hào)序列。void SetPWM_Duty(void){ static unsigned char flag = 1。 //設(shè)置標(biāo)志 flag,目的是動(dòng)作分步。 static unsigned char elong = 0。 //設(shè)置標(biāo)志 elong,目的是延長(zhǎng)步與步之間的時(shí)間,使動(dòng)作舒緩。//下面兩句可以用作幅度不大的轉(zhuǎn)向。// // PWM_Duty[Mode] = Center_Position_1 + 15。 PWM_Duty[Mode_couple] = Center_Position_1 + 10。 //修正尾舵中心值 if(elong 3) elong ++。 else { if(flag == 1) //第一步,抬第一組腿,[pwm_0]及對(duì)應(yīng)的臂和腳為軸 { PWM_Duty[pwm_0] = Terminal_UP_2。 PWM_Duty[pwm_1] = Terminal_UP_2。 PWM_Duty[pwm_2] = Terminal_UP_2。 flag++。 elong = 0。 } else if(flag == 2) //第二步,抬第一組腳+旋轉(zhuǎn)第一組臂 { PWM_Duty[pwm_3] = Terminal_UP_3。 //前腳 UP 上抬 PWM_Duty[pwm_4] = Terminal_DW_3。 //后腳 DW 上抬 PWM_Duty[pwm_5] = Terminal_DW_3。 //后腳 DW 上抬 PWM_Duty[pwm_6] = Terminal_CLK_1。 PWM_Duty[pwm_7] = Terminal_ATCLK_1。 //右邊的臂逆時(shí)針旋轉(zhuǎn) flag++。 elong = 0。 } else if(flag == 3) //第三步,放第一組腿。本來第三步和第四步合在一起,但是那樣動(dòng)作在換腿的時(shí)候聲音很大,對(duì)機(jī)械的損傷也大。 { PWM_Duty[pwm_0] = Center_Position_2。 PWM_Duty[pwm_1] = Center_Position_2。
點(diǎn)擊復(fù)制文檔內(nèi)容
規(guī)章制度相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1