freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

千人培養(yǎng)工程機(jī)器人足球俱樂部技術(shù)白皮書v15-文庫吧

2025-06-02 15:12 本頁面


【正文】 統(tǒng)提供的源程序模板程序模板說明:程序使用動態(tài)連接庫(DLL)方式硬件需求 Pentium III 600 MHz或以上性能的CPU 256M系統(tǒng)內(nèi)存 具有32M以上顯存的TNT2或其以上級別的顯示卡 能夠支持800600以上分辨率的顯示器軟件需求 Windows98或以上版本的操作系統(tǒng) DirectX 仿真平臺的使用介紹以下是簡單的仿真平臺的使用方法: 運(yùn)行程序的方法1. 先將自己編寫好的代碼編譯成dll文件,黃隊程序拷到C:\strategy\yellow, 藍(lán)隊程序拷到C:\strategy\bule.2. 在仿真平臺中點(diǎn)擊STRATEGIES按鈕,選擇 C++,然后輸入策略文件名,點(diǎn)擊send。3. 選擇相應(yīng)的比賽模式,按照規(guī)則擺放好球和球員后,點(diǎn)擊start,開始比賽 主菜單 A-各隊載入策略B-選擇以何種方式開球,依次為(自由球、開球、點(diǎn)球、任意球、球門球)C-選擇開球方D-開始比賽E-比賽時間和比分F-修改時間和比分G-開始一場新的比賽H-平臺幫助以及規(guī)則 策略載入菜單 A-選擇使用何種開發(fā)語言(Lingo/C++)B-輸入藍(lán)隊程序的文件名C-輸入黃隊程序的文件名D-將各隊程序載入平臺E-打開狀態(tài)查看窗口(顯示了球和機(jī)器人的一些基本信息) 比賽控制菜單A-立即回放 B-暫停 C-結(jié)束比賽 回放控制菜單A-重頭開始回放 B-從前300個周期開始回放C-一般速度回放 D-慢速度回放 E-逐幀回放F-推出回放模式 G-當(dāng)前進(jìn)球無效 機(jī)器人的編號Home代表己方機(jī)器人 Opp 代表對方機(jī)器人箭頭所指的方向?yàn)闄C(jī)器人當(dāng)前的正方向home1home2home3home4opp1opp2opp3opp4opp0home0 鼠標(biāo)和鍵盤操作鼠標(biāo):在比賽開始前或比賽暫停時,可以用鼠標(biāo)拖動球或機(jī)器人到場地的任何位置。鍵盤:在比賽開始前或比賽暫停時,當(dāng)鼠標(biāo)點(diǎn)擊某一個機(jī)器人后可以用或鍵來調(diào)整該機(jī)器人的角度。第二章 仿真平臺與策略關(guān)系及其運(yùn)動策略開發(fā)指南 什么是策略程序定義:策略程序就是自己編寫的能夠使仿真平臺中機(jī)器人按照預(yù)定方式運(yùn)動的程序.通俗的來說,就是能夠打比賽的程序. 仿真平臺與策略的運(yùn)行關(guān)系 仿真平臺與策略程序的通訊方式MLS     平臺策略程序接受數(shù)據(jù)策略程序?qū)⒔邮艿臄?shù)據(jù)進(jìn)行處理策略程序發(fā)送數(shù)據(jù)MLS策略程序 策略程序每個周期接受的數(shù)據(jù)仿真平臺傳遞給策略程序的數(shù)據(jù):1. 己方、對方機(jī)器人坐標(biāo)、角度(當(dāng)前周期,上一周期)。2. 球的坐標(biāo)(當(dāng)前周期,上一周期)。 策略程序每個周期發(fā)送的數(shù)據(jù) 策略程序發(fā)送給仿真平臺的數(shù)據(jù):? 1. 己方(home[i])每個機(jī)器人的左輪速(pwm1)和右輪速(pwm2) 仿真平臺場地數(shù)據(jù) 場地頂點(diǎn)坐標(biāo)(0,0)說明:1英寸= (, )(, )單位:英寸(, )(, )) , 。 場地的各種標(biāo)志及尺寸(單位:厘米)機(jī)器人小車為理想模型。速度限制為 125~125提供比賽狀態(tài)(GameState)和控球方(WhosBall)兩個參數(shù)度量單位:英寸。如轉(zhuǎn)換成厘米,球員方位角單位為角度每方隊員有五名,分別用不同的顏色來標(biāo)示,右上角是黑色來區(qū)分前后,中間是代表隊伍的顏色,在左下角是區(qū)分不同隊員的標(biāo)識: 0號一般是守門員,用大紅色表示; 1號用紫色表示,2號用紫紅色表示,這兩個一般用作防守; 3號用綠色表示,4號用藍(lán)綠色表示,這兩個一般用作進(jìn)攻;前球機(jī)器人( , )XY轉(zhuǎn)角方向 0176。單位:厘米 接口代碼解析程序的接口API函數(shù):函數(shù)接口 Create 主要是程序的初始化,在程序開始時由系統(tǒng)調(diào)用,主要作用是定義自有的數(shù)據(jù),如創(chuàng)建對應(yīng)于:EnvironmentuserData 的數(shù)據(jù),其中可以用來存儲我們的策略執(zhí)行狀態(tài)等extern C STRATEGY_API void Create ( Environment *env )。 函數(shù)接口 Destroy主要是程序的銷毀,在程序結(jié)束時由系統(tǒng)調(diào)用,主要作用是釋放自定義的數(shù)據(jù),如刪除對應(yīng)于:EnvironmentuserData 的數(shù)據(jù)extern C STRATEGY_API void Destroy ( Environment *env )。 函數(shù)接口 Strategy是程序的主要執(zhí)行邏輯,由系統(tǒng)反復(fù)調(diào)用,每次調(diào)用相當(dāng)于真實(shí)系統(tǒng)下計算出新的機(jī)器人左右輪的速率,并發(fā)送給小車,在這里,我們必須處理針對賽場上每一時刻的對策,每秒調(diào)用60次,即仿真周期為1/60秒。extern C STRATEGY_API void Strategy ( Environment *env )。實(shí)際上程序只需要這三個接口,而我們的工作就是完成這幾個接口的處理。程序的基本數(shù)據(jù)定義:Vector3D 位置向量定義typedef struct{ double x, y, z。} Vector3D。Bounds 區(qū)域范圍定義typedef struct{ long left, right, top, bottom。} Bounds。Robot 我方機(jī)器人的信息定義typedef struct{ Vector3D pos。 //機(jī)器人的坐標(biāo)位置 double rotation。 //機(jī)器人當(dāng)前的轉(zhuǎn)角 double velocityLeft, velocityRight。 //機(jī)器人的左右輪的速度} Robot。OpponentRobot 對方機(jī)器人的信息的定義typedef struct{ Vector3D pos。 //機(jī)器人的坐標(biāo)位置 double rotation。 //機(jī)器人當(dāng)前的轉(zhuǎn)角} OpponentRobot。Ball 小球的位置定義typedef struct{ Vector3D pos。 //小球的坐標(biāo)位置} Ball。Environment 最重要的數(shù)據(jù)定義,包含所有運(yùn)行時的信息,由系統(tǒng)刷新typedef struct{ Robot home[PLAYERS_PER_SIDE]。 //我方機(jī)器人數(shù)組 OpponentRobot opponent[PLAYERS_PER_SIDE]。 //敵方機(jī)器人數(shù)組 Ball currentBall, //當(dāng)前小球的位置 lastBall, //上一次小球的位置 predictedBall。 //預(yù)計的小球的位置 Bounds fieldBounds, //場地范圍 goalBounds。 //球門的位置與范圍 long gameState。 //當(dāng)前游戲的狀態(tài) long whosBall。 //由誰控制球 void *userData。 //用戶自定義信息} Environment。仿真系統(tǒng)每秒會調(diào)用Strategy接口60次,但實(shí)際上每秒的執(zhí)行次數(shù)是和當(dāng)前的硬件配置有關(guān),比如每秒20次。也就是我們的每個處理周期為1/60秒,在每次調(diào)用時,系統(tǒng)通過Environment * env這個指針向我們傳遞當(dāng)前的系統(tǒng)的運(yùn)行信息,然后我們通過運(yùn)算,然后設(shè)置我方所有機(jī)器人的左右輪轉(zhuǎn)速,依此來控制機(jī)器人進(jìn)行足球比賽。需要注意的是:程序?qū)τ谧笥野雸?,?yīng)該分別處理。 程序開發(fā)流程1. 在C:\Program Files\Robot Soccer 目錄下找到Strategy Source文件2. 將此文件夾的代碼拷出,可以看到系統(tǒng)提供的接口代碼,同時也有一些系統(tǒng)提供的策略,這些策略只是提供參考,如果想要寫出好的程序,必須改進(jìn),或重新編寫。3. 在我們看到的程序中像下面這樣一類函數(shù)都是開發(fā)者留給我們參考的,這些以后都需要自己改進(jìn),自己編寫。void PredictBall ( Environment *env )。//預(yù)測球的位置void Goalie1 ( Robot *robot, Environment *env )。//守門員策略void NearBound2 ( Robot *robot, double vl, double vr, Environment *env )。void Attack2 ( Robot *robot, Environment *env )。//機(jī)器人向小球移動方法void Defend ( Robot *robot, Environment *env, double low, double high )。//防守(后衛(wèi))void MoonAttack (Robot *robot, Environment *env )。//移動攻擊// just for testing to check whether the amp。envopponent works or notvoid MoonFollowOpponent ( Robot *robot, OpponentRobot *opponent )。//跟隨對方球員void Velocity ( Robot *robot, int vl, int vr )。//機(jī)器人左右輪速度void Angle ( Robot *robot, int desired_angle)。// 機(jī)器人轉(zhuǎn)角void Position( Robot *robot, double x, double y )。//機(jī)器人移動 動作函數(shù)介紹為了完成各種策略,基本的做法是用分而治之,逐步求精的方法,將主要的策略分為若干基礎(chǔ)的策略(以下簡稱方法),每個完整的方法分別由這些基本的方法組成,而這些方法又由一些基本的行為動作方式組成,我們的機(jī)器人控制程序最后就是由這些方法和行為動作方式來構(gòu)成。下面是一些基本的動作函數(shù)://設(shè)置機(jī)器人左右輪的速度void Velocity ( Robot *robot, int vl, int vr ){ robotvelocityLeft = vl。 robotvelocityRight = vr。}//該動作可以讓機(jī)器人轉(zhuǎn)到指定任意角度void Angle ( Robot *robot, int desired_angle){ int theta_e, vl, vr。 theta_e = desired_angle (int)robotrotation。 while (theta_e 180) theta_e = 360。 while (theta_e 180) theta_e += 360。 if (theta_e 90) theta_e += 180。 else if (theta_e 90) theta_e = 180。 if (abs(theta_e) 50) { vl = (int)(9./ * (double) theta_e)。 vr = (int)(9./ * (double)theta_e)。 } else if (abs(theta_e) 20) { vl = (int)(* (double)theta_e)。 vr = (int)(* (double)theta_e)。 } Velocity (robot, vl, vr)。}//該動作使移動小車到制定位置void Position( Robot *robot, double x, double y ){ int desired_angle = 0, theta_e = 0, d_angle = 0, vl, vr, vc = 125。 double dx, dy, d_e, Ka = 。 //計算當(dāng)前位置與目標(biāo)的相對位移 dx = x robot。 dy = y robot。 //計算到目標(biāo)位置的直線距離 d_e = sqrt(dx * dx + dy * dy)。 //計算當(dāng)前位置到目標(biāo)點(diǎn)的角度 if (dx == 0 amp。amp。 dy == 0) desired_angle = 90。 else desired_angle = (int)(180. / PI * atan2((double)(dy), (double)(dx)))。 //當(dāng)前機(jī)器人與目標(biāo)的夾角 theta_e = desired_angle (int)robotrotation。 while (theta_e 180) theta_e = 360。 while (theta_e 180) theta_e += 360。 if (d_e 100.) Ka = 17. / 90.。 else if (d_e 50) Ka = 19. / 90.。 else if (d_e 30) Ka = 21. / 90.。 else if (d_e 20) Ka = 23. / 90.。 else Ka = 25. / 90.。 if (theta_e 95 || theta_e 95) { theta_e += 180。 if
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1