滾球控制系統

2021-09-24 05:31:03 字數 2876 閱讀 6020

機械結構

演算法部分

我們組選用的是407探索者做主控,戰艦板做比較吃力,mini板做影象處理就更難受了。

我們在嘗試的過程中,使用了三款攝像頭,ov2640、ov7670和openmv3(ov7725),其中ov2640和openmv3都可以實現,ov7670則比較吃力。建議使用ov2640,由於該題影象處理部分並不複雜,只需要具備簡單的影象處理知識即可,調整好背景環境的情況下簡單的二值化就可以得到很好的效果。

這裡說下影象處理的目的:

經過影象處理後的最理想的效果,應該是主控微控制器的螢幕上只有白色的球,其他背景都是黑色。這時,我們只需要攝像頭實時獲取小球的上下左右四個邊界點即可,也就是[xmin,xmax],[ymin,ymax],此時圓心座標即[(xmin+xmax)/2,(ymin,ymax)/2]

另外需要注意幾個常見的坑:

板球系統應該選擇黑白分明的板和球,這和影象處理有關,這樣二值化後可以使得整個板所在的畫面中只有白色的球和黑色的背景,而不存在白色的雜訊點。這裡還有個問題,是板黑球白的組合好些還是板白求黑的組合效果更好點?我們在實驗的過程中發現,白色的板子會反光,使得影象處理的效果不好,同樣白色的球也會反光,因而選擇器材的時候要盡量避免這點,最理想的搭配應該是下圖的組合。另外實驗時,影子也會影響光線,需要注意這點。

關於二值化閾值的選取。在背景理想的情況下,手動調閾值即可。但若想達到自動調節閾值,得選取實現一些閾值選取的方法,例如大津閾值。但此題的重點不在影象處理,因而手動調節即可達到不錯的效果。

另外opemmv3採用stm32f7作為處理核心,時鐘頻率可以達到216m。搭載7725,輸出幀率可以高達85幀。此外外部提供python介面,只要幾行**即可完成乙個專案,最後提供多種例程,如找小球,找色塊,循跡,光流等等都不在話下。用在這裡有點大材小用了。

那選擇ov2640和openmv的區別就在於是否需要實現複雜的影象處理,簡單情況下ov2640是可以滿足需求的。

在電機使用的過程中,也存在一些問題。我們選取的是數字舵機。之前有使用過步進電機的經驗,因而很快便讓數字舵機轉動起來了。其實這些電機只要給它pwm脈衝即可以轉動,沒有太多的操作難度。

這裡的坑有如下幾個:

使用過程中需要注意接線問題。怎麼接線需要根據定時器的脈衝引腳來接線,選定好定時器和通道之後,微控制器的引腳也就選好了,只要把舵機線接到該引腳即可。由於舵機線需要接的長一點,我們組一開始使用了十多根杜邦線連起來,但總是會出現連線的地方鬆動的問題,這時候檢查就需要乙個乙個去檢查,很浪費時間。因而我們買了1m長的杜邦線,可以防止錯誤的累積。

實驗室的舵機有三種款式,每種款式的功率規格都不一樣,因而一定要判斷功率的問題,我們組曾以為電機壞了,換了穩壓電源才發現是功率不夠。功率不夠的話,電機是不會轉動的,但是電機內部還是會輕微顫動

球,球是很關鍵的乙個,桌球太輕而且重心不在球心。我們實驗過程中先使用了鋼球,幾乎不受風的影響。但是鋼球銀白色,會反光,影象處理效果不好(可以考慮給球上色)。然後我們找了個小黑球,重量大概比玻璃彈珠輕一點。

平板,建議大家採用亞克力板,輕薄平整,玻璃的話太厚。我們隊伍先使用了木板,但是發現太重了,調節不夠靈敏(而且光滑,反光)。亞克力板有無色跟白色可選,,最好拿透明的亞克力板,一面撕去紙,一面將紙張用墨水染黑,這樣調整一下灰度的閾值就能追蹤小球了。

機械結構很重要,很重要,很重要。乙個好的機械結構就已經成功了一半了。這裡貼上網上的幾個版本,大家可以自己對比下。

機械結構這個地方需要大家自己去搭建去摸坑,嘗試了才知道又怎樣的差別。

這裡最好使用萬向節

整個演算法部分分為影象處理和pid條件,其中影象處理較為簡單,重點還是在pid怎麼調節。

影象處理部分如下:

這裡我們調節pid的大致步驟如下:

首先需要找到舵機中值對應的pwm,也就是板子大概水平時候的pwm數值。這裡乙個小技巧,我們讓兩個舵機的pwm值實時顯示在主控微控制器的螢幕上,這樣只需要調節平衡就可以直接讀取數值。(同樣,獲取小球座標也可以使用這個方法,讓計算出的小球座標實時顯示在螢幕上,用來標定9個目標區域)

微調pwm的範圍。由於機械結構的原因,常常小球已經到達邊緣了,舵機還未來的及反應或者反應太劇烈,這種情況可以改進pid來調節,但是不需要這樣做。我們只需給pwm乙個取值範圍即可,不讓舵機擺動幅度太大,讓板子的切斜角度始終在乙個小的範圍內變化。這樣舵機有足夠的時間去反應。

(說下我調節的經驗,僅供參考)先調p,d為0。d的作用就是讓小球的速度減慢,d越大效果越明顯,當把p調的很小的時候,如果球還會飛出去,那就調節d大些,直到球能在某個點來回的晃來晃去。然後繼續調節p,直到晃動幅度很小或者基本穩定在一點。

對於題目要求的到達某點,只要給出目標點的座標,pid演算法會根據期望點座標和當前小球座標不斷的時候調整pwm的值,使得電機轉動,動態調節,直到小球到達目標點。

控制系統設計 非線性控制系統設計

控制設計的目標可以敘述如下 對於給定的被控物理系統和系統期望性態的規範,構造反饋控制規律,使得系統呈現出期望的性態。兩類基本的非線性控制問題 非線性調節和非線性跟蹤 非線性控制所期望的性態 構造非線性控制器的基本問題 可利用的非線性控制器設計方法。1.1.鎮定問題 漸近鎮定問題 給定由方程 描述的非...

交通控制系統

設計要求 用vhdl語言設計乙個由一條主幹道和一條支幹道的匯合點形成的十字交叉路口的交通燈控制器,要求如下 1 主 支幹道各設乙個紅 綠 黃指示燈,led顯示 2 主幹道處於常允許通行狀態,支幹道有車來的時候才允許通行 主幹道允許通行時亮綠燈,支幹道紅燈。支幹道允許通行時亮綠燈,主幹道亮紅燈 3 主...

版本控制系統

linux一直痛恨的cvs及svn都是集中式的版本控制系統,而git是分布式版本控制系統,集中式和分布式版本控制系統有什麼區別呢?1 集中式版本控制系統 代表 svn cvs 版本庫是集中存放在 伺服器的,而幹活的時候,用的都是自己的電腦,所以要先從 伺服器取得最新的版本,然後開始幹活,幹完活了,再...