【ch04】函數(shù)機(jī)器人運(yùn)動控制_第1頁
【ch04】函數(shù)機(jī)器人運(yùn)動控制_第2頁
【ch04】函數(shù)機(jī)器人運(yùn)動控制_第3頁
【ch04】函數(shù)機(jī)器人運(yùn)動控制_第4頁
【ch04】函數(shù)機(jī)器人運(yùn)動控制_第5頁
已閱讀5頁,還剩35頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

機(jī)器人程序設(shè)計(jì)(C語言)新工科建設(shè)之路·機(jī)器人技術(shù)與應(yīng)用系列函數(shù)——機(jī)器人運(yùn)動控制第四章基本巡航動作01圖4-1定義了機(jī)器人的前、后、左、右四個方向:當(dāng)機(jī)器人向前走時,它將走向本頁紙的右邊;當(dāng)向后走時,會走向紙的左邊;向左轉(zhuǎn)會使其向紙的頂端移動;向右轉(zhuǎn)它會朝著本頁紙的底端移動?;狙埠絼幼骰狙埠絼幼飨蚯把埠桨凑請D4-1前進(jìn)方向的定義,機(jī)器人向前走時,從機(jī)器人的左邊看,它向前走時輪子是逆時針旋轉(zhuǎn)的;從右邊看,另一個輪子則是順時針旋轉(zhuǎn)的?;狙埠絼幼飨蚯把埠絝or循環(huán)的參數(shù)控制了發(fā)送給電機(jī)的脈沖數(shù)量。由于每個脈沖的時間是相同的,因而for循環(huán)的參數(shù)也控制了伺服電機(jī)運(yùn)行的時間?;狙埠絼幼骰狙埠絼幼飨蚯把埠嚼蹋篟obotForwardThreeSeconds.c(1)確保控制器和伺服電機(jī)都已接通電源。(2)輸入、保存、編譯、下載并運(yùn)行程序RobotForwardThreeSeconds.c。基本巡航動作向前巡航RobotForwardThreeSeconds.c是如何工作的for循環(huán)體中前三行語句使左側(cè)電機(jī)逆時針旋轉(zhuǎn),后續(xù)的三行語句使右側(cè)電機(jī)順時針旋轉(zhuǎn)。因此兩個輪子轉(zhuǎn)向機(jī)器人的前端,使機(jī)器人向前運(yùn)動。整個for循環(huán)執(zhí)行130次,大約需要3s,從而機(jī)器人也向前運(yùn)動3s。基本巡航動作向前巡航關(guān)于例程調(diào)試的一點(diǎn)說明printf()函數(shù)的作用是提示。若你覺得串口線影響了機(jī)器人的運(yùn)動,可以不用此函數(shù)。還有一個進(jìn)行調(diào)試的方法;讓機(jī)器人的前端懸空,讓伺服電機(jī)空轉(zhuǎn)。這樣調(diào)試起來就方便了,機(jī)器人不會到處亂跑。后面的例程調(diào)試也是這樣。勻加速、勻減速運(yùn)動02編寫勻加速運(yùn)動程序勻加速運(yùn)動程序片段示例:for(pulseCount-10;pulseCount<=200;pulseCount-pulseCount+1)P1_1=1;delay_nus(1500+pulseCount);P1_1=0;P1_0=1,delay_nus(1500-pulseCount);P1_0=0;delay_nms(20);勻加速、勻減速運(yùn)動編寫勻加速運(yùn)動程序循環(huán)每重復(fù)執(zhí)行一次,變量pulseCount就增加1:第一次循環(huán)時,變量pulseCount的值是10,此時發(fā)給P1_1、P1_0的脈沖的寬度分別為1.51ms、1.49ms;第二次循環(huán)時,變量pulseCount的值是11,此時發(fā)給P1_1、P1_0的脈沖的寬度分別為1.511ms、1.489ms。勻加速、勻減速運(yùn)動勻加速、勻減速運(yùn)動編寫勻加速運(yùn)動程序例程:StartAndStopWithRamping.c#include<BoeBot.h>#include<uart.h>intmain(void)intpulseCount;uart_Init();printf("ProgramRunning!\n");for(pulseCount=10;pulseCount<=200;pulseCount=pulseCount+1)勻加速、勻減速運(yùn)動編寫勻加速運(yùn)動程序P1_1=1;delay_nus(1500+pulseCount);P1_1=0;P1_0=1;delay_nus(1500-pulseCount);P1_0=0;delay_nms(20);for(pulseCount=1;pulseCount<=75;pulseCount++)勻加速、勻減速運(yùn)動編寫勻加速運(yùn)動程序P1_1=1;delay_nus(1700);P1_1=0;P1_0=1;delay_nus(1300);P1_0=0;delay_nms(20);for(pulseCount=200;pulseCount>=0;pulseCount=pulseCount-1)勻加速、勻減速運(yùn)動編寫勻加速運(yùn)動程序P1_1=1;delay_nus(1500+pulseCount);P1_1=0;P1_0=1;delay_nus(1500-pulseCount);P1_0=0;delay_nms(20);while(1);勻加速、勻減速運(yùn)動編寫勻加速運(yùn)動程序(1)輸入、保存并運(yùn)行程序StartAndStopWithRamping.c。(2)驗(yàn)證機(jī)器人是否逐漸加速到全速,保持一段時間,然后逐漸減速到停止。用函數(shù)調(diào)用簡化

