WFU

2023年2月28日 星期二

2022-2023 Slap Shot World Skills Standing: WORLD RANK 1!!





This VEX IQ has come to an end for us 6699B. Even though there is still a world championship coming up in May, we decided not to go because I have a test coming up that overlaps with the championship. Our last competition for this season is an online LRS(Live Remote Skills) competition in Taiwan.




In this competition, we managed to pull off 431 points with both skills challenges scores sum up. This made us the top in Taiwan, and also the first place in world skills standings. Initially, the highest score was 423 points, and two teams got tied for this score, one team is from China, while the other is also from our organization in Taiwan, team 6699Z.

Before the competition, the highest score that we have ever gotten in driver skills is 248 points, while our highest in autonomous skills is 242 points. Adding these two up contributed a score of 490 points, which is only 50 points away from the maximum possible score of 540 points.

Our average score in driver skills during practice is around 220-230 points, while the autonomous skill is about the same level. Our minimal goal was to get 430 points, which both needs to meet the requirement of 215 points.

The competition starts at 9am in the morning, and every team gets to choose their ideal time for the competition, the competition lasts for an hour. We chose to start at 11am, this way we can still practice after waking up.

We did the inspection the day before at night to check if our robot and our field is in good condition. We were super nervous during the 1 hour of competition. Even though we practiced nonstop beforehand, we still messed something up during driver skills.

I accidentally drove too fast while getting the blue dispenser, and 2 discs fell onto the ground. This is a serious mistake because 2 discs can deduct a maximum of 8 points from our total score. My brother, who is driving the final half of the match, also drove too fast and one disc flew out. Luckily, we still manage to get a decent 213 points, just 2 points away from our goal.




Our autonomous did very well unexpectedly, we didn't have to modify a large amount of code before it is actually stable. I guess our hard work surely paid off. We got the highest score of 218 points, and this got us first place in the worlds standing for now with 213+218=431 points.

This is very meaningful to us, not only we managed to take down first place, but we also proved to the world that the robot we made by ourselves has the power to rank number one. The proudest part of our robot would be the ability to complete all missions with autonomous skills since that was impossible for our robot in the previous seasons that we participated.

I hope the score can stay in place for a longer duration before it gets surpassed. I also uploaded two videos about this, one is showing the fifth-generation robot we used for this competition, and the other is showing the two skills matches that got us 431 points.


2023年2月15日 星期三

2022-2023 Slapshot VEX IQ Taiwan Open 全國賽國中組:巧思獎、技能挑戰賽第二名





這次參加這個賽季的最後一場實體比賽,也就是全國賽,總共有四十五支隊伍參賽,但只有六個獎項,八個隊伍可以晉級世界賽。這次我們成功拿到晉級世界賽的資格,但是過程真的不是很容易。

可以晉級世界賽的獎項有團隊挑戰賽第一名(兩隊)、第二名(兩隊),技能挑戰賽第一名,全能總冠軍,設計獎和巧思獎。如果有隊伍重複拿到獎項,則會從全國賽當天的技能挑戰賽排名來決定遞補隊伍,由於應該有很大的機會會有隊伍重複拿獎,所以技能挑戰賽的排名是非常重要的。




這次我們是透過巧思獎得到晉級世界賽的資格,其實就算沒有拿到巧思獎,透過遞補我們也是可以用技能挑戰賽第二名獲得世界賽資格,不過直接上台頒獎拿到世界賽資格一定是比遞補的還要開心的。





我們在全國賽當中團隊挑戰賽的資格賽成績是第七名、決賽中拿到第六名,技能挑戰賽是第二名。這次在團隊挑戰賽中比較可惜,因為最終有八個飛盤在一分區,所以只有拿到 242 分,若八個全數在四分區中即可拿到 272 分,決賽幾乎就是比誰的一分區比較少和誰的四分區比較多,僅此而已。




