1 / 81

競速自走車

競速自走車. 競速自走車影片. 循跡自走車. Line Tracer. Singapore Robo Grand Prix 2009. 2009 年第五屆人工智慧單晶片競速自走車決賽. 2009 日本 RoboTracer. 2009 日本自走車比賽. 競速場地說明. 自走車設計. 認識 InnoRacer. InnoRacer 簡介 : BC2 核心 USB 程式下載 BASIC 語言及函數指令控制 提供數位及類比 PID 控制 具馬達 轉速 回饋及過載保護功能 跑道記憶功能 內建 G-Sensor, 提供彎道曲率計算

kirra
Télécharger la présentation

競速自走車

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 競速自走車

  2. 競速自走車影片 循跡自走車 Line Tracer Singapore Robo Grand Prix 2009 2009年第五屆人工智慧單晶片競速自走車決賽 2009 日本RoboTracer 2009 日本自走車比賽

  3. 競速場地說明

  4. 自走車設計

  5. 認識InnoRacer

  6. InnoRacer 簡介: • BC2 核心 • USB程式下載 • BASIC 語言及函數指令控制 • 提供數位及類比PID控制 • 具馬達轉速回饋及過載保護功能 • 跑道記憶功能 • 內建G-Sensor, 提供彎道曲率計算 • 額外cmdbus模組擴充功能 • 適合教育學習及比賽用車

  7. 反射式紅外線感測器 萬向滾珠輪 感測器校正按鈕 BC2核心 系統重置按鈕 Cmdbus模組外接接頭 Buzzer發聲元件 馬達速度控制晶片M1 按鈕及燈號操作 馬達驅動晶片 跑道記憶控制晶片P1 遙控模型競技用海綿胎 加速度感測器 16000rpm 附編碼器驅動馬達 6V 2200mah NiMh電池

  8. CH IR紅外線感測器 ST 數位 數位 數位 數位 USB BC2 類比 CMDBUS EEPROM 記憶體 跑道記憶控制晶片P1 按鈕及LED燈號操作 馬達速度控制晶片M1 加速度感測器 Buzzer發聲元件 馬達驅動晶片 馬達驅動晶片 馬達(左) Motor 編碼器(左) Encoder 編碼器(右) Encoder 馬達(右) Motor

  9. 按鈕及LED燈號操作

  10. CH IR紅外線感測器 ST 數位 數位 數位 數位 USB BC2 類比 CMDBUS EEPROM 記憶體 跑道記憶控制晶片P1 按鈕及LED燈號操作 馬達速度控制晶片M1 加速度感測器 Buzzer發聲元件 馬達驅動晶片 馬達驅動晶片 馬達(左) Motor 編碼器(左) Encoder 編碼器(右) Encoder 馬達(右) Motor

  11. Btn1 Led1 Btn2 Led2 Btn3 Led3 Btn4 Led4 ….. ….. USB BC2 P16 P17 P19 P20 P21 P23 P18 P22

  12. 實驗一: LED控制 ‘===========說明: 依序點亮與熄滅四個LED========================= SUB Main() Dim bLED AsByte' 儲存要設定的LED腳位 '------------------------------------------------------------------------ ' 無窮迴圈,反覆亮滅LED '------------------------------------------------------------------------ DO '------------------------------------------------------------------------ ' FOR迴圈,依序設定控制腳位20~23的LED,讓各LED點亮0.5秒 '------------------------------------------------------------------------ For bLED=20To23 HIGH bLED ' 點亮bLED腳位設定的LED PAUSE500' 暫停0.5秒 LOW bLED ' 熄滅bLED腳位設定的LED PAUSE500' 暫停0.5秒 Next LOOP EndSUB

  13. 實驗二: 按鈕與LED ‘==說明: 依序偵測四個按鈕,執行點亮LED的動作===== #DEFINE BUTTON_1 16 #DEFINE BUTTON_2 17 #DEFINE BUTTON_3 18 #DEFINE BUTTON_4 19 Sub Main() Dim bCnt1 AsByte = 0 Dim bCnt2 AsByte = 0 Dim bCnt3 AsByte = 0 Dim bCnt4 AsByte = 0 BEGIN: Pause10' 等待 10 ms ‘依序偵測四個按鈕是否有被按下 ‘並在偵測到按下後跳到對應的標籤位置 Button BUTTON_1, 0, 255, 20, bCnt1, 1, TURN_ON_LED1 Button BUTTON_2, 0, 255, 20, bCnt2, 1, TURN_ON_LED2 Button BUTTON_3, 0, 255, 20, bCnt3, 1, TURN_ON_LED3 Button BUTTON_4, 0, 255, 20, bCnt4, 1, TURN_ON_LED4 Goto BEGIN ' 回到開始位置 ‘執行點亮LED的副程序 TURN_ON_LED1: TurnOnLED(20) Goto BEGIN ' 回到開始位置 TURN_ON_LED2: TurnOnLED(21) Goto BEGIN ' 回到開始位置 TURN_ON_LED3: TurnOnLED(22) Goto BEGIN ' 回到開始位置 TURN_ON_LED4: TurnOnLED(23) Goto BEGIN ' 回到開始位置 End Sub Sub TurnOnLED(bLED AsByte) High bLED ' 點亮bLED腳位設定的LED Pause500 ‘ 暫停0.5秒 Low bLED ' 熄滅bLED腳位設定的LED Pause500 ' 暫停0.5秒 End Sub

  14. 如何控制馬達

  15. CH IR紅外線感測器 ST 數位 數位 數位 數位 USB BC2 類比 CMDBUS EEPROM 記憶體 跑道記憶控制晶片P1 按鈕及LED燈號操作 馬達速度控制晶片M1 加速度感測器 Buzzer發聲元件 馬達驅動晶片 馬達驅動晶片 馬達(左) Motor 編碼器(左) Encoder 編碼器(右) Encoder 馬達(右) Motor

  16. BC2核心 馬達速度控制晶片M1 馬達驅動晶片 16000rpm 附編碼器驅動馬達

  17. 實驗三: 馬達控制 ‘說明: 根據輸入值操作馬達動作,並設定停止方式 ‘注意: 馬達轉動會讓自走車移動,請先墊高自走車讓輪胎離地,再開始測試 PeripheralmyMAsRacerM1@3 ' 設定馬達控制模組參數名稱 SubMain() DimbKeyAs Byte ‘ 儲存輸入值 DimiVelL, iVelR As Integer ' 左右輪控制參數 ‘無窮迴圈,可以反覆輸入馬達控制參數 Do DebugCLS ‘清除終端視窗顯示文字 Debugin"請輸入左輪參數(-1024~1024): ", iVelL DebugiVelL, CR Debugin"請輸入右輪參數(-1024~1024): ", iVelR DebugiVelR, CR myM.SetVelAB(iVelL, iVelR) ' 設定左右輪轉速與方向 Debugin"請決定停止方式(0: Stop, 1: Brake): ", bKey DebugbKey, CR IfbKey=0Then myM.StopDual() ‘ 以Stop方式停止兩輪轉動 Else myM.BrakeDual() ‘ 以Brake方式停止兩輪轉動 End If Keyin"按下任意鍵繼續", %CHR bKey LOOP End Sub

  18. IR紅外線感測器

  19. CH IR紅外線感測器 ST 數位 數位 數位 數位 USB BC2 類比 CMDBUS EEPROM 記憶體 跑道記憶控制晶片P1 按鈕及LED燈號操作 馬達速度控制晶片M1 加速度感測器 Buzzer發聲元件 馬達驅動晶片 馬達驅動晶片 馬達(左) Motor 編碼器(左) Encoder 編碼器(右) Encoder 馬達(右) Motor

  20. 調整感度 逆時針旋轉感度增加 順時針旋轉感度減少 IR感測器背面位置 有反射訊號時會亮紅燈無反射則不亮 IR感測電壓感度調整晶片 萬向滾珠輪 IR感測器正面 IR感測器接收訊號端 IR感測器發射訊號端

  21. 最近辨識距離為d=2mm 最大辨識距離約為d=20mm (需調整可變電阻) 離地距離越近則辨識解析度越高 離地距離越遠則辨識解析度越低 d

  22. 特性曲線及電路

  23. CH IR0 IR1 IR2 IR3 IR4 IR5 IR6 ST USB BC2 ….. ….. P0 P2 P3 P4 P6 P7 P1 P5 P11 實驗前需利用可變電阻將所有感測器感度都調整成相同比例

  24. 實驗四: 紅外線感測 ‘=========說明: 反覆偵測紅外線感測值,並顯示在終端視窗======= SubMain() DimbIR,ST,CHAs Byte ' 儲存紅外線感測值 Debug CLS ' 清除終端視窗文字 Debug"紅外線感測值: “,CR ' 輸出文字訊息到終端視窗 Debug“ ST感測值: “,CR ' 輸出文字訊息到終端視窗 Debug“CH感測值: " ' 輸出文字訊息到終端視窗 ‘無窮迴圈,反覆偵測紅外線感測值 Do bIR=Readport(0) ' 讀取紅外線感測器回傳值 ST=in(11) CH=in(7) DebugCSRXY(15, 1), %BINbIR DebugCSRXY(15, 2), %BINST DebugCSRXY(15, 3), %BINCH ' 以二進制顯示感測值於終端視窗 Loop End Sub

  25. 紅外線尋跡控制

  26. CH IR紅外線感測器 ST 數位 數位 數位 數位 USB BC2 類比 CMDBUS EEPROM 記憶體 跑道記憶控制晶片P1 按鈕及LED燈號操作 馬達速度控制晶片M1 加速度感測器 Buzzer發聲元件 馬達驅動晶片 馬達驅動晶片 馬達(左) Motor 編碼器(左) Encoder 編碼器(右) Encoder 馬達(右) Motor

  27. 實驗五: 紅外線尋跡前進(3個感測器) 2 1 0 4 3 6 5

  28. 實驗五: 紅外線尋跡前進(3個感測器) ‘說明: 利用三組紅外線感測值,沿軌道行走。 Peripheral myM As RacerM1 @ 3' 設定馬達控制模組參數名稱 #DEFINE NORMAL_SPEED_R 170' 設定右輪直線速度值 #DEFINE NORMAL_SPEED_L 170' 設定左輪直線速度值 ' 依序設定不同感測值的修改速度值 #DEFINE ERROR_1 80 #DEFINE ERROR_2 50 #DEFINE ERROR_3 30 #DEFINE ERROR_4 0 #DEFINE ERROR_5 -30 #DEFINE ERROR_6 -50 #DEFINE ERROR_7 -80 Sub Main() Dim IR2, IR3, IR4, Sensor As Byte‘存感測值 Dim R, L, Err As Integer‘ 儲存左右輪轉速與誤差值 Pause2000‘等待兩秒 ‘無窮迴圈,反覆偵測軌道感測值,修正馬達轉向與速度 Do IR2 = In(2) ‘ 取得第2腳位的感測值 IR3 = In(3) ‘ 取得第3腳位的感測值 IR4 = In(4) ‘ 取得第4腳位的感測值 Sensor = (100 * IR4) + (10 * IR3) + IR2 ‘ 將偵測到的值拼為一個判斷值 ‘根據感測器回傳值,判斷軌道位置並設定修改速度值 Select Sensor Case011 Err = ERROR_2 Case001 Err = ERROR_3 Case101 Err = ERROR_4 Case100 Err = ERROR_5 Case110 Err = ERROR_6 Case111 If Err<0Then Err = ERROR_7 Elseif Err>0Then Err = ERROR_1 End If Case000 Err = ERROR_4 End Select ‘根據修改速度值,計算左右輪的轉速值 R = NORMAL_SPEED_R + Err L = NORMAL_SPEED_L - Err ‘判斷是否超過模組極限值, 如果超過則設定為極限值 If R>1024Then R = 1024 Elseif R<-1024Then R = -1024 End If If L>1024Then L = 1024 Elseif L<-1024Then L = -1024 End If myM.SetVelAB(L, R) ‘根據計算結果設定模組速度值 Loop End Sub

  29. 實驗五: 紅外線尋跡前進(7個感測器) 2 1 0 4 3 6 5

  30. 實驗六: 紅外線尋跡前進(7個感測器) Case&B1101111 Err = ERROR_5 Case&B1100111 Err = ERROR_6 Case&B1110111 Err = ERROR_7 Case&B1110011 Err = ERROR_8 Case&B1111011 Err = ERROR_9 Case&B1111001 Err = ERROR_10 Case&B1111101 Err = ERROR_11 Case&B1111100 Err = ERROR_12 Case&B1111110 Err = ERROR_13 Case&B1111111 Stop() Goto FINISH '跳到結束標籤的位置 End Select R = NORMAL_SPEED_R + Err ‘計算左右輪的轉速值 L = NORMAL_SPEED_L - Err If R>1024Then'判斷設定值是否超過模組極限值, 則設定為極限值 R = 1024 Elseif R<-1024Then R = -1024 End If If L>1024 Then L = 1024 Elseif L<-1024Then L = -1024 End If myM.SetVelAB(L, R) ‘根據計算結果設定模組速度 Loop FINISH: End Sub '說明: 利用七組紅外線感測值,沿軌道行走。 Peripheral myM As RacerM1 @ 3'設定馬達控制模組參數名稱 #DEFINE NORMAL_SPEED_R 210'設定右輪直線速度值 #DEFINE NORMAL_SPEED_L 210'設定左輪直線速度值 '依序設定不同感測值的修改速度值 #DEFINE ERROR_1 230 #DEFINE ERROR_2 200 #DEFINE ERROR_3 120 #DEFINE ERROR_4 90 #DEFINE ERROR_5 60 #DEFINE ERROR_6 30 #DEFINE ERROR_7 0 #DEFINE ERROR_8 -30 #DEFINE ERROR_9 -60 #DEFINE ERROR_10 -90 #DEFINE ERROR_11 -120 #DEFINE ERROR_12 -200 #DEFINE ERROR_13 -230 Sub Stop() ‘停止副程式 myM.BrakeDual() End Sub Sub Main() Dim Sensor As Byte '儲存感測值 Dim R, L, Err As Integer '儲存左右輪轉速與修改速度值 Pause1000 Do'無窮迴圈,反覆偵測軌道感測值,修正馬達轉向與速度 Sensor = Readport(0) ‘取得埠0的感測值 Sensor = Sensor And&H7F ‘根據感測器回傳值,判斷軌道位置並設定修改速度值 Select Case Sensor Case&B0111111 Err = ERROR_1 Case&B0011111 Err = ERROR_2 Case&B1011111 Err = ERROR_3 Case&B1001111 Err = ERROR_4

  31. 自走車控制理論介紹(PD控制)

  32. CH IR紅外線感測器 ST 數位 數位 數位 數位 USB BC2 類比 CMDBUS EEPROM 記憶體 跑道記憶控制晶片P1 按鈕及LED燈號操作 馬達速度控制晶片M1 加速度感測器 Buzzer發聲元件 馬達驅動晶片 馬達驅動晶片 馬達(左) Motor 編碼器(左) Encoder 編碼器(右) Encoder 馬達(右) Motor

  33. 軌跡預測1 Error=0 2 1 0 4 3 6 5

  34. 軌跡預測2 Error=100 2 1 0 4 3 6 5

  35. 軌跡預測3 Error=50 2 1 0 4 3 6 5

  36. 數位回授控制 • 比例微分控制法則(PD): • 根據誤差值(Error)來調整左右輪的速度差 • 若是軌跡在中心軸左邊,誤差為負值,比例 • 控制根據誤差量調整右輪速度大於左輪速度; • 反之亦然 • 若誤差持續擴大,微分控制可以加大速差

More Related