程序猿特有的技能就是在閑來無事的時候,可以自己逗自己玩,你并沒有看錯,我們搞了四臺相撲機器人sumorobot,讓它們對戰(zhàn),為什么這么設計呢,因為好玩呀!
相撲機器人賽事的挑戰(zhàn)在于參賽機器人需要尋找其對手(通常是通過紅外線或超聲波傳感器),將對手推出競技場。參賽機器人為避免尷尬離開舞臺,通常自備傳感器,以檢測邊緣。
我們搞的四臺相撲機器人,雖然都是同一類型的機器人,但是為了讓一切更刺激,我們修改了代碼,用了三套方案,讓它們都有屬于自己的戰(zhàn)斗方式。
1.直接型
運用直接型的機器人是marcus、和matt這兩臺sumoRobot的名字就是它們持有者的名字,可見其主人對它們的心愛程度,也從側面反映了這兩位玩家的懶癌程度。
這種代碼是這一套sumorobot的初始進攻模式,一開始會以較慢的速度直行,然后根據底板上面的紅外測距傳感器返回的參數(shù)值來確定敵人在哪個方向,然后朝改防線猛烈的撞擊。程序框圖如下:
2.搜索型
Searching,它的戰(zhàn)斗方式就是它的名字。一開始運行的時候,它就會轉動它的身子以90°的范圍來搜索前方是否有敵人,一旦探測到前方某個位置有敵人的存在,它就會立即以最大的速度充裝上去,fighting。它的優(yōu)勢在于,在確定敵情之前絕不輕舉妄動,一旦行動,必如脫兔。
3.旋轉型
運用這種進攻方式的sumorobot是“戰(zhàn)神”(老實說這是一個多么俗氣的名字)。這一種模式跟搜索型有著異曲同工之處,一開始運行的時候它也是搜索,不過其搜索方式有所不一樣,它的方式是朝著一個方向進行360°的旋轉。這種方式有一個有是,另一臺小車無論從哪個方向撞擊過來,它都能夠以最快的速度察覺到敵情,不給敵人可趁之機。程序框圖如下:
相撲機器人對戰(zhàn)視頻:
開玩笑,花了這么多時間組裝和調試代碼。當一切完成之后,怎么能不比試比試看看誰的相撲機器人才是戰(zhàn)爭的王者呢?
所以我們開始了一場沒有規(guī)則,只注重哪一臺車留在臺上以及觀賞性的亂斗比賽:
【轉載自DF社區(qū)】