在資格賽的比賽當中,拿到最高分的是在練習場次中的 258 分。這個分數相當高,當時我們認為之後的資格賽應該都能夠很順利地拿到差不多的分數,然而幾乎所有隊有飛盤都沒有很準,而且雙方一分區較多,所以之後沒有一場比這個分數高的場次。




我對於技能挑戰賽的成績相當滿意,不過還是有進步的空間,這次拿到的分數總共是 352 分,遙控賽 182 分,自動賽 170 分。比較可惜的是遙控賽,平常在家裡可以拿到的最高分是 230 左右,不過因為當天場地摩擦力不同的關係,在練習場上打到四分區,在技能賽場上全部都會到一分區,這造成我們的分數減少很多,遙控賽分數都在 180 附近。

我們當天的策略是先將遙控賽在早上打完,順便調整彈射機橡皮筋的力道,這樣在下午的比賽中,不管是團隊挑戰賽還是自動賽,都可以用調整到最剛好的力道去比賽,會比較輕鬆。另外,調整橡皮筋必須先卸下彈射裝置,這也導致如果有東西沒裝好可能會影響到比賽,由於遙控賽的容錯率是最高的,在這時候調整也是不錯的選擇。可惜最後我們還是太低估摩擦力對飛盤的影響,最終分數只有 182 分。


▶自動賽 170 分場次飛盤分布狀況


自動賽的部分我們第一場拿 21 分,第二場拿 170 分,最後一場拿 19 分。我們練習和正式跑程式都是使用相同的場地,透過錄影和不斷的將容錯率提升,最終我們在第二場自動賽拿到 170 分。在 170 分的場次中,我們完成五柱發放塔並伸展手臂,不過由於飛盤大多集中在兩分和三分區,所以沒有拿到預期的 220 分。

這次比賽最困難的地方,一定就是每一個比賽場地的摩擦力都不一樣這點,一開始我們受這個影響很大,每一次都會懷疑「真的有差這麼多嗎?」,在練習場地上射擊到二、三分區,在比賽場地上可以到四分區,非常顛覆我們的認知。

不過我認為主辦單位有做得很好的地方,就是比賽場地包括技能挑戰賽場全部都很滑,而練習場地都很不滑,因為有這個差別,我們也比較好調整。許多隊伍似乎沒有去觀察這件事,我們遇到的隊伍當中,很多都喜歡將力道調整到練習場上的四分,最終在比賽場上就會出現全部都落在一分區的狀況,影響雙方的分數。




在比賽的最後,最令人振奮的就是頒獎的時刻,由於技能挑戰賽第二名的獎項沒有辦法獲得去世界賽的機會,我們希望可以拿到一個評審的獎項,取得世界賽資格。我們在團隊挑戰賽的表現不是非常好,所以其實拿到全能總冠軍和設計獎的機會並不高,相對的使用技能挑戰賽策略和分數去評估的巧思獎,對我們來說得獎機率較大。




當裁判在說明巧思獎的得獎內容時,其實在台下是非常緊張的,當裁判說出「得獎的賽隊是 6699B」時,全場的歡呼聲超大,我們超開心地跑上台頒獎,這是第一次用自己從零開始研發的機器獲得晉級世界賽的機會,異常的亢奮。

我對於這次的成績非常滿意,尤其是成功晉級世界賽的部分,雖然我們不會去美國比世界賽,但是我完全不會後悔,因為這次的研發過程中我真的學習到很多,也享受整個過程。未來我還會參加其他比賽,相信這次的經驗一定會給未來的我更多動力和想法。





謝謝主辦的中華資訊與科技教育學會,這次竟然提供總共 10 組場地,包括團隊挑戰賽的四組場地,技能挑戰賽的三組和練習場三組,相信背後一定是做足場勘和彩排,才能夠讓整體的流程這麼順暢也很充足。

