回到文章列表
技能競賽

第 55 屆分區技能競賽|狀態機與臨場策略

#Robot#LabVIEW

第 55 屆分區技能競賽

自主機器人職種 ─ 佳作(第六名)

什麼都要會一點的職種

勞動部舉辦的技能競賽裡,機器人相關的職種要在短短幾天的現場比賽中,同時處理電機控制、機構、程式和電子電路,每一樣都要會一點。

這是我第二次參加分區賽(第 54、55 屆都有參加)。我們兩個人一組,我負責程式、通訊和除錯,搭檔謝宜祐負責機構組裝和硬體接線。


這次改用狀態機寫程式

比賽關卡有循線、取物、避障和定位。練了一陣子之後,我們得到一個共識:

機構、硬體和程式要互相配合。上場比賽的時候,機構越簡單越穩,程式越好改越好。

以前我們習慣一直往上疊 if 判斷,程式越寫越亂。這次改用 LabVIEW 的狀態機(State Machine)架構,每個動作寫成一個狀態。比賽時題目如果臨時改,我們大概 5 分鐘就能加一個或換掉一個狀態,除錯也快很多。

LabVIEW 狀態機架構

下面是用 While Loop 加上 Shift Register(位移暫存器)做出來的狀態切換:

Shift Register 傳遞狀態
Case Structure
條件選擇器
STATE_INIT
呼叫感測器初始化 VI
清除馬達暫存器脈衝
➔ 轉移: STATE_TRACK_LINE
STATE_TRACK_LINE
讀取 7 路灰階感測器
Formula Node 計算 PID
➔ 轉移: 判斷前方障礙物
STATE_GRIP_CARGO
輸出氣壓缸數位訊號
驅動電磁閥閉合夾爪
➔ 轉移: STATE_DOCK_BASE

比賽當天遇到的狀況

比賽現場的燈光跟學校不一樣,循線感測器的讀值被影響了。我們靠平常練習累積的經驗,加上業師的建議,這樣處理:

  1. 現場重新校正:開賽前 3 分鐘先量現場的環境光,重新設定循線的灰階門檻值。
  2. 先拿穩的分數:時間很趕,所以我們先看每一關的難度跟配分,先做簡單又高分的基本題(像自主移動、基座對接),基本分拿穩了,再去挑戰夾爪精密夾取這種比較難的關卡。

最後我們拿到第 55 屆分區技能競賽自主機器人職種佳作(第六名),這次的經驗後來也直接用在工科技藝競賽上。