




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
機(jī)器人程序設(shè)計(jì)(C語言)新工科建設(shè)之路·機(jī)器人技術(shù)與應(yīng)用系列函數(shù)——機(jī)器人運(yùn)動(dòng)控制第四章基本巡航動(dòng)作01圖4-1定義了機(jī)器人的前、后、左、右四個(gè)方向:當(dāng)機(jī)器人向前走時(shí),它將走向本頁紙的右邊;當(dāng)向后走時(shí),會(huì)走向紙的左邊;向左轉(zhuǎn)會(huì)使其向紙的頂端移動(dòng);向右轉(zhuǎn)它會(huì)朝著本頁紙的底端移動(dòng)?;狙埠絼?dòng)作基本巡航動(dòng)作向前巡航按照?qǐng)D4-1前進(jìn)方向的定義,機(jī)器人向前走時(shí),從機(jī)器人的左邊看,它向前走時(shí)輪子是逆時(shí)針旋轉(zhuǎn)的;從右邊看,另一個(gè)輪子則是順時(shí)針旋轉(zhuǎn)的?;狙埠絼?dòng)作向前巡航for循環(huán)的參數(shù)控制了發(fā)送給電機(jī)的脈沖數(shù)量。由于每個(gè)脈沖的時(shí)間是相同的,因而for循環(huán)的參數(shù)也控制了伺服電機(jī)運(yùn)行的時(shí)間?;狙埠絼?dòng)作基本巡航動(dòng)作向前巡航例程:RobotForwardThreeSeconds.c(1)確??刂破骱退欧姍C(jī)都已接通電源。(2)輸入、保存、編譯、下載并運(yùn)行程序RobotForwardThreeSeconds.c?;狙埠絼?dòng)作向前巡航RobotForwardThreeSeconds.c是如何工作的for循環(huán)體中前三行語句使左側(cè)電機(jī)逆時(shí)針旋轉(zhuǎn),后續(xù)的三行語句使右側(cè)電機(jī)順時(shí)針旋轉(zhuǎn)。因此兩個(gè)輪子轉(zhuǎn)向機(jī)器人的前端,使機(jī)器人向前運(yùn)動(dòng)。整個(gè)for循環(huán)執(zhí)行130次,大約需要3s,從而機(jī)器人也向前運(yùn)動(dòng)3s?;狙埠絼?dòng)作向前巡航關(guān)于例程調(diào)試的一點(diǎn)說明printf()函數(shù)的作用是提示。若你覺得串口線影響了機(jī)器人的運(yùn)動(dòng),可以不用此函數(shù)。還有一個(gè)進(jìn)行調(diào)試的方法;讓機(jī)器人的前端懸空,讓伺服電機(jī)空轉(zhuǎn)。這樣調(diào)試起來就方便了,機(jī)器人不會(huì)到處亂跑。后面的例程調(diào)試也是這樣。勻加速、勻減速運(yùn)動(dòng)02編寫勻加速運(yùn)動(dòng)程序勻加速運(yùn)動(dòng)程序片段示例: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)動(dòng)編寫勻加速運(yùn)動(dòng)程序循環(huán)每重復(fù)執(zhí)行一次,變量pulseCount就增加1:第一次循環(huán)時(shí),變量pulseCount的值是10,此時(shí)發(fā)給P1_1、P1_0的脈沖的寬度分別為1.51ms、1.49ms;第二次循環(huán)時(shí),變量pulseCount的值是11,此時(shí)發(fā)給P1_1、P1_0的脈沖的寬度分別為1.511ms、1.489ms。勻加速、勻減速運(yùn)動(dòng)勻加速、勻減速運(yùn)動(dòng)編寫勻加速運(yùn)動(dòng)程序例程: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)動(dòng)編寫勻加速運(yùn)動(dòng)程序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)動(dòng)編寫勻加速運(yùn)動(dòng)程序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)動(dòng)編寫勻加速運(yùn)動(dòng)程序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)動(dòng)編寫勻加速運(yùn)動(dòng)程序(1)輸入、保存并運(yùn)行程序StartAndStopWithRamping.c。(2)驗(yàn)證機(jī)器人是否逐漸加速到全速,保持一段時(shí)間,然后逐漸減速到停止。用函數(shù)調(diào)用簡化
運(yùn)動(dòng)程序03用函數(shù)調(diào)用簡化運(yùn)動(dòng)程序函數(shù)從函數(shù)定義的角度來看,函數(shù)有兩種①標(biāo)準(zhǔn)函數(shù),即庫函數(shù)。②用戶定義函數(shù),以解決專門需要。不僅要在程序中定義函數(shù)本身,在主調(diào)函數(shù)模塊中還必須對(duì)該被調(diào)函數(shù)進(jìn)行類型說明,然后才能使用。用函數(shù)調(diào)用簡化運(yùn)動(dòng)程序函數(shù)從有無返回值角度來看,函數(shù)可以分為兩種①有返回值函數(shù)。函數(shù)被調(diào)用執(zhí)行完后將向調(diào)用者返回一個(gè)執(zhí)行結(jié)果,稱為函數(shù)返回值。由用戶定義的返回函數(shù)值的函數(shù),必須在函數(shù)定義中明確返回值的類型。②無返回值函數(shù)。此類函數(shù)用于完成某項(xiàng)特定的處理任務(wù),執(zhí)行完成后不向調(diào)用者返回函數(shù)值。用函數(shù)調(diào)用簡化運(yùn)動(dòng)程序函數(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ù)(簡稱形參)。用函數(shù)調(diào)用簡化運(yùn)動(dòng)程序函數(shù)main()函數(shù)的返回值其實(shí)不難理解,main()函數(shù)執(zhí)行完后,它的返回值是給操作系統(tǒng)的。雖然在main()函數(shù)體內(nèi)并沒有什么語句來指出返回值的大小,但系統(tǒng)默認(rèn)的處理方式是:當(dāng)main()函數(shù)成功執(zhí)行時(shí),它的返回值為1,否則為0。用函數(shù)調(diào)用簡化運(yùn)動(dòng)程序函數(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)動(dòng)程序函數(shù)重新定義向前運(yùn)動(dòng)函數(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)動(dòng)程序函數(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)動(dòng)程序函數(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)動(dòng)程序函數(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)動(dòng)程序函數(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)動(dòng)程序函數(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)動(dòng)程序函數(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)志符。方括號(hào)中的常量表達(dá)式表示數(shù)據(jù)元素的個(gè)數(shù),也稱為數(shù)組的長度。用數(shù)組進(jìn)一步簡化函數(shù)調(diào)用程序是如何工作的一維數(shù)組的引用數(shù)組元素是組成數(shù)組的基本單元。數(shù)組元素也是一種變量,其標(biāo)識(shí)方法為數(shù)組名后跟一個(gè)下標(biāo),下標(biāo)表示了元素在數(shù)組中的順序號(hào)(從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ī)器人的基本巡航動(dòng)作并給C51單片機(jī)編程實(shí)現(xiàn)這些基本動(dòng)作。②用牛頓力學(xué)和運(yùn)動(dòng)學(xué)知識(shí)分析機(jī)器人的運(yùn)動(dòng)行為。③采用勻變速運(yùn)動(dòng)改善機(jī)器人的基本運(yùn)動(dòng)行為。④用C語言的函數(shù)實(shí)現(xiàn)機(jī)器人的基本動(dòng)作、函數(shù)的定義和調(diào)用方
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年咸陽亨通電力(集團(tuán))有限公司招聘(4人)模擬試卷及完整答案詳解一套
- 2025年電阻傳感器項(xiàng)目申請(qǐng)報(bào)告
- 2025甘肅張掖市幼兒園選調(diào)衛(wèi)生保健人員1人模擬試卷及答案詳解(奪冠系列)
- 項(xiàng)目款項(xiàng)結(jié)算責(zé)任聲明書3篇范文
- 2025年特殊教育服務(wù)項(xiàng)目申請(qǐng)報(bào)告
- 產(chǎn)品質(zhì)量問題原因分析與解決方案工具
- 2025年甘肅省民航航空發(fā)展有限公司職業(yè)經(jīng)理人選聘模擬試卷及答案詳解(易錯(cuò)題)
- 2025年上半年龍泉市公開選調(diào)公務(wù)員及選聘事業(yè)單位工作人員14模擬試卷及答案詳解一套
- 信任守護(hù)服務(wù)品質(zhì)承諾書6篇
- 2025藍(lán)海新材料(通州灣)有限責(zé)任公司春季高校畢業(yè)生招聘45人模擬試卷附答案詳解(黃金題型)
- 《公路技術(shù)狀況評(píng)定》課件-任務(wù)六:公路技術(shù)狀況指數(shù)MQI
- Unit 3 Amazing animals Section A What pets do you know 說課(教學(xué)設(shè)計(jì))-2024-2025學(xué)年人教PEP版(2024)英語三年級(jí)上冊(cè)
- 中級(jí)財(cái)務(wù)會(huì)計(jì)知到課后答案智慧樹章節(jié)測試答案2025年春云南財(cái)經(jīng)大學(xué)
- 2025青海省建筑安全員B證考試題庫及答案
- 現(xiàn)代紡織物清潔技術(shù)培訓(xùn)匯報(bào)教程
- 《鐵路技術(shù)管理規(guī)程》(普速鐵路部分)
- 臨床檢驗(yàn)基礎(chǔ)知到智慧樹章節(jié)測試課后答案2024年秋上海健康醫(yī)學(xué)院
- 鑄牢中華民族共同體意識(shí)心得感悟7篇
- 《中國海洋大學(xué)》課件
- 神話故事民間故事《后羿射日》繪本課件
- “雄鷹杯”全國小動(dòng)物醫(yī)師技能大賽考試題庫(660題)
評(píng)論
0/150
提交評(píng)論