謝謝這個賽季支持我的所有人,因為有你們我才能夠堅持研發自己的機器到最後,也沒有因此輸給飛輪機。謝謝爸爸媽媽在每一次比賽挫敗過後可以包容我的錯誤,也一起思考各種解決方法,像是如何維持體力撐過整天,這個對我的幫助相當大。

這次能夠沒有遺憾地完成全國賽真的很開心,在預賽中因為機器穩定性太低,在團隊挑戰賽決賽中失利,在 AST 的比賽中因為機器容錯率和射球準度更低,整體成績都不是很好。最終竟然有幸能夠在全國賽扳回一城,不管是自動賽的 170 分、巧思獎,還是技能挑戰賽第二名,對我來說都是非常大的肯定,也代表所付出的努力並不是白費的。


2023年2月9日 星期四

2023 AI 運動專題實作營:黑客松第二名!





這次要和大家介紹的是一個四天的寒假營隊,由 AI4kids 主辦和陽明交通大學合作的 AI 運動營隊。這個營隊主打的是 AI 和運動的結合,讓學生透過實作的方式了解人工智慧和深度學習,也會利用 Python 程式去分析影片中球的路線。




營隊有 60 個人,共分成六個組別,而我是第三組的隊長。營隊前兩天是由 AI4kids 的老師介紹 AI 人工智慧,分別介紹機器學習和深度學習。第三天是由陽明交通大學的教授和研究生來介紹他們做的羽球和網球相關專題。最後一天則是黑客松,每一小組要在有限的時間內完成任務並在結束後上台報告成果。


第一天:認識 AI 人工智慧和機器學習





第一天介紹的是機器學習,電腦會利用人類挑選的特徵去訓練。可以分成監督式學習和非監督式學習,而監督式學習當中又可以分成回歸和分類,指的是用來解決問題的類別。

回歸問題是最終輸出為一個數值的問題,舉例來說,「明天下雨機率會是幾 %?」就是一種回歸問題。回歸(regression)是利用過去已知的資料去預測未來的數值,最常見的類型是線性回歸,利用一條和所有過去的點誤差值最小的線來預測下一個點的位置。

分類問題是最終輸出會是「是」或「否」的問題,像是「照片中的是不是胖丁?」就是一個分類問題。常見的分類(classification)有決策樹和 KNN,決策樹就像是很多層的 if/else 判斷式,經過多層的判斷後到達的就是輸出,KNN(K-近鄰演算法)是利用取附近 K 個資料去判斷何者比較多來決定結果。

實作的部分回歸和分類都有,回歸的部分預測的是病人在一年後糖尿病的惡化程度,分類的部分則是判斷病人有沒有可能得乳癌。回歸實作的資料共有 400 多筆,我們將其分為 80% 的訓練資料和 20% 的測試資料。接著讓我們看著熱力圖當中顯示的,特徵之間的關係指數,並去挑選需要用到的特徵,最後看哪幾個特徵能夠讓最終判斷的誤差最小。分類實作當中則是做 KNN,透過調整 K 的數值,去看看最終的準確度為多少。

透過看程式碼能夠更了解機器學習,不過因為實作的部分只包括觀察更改數值的變化,所以其實沒有什麼挑戰性。較有趣的是我有寫一段程式可以一個一個去嘗試 K 的值並找出最準確的。


第二天:認識深度學習、卷積神經網路





第二天主要在介紹的是深度學習,尤其是卷積神經網路(CNN Convolutional Neural Network)的介紹,還有介紹關於數位圖片的知識。

卷積神經網路是由三大層組成的,輸入層、隱藏層和輸出層。最複雜的部份是隱藏層,是由卷積層和池化層不斷反覆,最後再由全連接層組成一個判斷過程。卷積層是利用卷積核心去找出圖片當中的特徵,而池化層則是將卷積層完成的特徵圖取重要的特徵壓縮圖片。

