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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

機器人程序設計(C語言)新工科建設之路·機器人技術與應用系列函數(shù)——機器人運動控制第四章基本巡航動作01圖4-1定義了機器人的前、后、左、右四個方向:當機器人向前走時,它將走向本頁紙的右邊;當向后走時,會走向紙的左邊;向左轉會使其向紙的頂端移動;向右轉它會朝著本頁紙的底端移動?;狙埠絼幼骰狙埠絼幼飨蚯把埠桨凑請D4-1前進方向的定義,機器人向前走時,從機器人的左邊看,它向前走時輪子是逆時針旋轉的;從右邊看,另一個輪子則是順時針旋轉的?;狙埠絼幼飨蚯把埠絝or循環(huán)的參數(shù)控制了發(fā)送給電機的脈沖數(shù)量。由于每個脈沖的時間是相同的,因而for循環(huán)的參數(shù)也控制了伺服電機運行的時間。基本巡航動作基本巡航動作向前巡航例程:RobotForwardThreeSeconds.c(1)確??刂破骱退欧姍C都已接通電源。(2)輸入、保存、編譯、下載并運行程序RobotForwardThreeSeconds.c?;狙埠絼幼飨蚯把埠絉obotForwardThreeSeconds.c是如何工作的for循環(huán)體中前三行語句使左側電機逆時針旋轉,后續(xù)的三行語句使右側電機順時針旋轉。因此兩個輪子轉向機器人的前端,使機器人向前運動。整個for循環(huán)執(zhí)行130次,大約需要3s,從而機器人也向前運動3s?;狙埠絼幼飨蚯把埠疥P于例程調試的一點說明printf()函數(shù)的作用是提示。若你覺得串口線影響了機器人的運動,可以不用此函數(shù)。還有一個進行調試的方法;讓機器人的前端懸空,讓伺服電機空轉。這樣調試起來就方便了,機器人不會到處亂跑。后面的例程調試也是這樣。勻加速、勻減速運動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);勻加速、勻減速運動編寫勻加速運動程序循環(huán)每重復執(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。勻加速、勻減速運動勻加速、勻減速運動編寫勻加速運動程序例程: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)驗證機器人是否逐漸加速到全速,保持一段時間,然后逐漸減速到停止。用函數(shù)調用簡化

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

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

溫馨提示

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

評論

0/150

提交評論