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

正文內(nèi)容

畢業(yè)設(shè)計(jì)論文-室內(nèi)巡視機(jī)器人設(shè)計(jì)和仿真實(shí)現(xiàn)-資料下載頁(yè)

2025-06-02 01:24本頁(yè)面
  

【正文】 獲取攝像頭數(shù)據(jù) 攝像頭數(shù)據(jù)的獲取過(guò)程與激光數(shù)據(jù)的獲取過(guò)程類似定義一個(gè)獲取攝像頭數(shù)據(jù)的任務(wù)函數(shù) UpdateImage。 程序代碼如下: 寧波大學(xué) 信息科學(xué)與工程學(xué)院 本科畢業(yè)設(shè)計(jì)(論文) 3 圖 攝像頭數(shù)據(jù)獲取程序 IEnumeratorITask UpdateImage(DateTime dateTime) { byte[] rgbData = null。 Size size = new Size(0, 0)。 yield return ((), success = { rgbData = 。 size = 。 }, failure = { LogError(())。 })。 if (rgbData != null) { || != srcDataWidth || != srcDataHeight || ( == amp。amp。 bytesPerPixel == 3) || ( == amp。amp。 bytesPerPixel == 3) || ( == amp。amp。 bytesPerPixel == 4)) { if (bytesPerPixel == 3) destBitmap = new Bitmap(srcDataWidth, srcDataHeight, )。 else destBitmap = new Bitmap(srcDataWidth, srcDataHeight, )。 } } Activate((false, _dateTimePortImage, UpdateImage))。 ((60), _dateTimePortImage)。 } 寧波大學(xué) 信息科學(xué)與工程學(xué)院 本科畢業(yè)設(shè)計(jì)(論文) 22 圖 這段程序是 定義一個(gè)選擇仲裁器,往 WebCam服務(wù)端口發(fā)送一個(gè) QueryFrame請(qǐng)求當(dāng)請(qǐng)求成功時(shí),將數(shù)據(jù)保存到 rgbData中,并將圖像尺寸保存到 size中 ; 當(dāng)請(qǐng)求失敗時(shí),給出出錯(cuò)信息 。 圖像顯示及刷新 從攝像頭 獲取 到圖像數(shù)據(jù)以后,我們希望能把圖像在窗口中直觀地顯示出來(lái),所以要添加一個(gè)窗體,在窗體中添加一個(gè) PictureBox控件來(lái)顯示圖像。然后就是在 start方法中定義一個(gè)函數(shù)來(lái)啟動(dòng)窗體: 圖 啟動(dòng)窗體程序 啟動(dòng)窗體 后, 把攝像頭拍攝到的圖像顯示在 窗體里, 接下來(lái) 就是 不斷地刷新圖像 來(lái)實(shí)時(shí)更新圖像 , 以便我們更方便更準(zhǔn)確的觀察,因此 需要在窗體類中新添一個(gè)方法 UpdateWebcam供調(diào)用刷新圖像。程序如下: (new RunForm(() = { _laserDataForm = new LaserData()。 ()。 return _laserDataForm。 }))。 { byte[] rgbData = null。 Size size = new Size(0, 0)。 yield return ((), success = { rgbData = 。 size = 。 }, failure = { LogError(())。 })。 寧波大學(xué) 信息科學(xué)與工程學(xué)院 本科畢業(yè)設(shè)計(jì)(論文) 3 圖 刷新圖像程序 這段程序是 將 Bitmap圖像保存到類屬性 bmpWebcam變量中 , 讓 pictureBox空間顯示圖像 , 根據(jù)圖像大小重新設(shè)置 pictureBox控件的尺寸 。這樣就可以實(shí)現(xiàn)不斷的刷新圖像,從而到達(dá)實(shí)時(shí)顯示的目的。 編譯運(yùn)行后可看到攝像頭圖像監(jiān)控畫面 如圖 所示: 圖 攝像頭圖像監(jiān)控畫面 機(jī)器人進(jìn)行室內(nèi)巡視時(shí)的實(shí)時(shí)監(jiān)控圖,如圖 所示,帶有攝像頭實(shí)時(shí)監(jiān)控畫面和機(jī)器人在室內(nèi)的位置,這樣就可以更好的觀察和判斷實(shí)時(shí)監(jiān)控的畫面是否如實(shí)的反映機(jī)器人所在處的情況。 internal void UpdateWebcam(Bitmap bmp) { bmpWebcam = bmp。 = new Size(, )。 = bmpWebcam。 (true)。 } 寧波大學(xué) 信息科學(xué)與工程學(xué)院 本科畢業(yè)設(shè)計(jì)(論文) 24 圖 仿真環(huán)境下的實(shí)時(shí) 監(jiān)控畫面 手動(dòng)控制 器的設(shè)計(jì) 上文講到的都是機(jī)器人自動(dòng)巡視,雖然 自動(dòng)巡視具有很多的優(yōu)點(diǎn),如方便,快捷,自主等,但是也有些不足,比如操作不靈活,功能單一等。為此我們專門引入了手動(dòng)控制器來(lái)增加操作的靈活性和多樣化的功能。 我們 設(shè)計(jì)出一個(gè) 可視化 的 操作界面 來(lái) 介入機(jī)器人 的 仿真過(guò)程,譬如啟動(dòng) /暫停仿真, 自動(dòng) /手動(dòng)的切換, 手工設(shè)置機(jī)器人的速度和 前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)等 。 手動(dòng)控制操作面板如圖 。 圖 手動(dòng)控制操作面板示意圖 手動(dòng)控制操作面板上有前進(jìn),后退,左轉(zhuǎn),右轉(zhuǎn),加速,減速,自動(dòng) /手動(dòng)切換和啟動(dòng) /暫停仿真引擎 8個(gè)按鍵。 寧波大學(xué) 信息科學(xué)與工程學(xué)院 本科畢業(yè)設(shè)計(jì)(論文) 3 手動(dòng)操作面板 控制原理 手動(dòng)操作面板控制 原理 :當(dāng)我們點(diǎn)擊手動(dòng)操作面板中按鍵,此時(shí)就會(huì)立即先主服務(wù)程序發(fā)送一個(gè) port消息,然后住服務(wù)程序根據(jù)接收到的 port信息 調(diào)用 預(yù)先編寫好的程序進(jìn)行處理,處理完后控制機(jī)器人做出相應(yīng)狀態(tài)的改變。如圖 。 圖 手動(dòng)控制操作面板 控制原理 示意圖 手動(dòng)操作面板控制的 功能 手動(dòng)控制操作面板上有前進(jìn),后退,左轉(zhuǎn),右轉(zhuǎn),加速,減速,自動(dòng) /手動(dòng)切換和啟動(dòng) /暫停仿真引擎 8個(gè)按鍵。 各個(gè)按鍵的功能: ( 1)“自動(dòng) /手動(dòng)”切換鍵:實(shí)現(xiàn)自動(dòng)與手動(dòng)操作之間的靈活切換。 ( 2)“啟動(dòng) /暫停仿真引擎”鍵:簡(jiǎn)易方便的開(kāi) 啟和關(guān)閉仿真引擎,而不必每次都通過(guò)修改 xml文件,將其中的 Pause項(xiàng)由 true 改成 false。 ( 3)“前進(jìn)”鍵: 通過(guò)控制機(jī)器人左右輪子的轉(zhuǎn)向來(lái)實(shí)現(xiàn)機(jī)器人向前行進(jìn)。 ( 4)“后退”鍵:通過(guò)控制機(jī)器人左右輪子的轉(zhuǎn)向來(lái)實(shí)現(xiàn)機(jī)器人向后行進(jìn)。 ( 5)“左轉(zhuǎn)”鍵:通過(guò)控制機(jī)器人左右輪子的轉(zhuǎn)速來(lái)實(shí)現(xiàn)機(jī)器人的轉(zhuǎn)向,向左轉(zhuǎn)時(shí), 右輪的速度應(yīng)大于 左 輪的速度。 ( 6)“右轉(zhuǎn)”鍵:通過(guò)控制機(jī)器人左右輪子的轉(zhuǎn)速來(lái)實(shí)現(xiàn)機(jī)器人的轉(zhuǎn)向,向右轉(zhuǎn)時(shí), 左輪的速度應(yīng)大于 右 輪的速度。 ( 7)“加速”鍵: 將加速的速度值預(yù)先通過(guò)程序編寫出來(lái) ,然 后 當(dāng)按下此鍵時(shí) 實(shí)現(xiàn)速度的增加。 ( 8)“減速”鍵: 將加速的速度值預(yù)先通過(guò)程序編寫出來(lái),然后當(dāng)按下此鍵時(shí)實(shí)現(xiàn)速度寧波大學(xué) 信息科學(xué)與工程學(xué)院 本科畢業(yè)設(shè)計(jì)(論文) 26 的 減少。 手動(dòng)控制器的實(shí)現(xiàn) 現(xiàn)在我們 以啟動(dòng) /暫停仿真引擎為例。首先在窗體中增加一個(gè)按鈕 btnRunPausedEngine,當(dāng)點(diǎn)擊該按鈕時(shí)希望能夠暫?;蛘哌\(yùn)行仿真引擎。為了能夠在窗體中向主服務(wù)程序發(fā)送消息,我們首先需要把主服務(wù)程序的消息端口告訴窗體類,在窗體類中新增一個(gè)全局變量保存主服務(wù)程序的消息端口: 圖 然后,在 中定義所需要的消息體類型: 圖 同時(shí)在服務(wù)端口中新增一個(gè) PauseEngine 消息,將 zmhOperations 改為: 圖 在創(chuàng)建窗體時(shí),把消息端口傳遞給窗體類中的全局變量 _mainPort。同時(shí)需要修改主服務(wù)程序中啟動(dòng)窗體的代碼為: public class PausedEngine : SubmitPausedEngineRequest, PortSetDefaultSubmitResponseType, Fault { public PausedEngine() : base(new PausedEngineRequest()) { paused = true。 } public bool paused。 //paused屬性為真時(shí)暫停;為假時(shí)運(yùn)行引擎 } [DataContract] public class PausedEngineRequest { } [ServicePort] public class zmhOperations : PortSetDsspDefaultLookup, DsspDefaultDrop, Get, Subscribe, PausedEngine { } zmhOperations _mainPort。 寧波大學(xué) 信息科學(xué)與工程學(xué)院 本科畢業(yè)設(shè)計(jì)(論文) 3 圖 把主服務(wù)程的主端口傳遞給窗體。 接 下來(lái),我們要為 PauseEngine 消息編寫消息處理任務(wù)函數(shù): 圖 [ServiceHandler()] public virtual IEnumeratorITask PausedEngineHandler(PausedEngine state) { var stateOrFault = ()。 yield return ()。 if (HasError(stateOrFault)) //如果有錯(cuò)誤,報(bào)錯(cuò)并返回 { LogError(Failed to get state of simulation engine.)。 yield break。 } var state = ()stateOrFault。 = 。 //改變暫停狀態(tài) var replace = new (state)。 (replace)。 yield return ()。 var fault = 。 if (HasError(fault)) //更新?tīng)顟B(tài)失敗 { LogError(Failed to set state of simulation engine.)。 yield break。 } else //更新?tīng)顟B(tài)成功 { if(paused) LogInfo(Simulation is Paused!)。 else LogInfo(Simulation is Started!)。 } } (new RunForm(() = { _laserDataForm = new LaserData(_mainPort)。 ()。 return _laserDataForm。 }))。 寧波大學(xué) 信息科學(xué)與
點(diǎn)擊復(fù)制文檔內(nèi)容
醫(yī)療健康相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1