技藝競賽
114 全國技藝競賽|賽前整晚重組機器人
#Robot#LabVIEW
114 全國高級中等學校工業類技藝競賽
機器人職種 ─ 優勝五
高三的工科技藝競賽,我們只有五個月可以準備機構設計、程式和工程報告,時間真的很趕,壓力也很大。
比賽前幾天,機器人突然走歪
離比賽只剩幾天,最後一次試跑的時候,原本跑得好好的機器人突然開始嚴重偏離路線。我們一開始整個傻住,冷靜下來之後一項一項慢慢查,最後終於找到原因:
底盤螺絲在一直測試的震動下鬆掉了,產生肉眼看不出來的小誤差,機器人走越遠,偏得越多。
熬夜把整台重組
確定是機構的問題之後,我們決定留在學校熬夜,把機器人整台重新組過:
- 全部拆開:把機台拆回一個一個零件。
- 重新鎖緊:每一顆螺絲、每一個零件都重新鎖好。
- 重新校正:感測器和馬達的參數全部重調一次。
天亮之前,機器人終於恢復原本的準度。正式比賽時每一項都發揮得滿穩的,最後拿到優勝五。
這五個月學到的東西
機器人職種的程式全部用 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 使用
心得
這次底盤的事讓我學到:硬體只要有一點誤差,程式寫得再好也救不回來。做機電整合,機構的精準度真的不能隨便。
這五個月也讓我發現,壓力越大的時候,越要冷靜想清楚先做什麼、什麼可以先放掉。謝謝我的隊友,出狀況的時候我們沒有互相怪來怪去,而是一起把問題解決;也謝謝指導老師這五個月陪我們在工廠熬了好多個除錯的晚上。