運(yùn)動程序03用函數(shù)調(diào)用簡化運(yùn)動程序函數(shù)從函數(shù)定義的角度來看,函數(shù)有兩種①標(biāo)準(zhǔn)函數(shù),即庫函數(shù)。②用戶定義函數(shù),以解決專門需要。不僅要在程序中定義函數(shù)本身,在主調(diào)函數(shù)模塊中還必須對該被調(diào)函數(shù)進(jìn)行類型說明,然后才能使用。用函數(shù)調(diào)用簡化運(yùn)動程序函數(shù)從有無返回值角度來看,函數(shù)可以分為兩種①有返回值函數(shù)。函數(shù)被調(diào)用執(zhí)行完后將向調(diào)用者返回一個執(zhí)行結(jié)果,稱為函數(shù)返回值。由用戶定義的返回函數(shù)值的函數(shù),必須在函數(shù)定義中明確返回值的類型。②無返回值函數(shù)。此類函數(shù)用于完成某項(xiàng)特定的處理任務(wù),執(zhí)行完成后不向調(diào)用者返回函數(shù)值。用函數(shù)調(diào)用簡化運(yùn)動程序函數(shù)從主調(diào)函數(shù)和被調(diào)函數(shù)之間數(shù)據(jù)傳送的角度看,函數(shù)也可分為兩種①無參函數(shù)。函數(shù)定義、說明及調(diào)用中均不帶參數(shù),主調(diào)函數(shù)和被調(diào)函數(shù)之間不進(jìn)行參數(shù)傳送。②有參函數(shù)。在函數(shù)定義及說明時都有參數(shù),稱為形式參數(shù)(簡稱形參)。用函數(shù)調(diào)用簡化運(yùn)動程序函數(shù)main()函數(shù)的返回值其實(shí)不難理解,main()函數(shù)執(zhí)行完后,它的返回值是給操作系統(tǒng)的。雖然在main()函數(shù)體內(nèi)并沒有什么語句來指出返回值的大小,但系統(tǒng)默認(rèn)的處理方式是:當(dāng)main()函數(shù)成功執(zhí)行時,它的返回值為1,否則為0。用函數(shù)調(diào)用簡化運(yùn)動程序函數(shù)現(xiàn)在看看下面的函數(shù)定義:voidForward(void)一1inti;for(i=1;i<=65;i++){P1_1=1;delay_nus(1700);P1_1=0;P1_0=1;delay_nus(1300);P1_0=0;delay_nms(20);-用函數(shù)調(diào)用簡化運(yùn)動程序函數(shù)重新定義向前運(yùn)動函數(shù)如下:voidForward(intPulseCount,intVelocity)?inti;/*速度參數(shù)的值為0~200*/for(i=1;i<=PulseCount;i++)P1_1=1;delay_nus(1500+Velocity);P1_1=0;P1_0=1;delay_nus(1500-Velocity);P1_0=0;delay_nms(20);用函數(shù)調(diào)用簡化運(yùn)動程序函數(shù)例程:MovementsWithFunctions.c#include<BoeBot.h>#include<uart.h>voidForward(intPulseCount,intVelocity)inti;for(i=1;i<=PulseCount;i++)/*速度參數(shù)的值為0~200/用函數(shù)調(diào)用簡化運(yùn)動程序函數(shù)P1_1=1;delay_nus(1500+Velocity);P1_1=0;P1_0=1;delay_nus(1500-Velocity);P1_0=0;delay_nms(20);用函數(shù)調(diào)用簡化運(yùn)動程序函數(shù)voidLeft(intPulseCount,intVelocity)inti;for(i=1;i<=PulseCount;i++)PI_1=1;delay_nus(1500-Velocity);P1_1=0;P1_0=1;delay_nus(1500-Velocity);P1_0=0;delay_nms(20);速度參數(shù)的值為0~2001用函數(shù)調(diào)用簡化運(yùn)動程序函數(shù)voidRight(intPulseCount,intVelocity)inti:for(i=1;i<=PulseCount;i++)P1_1=1;delay_nus(1500+Velocity);P1_1=0;P1_0=1;delay_nus(1500+Velocity);P1_0=0;delay_nms(20);速度參數(shù)的值為0~200*/用函數(shù)調(diào)用簡化運(yùn)動程序函數(shù)voidBackward(intPulseCount,intVelocity)inti;for(i=1;i<=PulseCount;i++)P1_1=1;delay_nus(1500-Velocity);P1_1=0;P1_0=1;delay_nus(1500+Velocity);P1_0=0;delay_nms(20);/*速度參數(shù)的值為0~200*用函數(shù)調(diào)用簡化運(yùn)動程序函數(shù)intmain(void)printf("ProgramRunning!\n");Forward(65,200);Left(26,200);Right(26,200);Backward(65,200);while(1);用數(shù)組進(jìn)一步簡化函數(shù)調(diào)用04用數(shù)組進(jìn)一步簡化函數(shù)調(diào)用將MovementsWithOneFuntion.c程序修改成如下。#include<BoeBot.h>#include<uart.h>voidMove(intcounter,intPC1_pulseWide,intPCO_pulseWide)//同任務(wù)4.3一樣intmain(void)用數(shù)組進(jìn)一步簡化函數(shù)調(diào)用intcounter[4]={65,26,26,65};intPClPulse[4]={1700,1300,1700,1300};intPCOPulse[4]={1300,1300,1700,1700};intindex;uart_Init()printf("ProgramRunning!\n");for(index=0;index<4;index++)Move(counter[index],PC1Pulse[index],PCOPulse[index]);while(1);用數(shù)組進(jìn)一步簡化函數(shù)調(diào)用程序是如何工作的數(shù)組在程序設(shè)計(jì)中,為了處理方便,可以把具有相同類型的若干變量按有序的形式組織起來。這些按序排列的同類數(shù)據(jù)元素的集合稱為數(shù)組。用數(shù)組進(jìn)一步簡化函數(shù)調(diào)用程序是如何工作的類型說明符是任一種基本數(shù)據(jù)類型。數(shù)組名是用戶定義的數(shù)組標(biāo)志符。方括號中的常量表達(dá)式表示數(shù)據(jù)元素的個數(shù),也稱為數(shù)組的長度。用數(shù)組進(jìn)一步簡化函數(shù)調(diào)用程序是如何工作的一維數(shù)組的引用數(shù)組元素是組成數(shù)組的基本單元。數(shù)組元素也是一種變量,其標(biāo)識方法為數(shù)組名后跟一個下標(biāo),下標(biāo)表示了元素在數(shù)組中的順序號(從0開始計(jì)數(shù))。數(shù)組元素的一般形式為:

數(shù)組名[下標(biāo)]用數(shù)組進(jìn)一步簡化函數(shù)調(diào)用程序是如何工作的用數(shù)組元素作為函數(shù)實(shí)參調(diào)用函數(shù)數(shù)組元素作為實(shí)參與變量或者實(shí)際數(shù)據(jù)作為實(shí)參是一樣的,直接將元素?cái)?shù)據(jù)傳送給函數(shù)。用數(shù)組進(jìn)一步簡化函數(shù)調(diào)用工程素質(zhì)和技能歸納本章涉及的主要技能①歸納機(jī)器人的基本巡航動作并給C51單片機(jī)編程實(shí)現(xiàn)這些基本動作。②用牛頓力學(xué)和運(yùn)動學(xué)知識分析機(jī)器人的運(yùn)動行為。③采用勻變速運(yùn)動改善機(jī)器人的基本運(yùn)動行為。④用C語言的函數(shù)實(shí)現(xiàn)機(jī)器人的基本動作、函數(shù)的定義和調(diào)用方

溫馨提示

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

最新文檔

評論

0/150

提交評論