足球機器人競賽4V4對抗賽對抗方案
- 總體方案
- 開源代碼結構概述
- skill層
- task層
- 守門員
- 前鋒
- 前鋒的行走速度要足夠快
- 前鋒接球要足夠準
- 中場and后衛
- 戰術技巧
- 待改善的地方
先貼上開源代碼吧,點個star再走啦~
鏈接: https://github.com/LittleGenius12138/robor_soccer_4V4.

足球機器人競賽4V4對抗賽實用規則講解:
鏈接: https://blog.csdn.net/weixin_43454320/article/details/109310295.
總體方案
我把包括守門員在內所有小車的skill都重新再寫了一遍,所以我的所有方案都是基于自己寫的skill來實作的,如果用官方的skill的話,效果不理想哦
我們總體的方案就是讓前鋒在外面進攻,后衛和中場就在緊貼著禁區線和守門員一起進行防守,這個方案最大程度的保證了我方的安全性,但是也需要前鋒動作寫的非常好,這樣才能進球,事實證明我方的前鋒非常穩健和具有進攻性,
至于戰術,我就是比較簡單粗暴了,如果是我方直接球或者間接球進攻的話我們就是直接前鋒猛沖射門,如果是我方防守的話,我們會等對方開球之后直接轉換成進攻模式,
開源代碼結構概述
skill層



task層


守門員
我的守門員相對于官方的守門員來說就是增加了一種叫做==最小二乘法==的演算法,這個演算法能做到將一些離散的點擬合成直線或者曲線,所以我的守門員思路就是:采集幾幀里球的位置,然后以球場中心作為原點建立坐標系,并且根據之前采集到的幾幀球的位置擬合出一條直線,根據直線的交點來預判出守門員的防守點

前鋒
我的前鋒是我整個戰術最關鍵的地方,也是唯一的進球機會,我的前鋒需要滿足以下幾個條件:
前鋒的行走速度要足夠快
我的犀利的前鋒是我能斬獲省一的關鍵之一,當把小車的目標點設定在距離小球dis距離的時候小車就會以很快的速度拿球,這是我們前鋒的關鍵點1
圖形解釋如下圖:

拿到球之后就需要射門,我設計的動作是這樣的:首先判斷小車是否拿到了球,如果拿到球了之后將小車的目標點設為球門,在這個程序中判斷是否可以射門,滿足射門條件就可以射門了,這里也有一個小技巧,不要把目標點設為球門中點,設定為偏離中點一定距離,這樣不但可以減小小車轉向的幅度,而且以刁鉆的角度射門更加難以防守,這就是我的前鋒的關鍵點2
前鋒接球要足夠準
我現在的前鋒還是有一些缺陷的,就是對于賽場上的一些狀況判斷不夠完善,希望后浪可以在我這個開源的基礎上進行改進,目前我的方案:只要球在場上運動,前鋒就根據擬合出來的曲線去接球,或者是直接根據小球的實時坐標去追球,擬合的方案就是用前面講的最小二乘法,追球的方法和追到球之后的操作在上一部分已經描述過了,
中場and后衛
我的中場和后衛挺憨的,開了球之后中場和后衛就緊貼禁區線進行防守,但是,我獲勝的另外一個關鍵點也是在這里哦~
但其實也算是一個投機取巧的辦法吧,那就是一般情況下,敵方小車開球,官方的防守位置都是在離球50cm左右的地方,這樣敵方小車挑球就可以過人,因此挑射發球也正是大部分人采取的方案,我把小車的防守位置拉到了100cm甚至150cm的地方,這樣敵方小車不論是平射還是挑射都是直接把球送到我的前鋒手里,然后我方犀利的前鋒拿球射門,美滋滋~
戰術技巧
在實際比賽中,除了我的前鋒,最容易得分的就是角球了,因此我的戰術就是盡量制造出更多的角球,然后通過角球來得分,那么角球的防守和進攻就很重要了,我有一個sao想法,就是多寫幾個角球進攻的腳本,然后在task層的lua語言里隨機呼叫這些腳本動作,這樣敵方就很難進行防守了,那么防守的話要么用演算法來判斷敵方可能的進攻方案,要么寫好幾套防守方案,到時候在比賽的時候可以申請暫停然后換上克制敵方角球進攻的防守方案,
待改善的地方
賽后我總結了一些我的不足和待改進的地方,希望后浪們可以在我的開源基礎上進一步加強,提高足球機器人的高度并將他的魅力帶給更多的人,有問題的話歡迎在評論區提出哦,

附在最后

轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/209133.html
標籤:其他
上一篇:1-2 map和list和set-ThreadLocal-finally-finalize
下一篇:CSP-S 2020 游記
