回到文章列表
技藝競賽

114 全國技藝競賽|賽前整晚重組機器人

#Robot#LabVIEW

114 全國高級中等學校工業類技藝競賽

機器人職種 ─ 優勝五

高三的工科技藝競賽,我們只有五個月可以準備機構設計、程式和工程報告,時間真的很趕,壓力也很大。


比賽前幾天,機器人突然走歪

離比賽只剩幾天,最後一次試跑的時候,原本跑得好好的機器人突然開始嚴重偏離路線。我們一開始整個傻住,冷靜下來之後一項一項慢慢查,最後終於找到原因:

底盤螺絲在一直測試的震動下鬆掉了,產生肉眼看不出來的小誤差,機器人走越遠,偏得越多。

熬夜把整台重組

確定是機構的問題之後,我們決定留在學校熬夜,把機器人整台重新組過:

  1. 全部拆開:把機台拆回一個一個零件。
  2. 重新鎖緊:每一顆螺絲、每一個零件都重新鎖好。
  3. 重新校正:感測器和馬達的參數全部重調一次。

天亮之前,機器人終於恢復原本的準度。正式比賽時每一項都發揮得滿穩的,最後拿到優勝五。


這五個月學到的東西

機器人職種的程式全部用 NI LabVIEW 寫,這五個月我們學了很多機電整合的東西:

  • 機構設計:夾爪和平台的設計,還有怎麼處理陀螺儀被靜電干擾的問題。
  • 感測器整合:在 LabVIEW 裡讀取、處理攝影機、光達(LiDAR)、陀螺儀和超音波的數值。
  • 自動控制:寫閉迴路控制,控制馬達轉速和夾東西。

用 Formula Node 修正方向

為了讓機器人走歪的時候可以自己修回來,我們在 LabVIEW 裡用 Formula Node 寫了 PD 控制(比例 P 加微分 D):

// LabVIEW Formula Node (公式節點內的控制邏輯)
// 輸入端子:targetAngle, currentGyroAngle, lastError, baseSpeed
// 輸出端子:leftMotorSpeed, rightMotorSpeed, nextError

float Kp = 1.5;
float Kd = 0.2;
float error = targetAngle - currentGyroAngle;
float derivative = error - lastError;
float output = (Kp * error) + (Kd * derivative);

leftMotorSpeed = baseSpeed + output;
rightMotorSpeed = baseSpeed - output;
nextError = error; // 傳出給下一輪資料流 Shift Register 使用

心得

這次底盤的事讓我學到:硬體只要有一點誤差,程式寫得再好也救不回來。做機電整合,機構的精準度真的不能隨便。

這五個月也讓我發現,壓力越大的時候,越要冷靜想清楚先做什麼、什麼可以先放掉。謝謝我的隊友,出狀況的時候我們沒有互相怪來怪去,而是一起把問題解決;也謝謝指導老師這五個月陪我們在工廠熬了好多個除錯的晚上。