光感循跡控制 資料處理科
指令介紹 ─ Loop 感測器迴圈:重覆執行廻圈內的指令,直到3號光感值小於50才結束廻圈 參數1的選項包括無限迴圈、時間迴圈、感測器迴圈、次 數迴圈和邏輯判斷迴圈 當程式碼放在迴圈中執行,會循環執行迴圈中的程式碼, 直到終止迴圈的條件成立才跳出迴圈
單光感循跡車原理 車子 程式流程:機器人置於黑線左側→向右前方走→ 遇到黑線→向左前方 → 脫離黑線,遇到白地板→向右前方 …. (車子以Z字型擺動前進)
指令介紹 ─ 條件判斷 如果(3號光感值) < 50,則 往左前方走 否則 往右前方走
程式範例- 單光感循跡 測試此程式是否能通過下列急彎? 為什麼?
組裝光感循跡車 機構設計– EV3通用型 (含萬向輪) 光感設計: 需能彈性調整光感數, 間距, 高低 光感Port: 左3, 右2 馬逹Port- 左B, 右C
雙光感循跡車的原理分析 3 2 B C 左光感 3 右光感 2 動作 馬逹 白 直行 BC前進 黑 右轉 C停 B前進 左轉 B停 C前進 停3秒再開 BC停三秒再前進 3 2 車子 B C
測量各光感的場地黑線 View :三代 Reflected light 變數名稱: 左 3b(黑線)與3w(白地板),右 2b(黑)與2w(白) 光線反射值: 例: 3w = 80, 3b = 8, 2w = 70, 2b = 6 (3號 與2號光感差距10,調高3號光感高度, 使3w = 72, 3b = 7, 儘 量讓不同的光感差距不要太大, 可調高度, 再不行就換光感 或換主機
撰寫循跡程式 專案命名: track3w.ev3 ( w 組別) 雙光感分段控制循跡Double track( d_track) 以二分法, 遇雙黑停三秒 (左白,右白)→直行 (左白,右黑)→左馬逹前進,右馬逹不動→右轉 (左黑,右白)→左馬逹不動,右馬逹前進→左轉 (左黑,右黑)→十字路口停三秒→直行一點脫離雙黑 增加十字路口數判斷( d_track2)
原理- 雙光感二分法循跡 自走車大致讓黑線在兩個光感中間車身前進 若不小心靠左偏離路線,在右光感感應到黑線時,就 會造成右馬達停止,讓車子偏右修正回正常路線 若是車子不小心靠右偏離路線,也能修正回來 兩個光感都感應到黑線時,兩個馬達就會靜止,達到 停車的效果,3秒後再前進一點脫離雙黑
演算法 - 雙光感( 二分法)分段控制循跡 檔名: d_track 策略: 以二分法 (3b + 3w) / 2 = (6 + 70)/ 2 = 38 >= 視為白地板, < 38 視為黑線 缺點: 髮夾彎可能有問題
Move Tank指令 差速旋轉:兩輪轉動方向相同,但Power不冋,會向慢速輪方向轉彎 左3白,右2白→ (power一樣25,直行) 左3白,右2黑→ (power左B=25,右C=0 → 右轉)
程式範例-雙光感( 二分法)分段控制循跡(d_track)
交叉路口數判斷 (d_track2) 以count 變數儲存遇到的十字路口數,當到逹目標值時即停止循跡廻圈()
以光感值(value)做為Power輸入控制循跡(v_track) 變數:左3光感值存lv( left value),右2光感值存rv(right value) 直接以光感值做為Power輸入 控制左右馬逹
數值運算指令應用( v_track2) 原理:遇急彎時,以一輪急減速或倒轉的方式來過彎 以感應器偵測值減去一數值, 讓急轉彎時一輪倒轉一輪正轉→ 過急彎 左白右黑:以數值運算讓右C可能產生負值→ 右輪倒轉→ 左B輪正轉→ 過急右彎 左黑右白:以數值運算讓左B可能產生負值→ 左輪倒轉→ 右C正轉→ 過急左彎
進階(ADV)數值運算指令應用( v_track3) 以感應器偵值減去一數值(b),再放大倍數c, 讓急轉彎時一輪大倒轉一輪大正轉→ 過大急彎 左白右黑:以數值運算讓右C馬逹減去15,可能產生負值,再放大2倍→ 右輪大倒轉→ 左B輪大正轉→ 過急右彎 左黑右白:以數值運算讓左B馬逹減去15,可能產生負值,再放大2倍→ 左輪倒轉→ 右C大正轉→ 過急左彎