




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
機器人程序設計(C語言)新工科建設之路·機器人技術與應用系列函數——機器人運動控制第四章基本巡航動作01圖4-1定義了機器人的前、后、左、右四個方向:當機器人向前走時,它將走向本頁紙的右邊;當向后走時,會走向紙的左邊;向左轉會使其向紙的頂端移動;向右轉它會朝著本頁紙的底端移動。基本巡航動作基本巡航動作向前巡航按照圖4-1前進方向的定義,機器人向前走時,從機器人的左邊看,它向前走時輪子是逆時針旋轉的;從右邊看,另一個輪子則是順時針旋轉的。基本巡航動作向前巡航for循環的參數控制了發送給電機的脈沖數量。由于每個脈沖的時間是相同的,因而for循環的參數也控制了伺服電機運行的時間。基本巡航動作基本巡航動作向前巡航例程:RobotForwardThreeSeconds.c(1)確保控制器和伺服電機都已接通電源。(2)輸入、保存、編譯、下載并運行程序RobotForwardThreeSeconds.c。基本巡航動作向前巡航RobotForwardThreeSeconds.c是如何工作的for循環體中前三行語句使左側電機逆時針旋轉,后續的三行語句使右側電機順時針旋轉。因此兩個輪子轉向機器人的前端,使機器人向前運動。整個for循環執行130次,大約需要3s,從而機器人也向前運動3s。基本巡航動作向前巡航關于例程調試的一點說明printf()函數的作用是提示。若你覺得串口線影響了機器人的運動,可以不用此函數。還有一個進行調試的方法;讓機器人的前端懸空,讓伺服電機空轉。這樣調試起來就方便了,機器人不會到處亂跑。后面的例程調試也是這樣。勻加速、勻減速運動02編寫勻加速運動程序勻加速運動程序片段示例: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);勻加速、勻減速運動編寫勻加速運動程序循環每重復執行一次,變量pulseCount就增加1:第一次循環時,變量pulseCount的值是10,此時發給P1_1、P1_0的脈沖的寬度分別為1.51ms、1.49ms;第二次循環時,變量pulseCount的值是11,此時發給P1_1、P1_0的脈沖的寬度分別為1.511ms、1.489ms。勻加速、勻減速運動勻加速、勻減速運動編寫勻加速運動程序例程:StartAndStopWithRamping.c#include<BoeBot.h>#include<uart.h>intmain(void)intpulseCount;uart_Init();printf("ProgramRunning!\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);for(pulseCount=1;pulseCount<=75;pulseCount++)勻加速、勻減速運動編寫勻加速運動程序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)勻加速、勻減速運動編寫勻加速運動程序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);勻加速、勻減速運動編寫勻加速運動程序(1)輸入、保存并運行程序StartAndStopWithRamping.c。(2)驗證機器人是否逐漸加速到全速,保持一段時間,然后逐漸減速到停止。用函數調用簡化
運動程序03用函數調用簡化運動程序函數從函數定義的角度來看,函數有兩種①標準函數,即庫函數。②用戶定義函數,以解決專門需要。不僅要在程序中定義函數本身,在主調函數模塊中還必須對該被調函數進行類型說明,然后才能使用。用函數調用簡化運動程序函數從有無返回值角度來看,函數可以分為兩種①有返回值函數。函數被調用執行完后將向調用者返回一個執行結果,稱為函數返回值。由用戶定義的返回函數值的函數,必須在函數定義中明確返回值的類型。②無返回值函數。此類函數用于完成某項特定的處理任務,執行完成后不向調用者返回函數值。用函數調用簡化運動程序函數從主調函數和被調函數之間數據傳送的角度看,函數也可分為兩種①無參函數。函數定義、說明及調用中均不帶參數,主調函數和被調函數之間不進行參數傳送。②有參函數。在函數定義及說明時都有參數,稱為形式參數(簡稱形參)。用函數調用簡化運動程序函數main()函數的返回值其實不難理解,main()函數執行完后,它的返回值是給操作系統的。雖然在main()函數體內并沒有什么語句來指出返回值的大小,但系統默認的處理方式是:當main()函數成功執行時,它的返回值為1,否則為0。用函數調用簡化運動程序函數現在看看下面的函數定義: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);-用函數調用簡化運動程序函數重新定義向前運動函數如下:voidForward(intPulseCount,intVelocity)?inti;/*速度參數的值為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);用函數調用簡化運動程序函數例程:MovementsWithFunctions.c#include<BoeBot.h>#include<uart.h>voidForward(intPulseCount,intVelocity)inti;for(i=1;i<=PulseCount;i++)/*速度參數的值為0~200/用函數調用簡化運動程序函數P1_1=1;delay_nus(1500+Velocity);P1_1=0;P1_0=1;delay_nus(1500-Velocity);P1_0=0;delay_nms(20);用函數調用簡化運動程序函數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);速度參數的值為0~2001用函數調用簡化運動程序函數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);速度參數的值為0~200*/用函數調用簡化運動程序函數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);/*速度參數的值為0~200*用函數調用簡化運動程序函數intmain(void)printf("ProgramRunning!\n");Forward(65,200);Left(26,200);Right(26,200);Backward(65,200);while(1);用數組進一步簡化函數調用04用數組進一步簡化函數調用將MovementsWithOneFuntion.c程序修改成如下。#include<BoeBot.h>#include<uart.h>voidMove(intcounter,intPC1_pulseWide,intPCO_pulseWide)//同任務4.3一樣intmain(void)用數組進一步簡化函數調用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);用數組進一步簡化函數調用程序是如何工作的數組在程序設計中,為了處理方便,可以把具有相同類型的若干變量按有序的形式組織起來。這些按序排列的同類數據元素的集合稱為數組。用數組進一步簡化函數調用程序是如何工作的類型說明符是任一種基本數據類型。數組名是用戶定義的數組標志符。方括號中的常量表達式表示數據元素的個數,也稱為數組的長度。用數組進一步簡化函數調用程序是如何工作的一維數組的引用數組元素是組成數組的基本單元。數組元素也是一種變量,其標識方法為數組名后跟一個下標,下標表示了元素在數組中的順序號(從0開始計數)。數組元素的一般形式為:
數組名[下標]用數組進一步簡化函數調用程序是如何工作的用數組元素作為函數實參調用函數數組元素作為實參與變量或者實際數據作為實參是一樣的,直接將元素數據傳送給函數。用數組進一步簡化函數調用工程素質和技能歸納本章涉及的主要技能①歸納機器人的基本巡航動作并給C51單片機編程實現這些基本動作。②用牛頓力學和運動學知識分析機器人的運動行為。③采用勻變速運動改善機器人的基本運動行為。④用C語言的函數實現機器人的基本動作、函數的定義和調用方
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論