數位圖片是由很多數字組成的,每一個數字在電腦當中表示的是一個像素的顏色,數字越大越亮。比較特別的是座標系統,相較於平常數學課本中從左下角開始的座標,數位圖片的 (0, 0) 是從左上角開始,而且 y 座標在 x 座標前面。

實作的部分主要專注在 CNN 和卷積核心的部分,CNN 的實作中使用的資料是辨別手寫數字,我們可以調整隱藏層的層數和每次進行訓練的數量,最終會看到準確度。卷積核心的實作則是製作自己的卷積核心並去提取人臉的特徵,像是眉毛、眼睛、鼻子等等。


第三天:用程式進行球賽分析





這一天是由教授和研究生來講課,主要都是環繞在實作的部分,有學到關於電腦視覺的知識和如何利用程式去分析一場球賽、分析數據等等,最後我們還有去球場看判斷正確殺球的程式。

令我印象深刻的是棋盤格法,電腦可以利用偵測焦點並連成直線去校正圖片,可以解除廣角的效果,確認圖片的直線沒有彎曲可以幫助電腦在判斷物件時不會有偏差。




實作的部分有追蹤影片中的球、更換影片中球的圖案和分析數據。我們可以透過追蹤球賽中的球,並顯示出其前幾幀的球位置,就可以看出球的路徑,在實作當中可以更換球的圖片,並更改大小讓其較明顯。我們也有分析資料,可以去判斷一場比賽當中球速最快的、某一拍的飛行距離,擊球的座標點等等,這個部分相當有趣,因為有一個部分是需要自己寫程式計算平均球速最快的一拍。


第四天:黑客松小組競賽


最後一天的黑客松競賽中總共有三個題目可以做選擇,我們選擇的是火球英雄榜。簡單來說就是要從現有的數據當中計算出每一拍得出球速、出球角、擊球座標、飛行時間和距離等等。進階的任務是要去判斷出每一拍的球種和最終的輸贏。

透過這樣的分析可能可以幫助比賽選手了解選手的球風,或自己常犯錯的球種和位置,只要有影片和數據就能夠分析。這樣一來在面對對手之前就可以先擬定出針對對手球風的訓練,增加訓練的效率和品質。





在我們的組別當中,我是負責寫程式的人,也有上台報告。我和我左邊的同學一起擬定了一個判斷球種的判斷式,最後透過不斷的和影片當中的球種去比對,成功寫出判斷球種的程式。另外我們還有去判斷雙方選手最常使用的球種、平均出球速和最快出球速。

在球種判斷的程式當中,最難判斷的有三種球,分別是高遠球、平球和吊球。其中判斷高遠球和平球的方式是發球到接球的 Z 軸(高度)變化,而判斷高遠球和吊球的方法是接球者和網子的距離,因為我們發現並不是每一次高遠球都是從後場發球,常常會和吊球搞混,最後決定用接球位置判斷。


心得與結論


在這四天當中其實非常充實,因為學習到的知識都是之前沒有接觸過的,比較可惜的地方是實作部分並沒有挑戰性,不過可以透過已經寫好的程式觀察撰寫的方式也不錯。最後一天是最有趣的,因為可以自己撰寫程式去達成目標,尤其有很想趕快完成的感覺,不斷地除錯也可以讓程式更加完整。

除了這個 AI 運動營隊以外,還有音樂和醫學的營隊,不過我應該不會想要再參加,因為前兩天的教學應該都是一樣的,此外我對於另外兩個主題也沒有那麼有興趣。




這次在黑客松競賽當中拿到第二名,其實我對這個結果相當意外,因為在看完大家的報告後,我認為應該是有拿到冠軍的機會,不知道自己輸在哪裡。還有一個獎項是學霸獎,是頒發給整體成績最高的組別,我原本也以為會是我們組的,因為我可以說是唯一在課堂上回答老師問題的人類,也許回答問題價值較廉價,最終我們沒有拿到這個獎項。