回到文章列表
技能競賽

第 54 屆分區技能競賽|從 C 語言到 LabVIEW

#Robot#LabVIEW

第 54 屆分區技能競賽

機器人職種 ─ 佳作(第八名)

一開始是從 C 語言入門的

進資訊科之後,我學的第一個程式語言是 C。比起背語法,我比較喜歡把一個問題拆成一小步一小步,例如循線、排序,再慢慢寫成程式。後來校內賽拿到第二名,就被老師找進分區技能競賽的培訓隊。

不過培訓一開始其實滿卡的。比賽要用 NI LabVIEW,它是圖形化的程式語言,要用滑鼠拉方塊、拉線來寫程式。我那時候超不習慣,心裡一直想:直接打字不是比較快嗎?

後來機器人的功能越加越多,我才慢慢改觀。LabVIEW 的前面板可以即時看到每個感測器和馬達的數值,哪一段沒跑到一眼就看得出來。程式一變大,這種「看得到」的除錯方式真的幫了很多忙。


比賽前才發現:舵盤少裝一齒

賽前實測的時候,夾爪的角度怎麼調都跟設定值對不起來。查了半天才發現是組裝出問題:夾爪的舵盤少裝了一齒。

那時候已經來不及拆掉重裝了,只好從程式下手。我加了一個 Formula Node(公式節點),直接把角度差補回去,順便把輸出限制在 0 到 180 度,免得馬達收到超出範圍的訊號:

// LabVIEW Formula Node (公式節點)
// 為了補償組裝時少一齒的物理公差 (約 15 度偏置值)
// 輸入端子:targetAngle
// 輸出端子:correctedAngle

int offset = 15;
int tempAngle = targetAngle + offset;

// 限制馬達訊號維持在安全極限 0 到 180 度之間
if (tempAngle > 180) {
    correctedAngle = 180;
} else if (tempAngle < 0) {
    correctedAngle = 0;
} else {
    correctedAngle = tempAngle;
}

臨時加考顏色辨識

比賽當天,大會突然加了一關「顏色辨識」,大概只給我們 30 分鐘準備。我有試著寫辨識程式,但時間真的太趕,一直寫不穩。最後我決定直接放棄這段,這關用猜的,把時間留給比較有把握的關卡,先把基本分顧好。

最後我們拿到第 54 屆分區賽機器人職種佳作(第八名)。這是我第一次參加技能競賽,學到最多的是:時間不夠的時候,要先想清楚哪些分數一定要拿到。