加入星計(jì)劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長(zhǎng)期合作伙伴
立即加入

手機(jī)目標(biāo)跟蹤尋跡小車(chē)+藍(lán)牙SPP通信,附APP和Arduino源碼

2017/06/30
221
服務(wù)支持:
技術(shù)交流群

完成交易后在“購(gòu)買(mǎi)成功”頁(yè)面掃碼入群,即可與技術(shù)大咖們分享疑惑和經(jīng)驗(yàn)、收獲成長(zhǎng)和認(rèn)同、領(lǐng)取優(yōu)惠和紅包等。

虛擬商品不可退

當(dāng)前內(nèi)容為數(shù)字版權(quán)作品,購(gòu)買(mǎi)后不支持退換且無(wú)法轉(zhuǎn)移使用。

加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論
放大
方塊圖(3)
相關(guān)方案
  • 方案介紹
  • 相關(guān)文件
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

如何通過(guò)目標(biāo)追蹤功能制作一個(gè)手機(jī)攝像頭實(shí)時(shí)跟蹤小車(chē),該設(shè)計(jì)運(yùn)用OpenCV的圖像處理APP,手機(jī)APP通過(guò)攝像頭實(shí)時(shí)跟蹤設(shè)定的顏色目標(biāo),并且通過(guò)手機(jī)藍(lán)牙將目標(biāo)坐標(biāo)位置和大小等信息輸出,配合藍(lán)牙串口模塊和我寫(xiě)的配套Arduino數(shù)據(jù)接收庫(kù),就可以做成一個(gè)簡(jiǎn)單的手機(jī)跟蹤尋跡小車(chē)。

手機(jī)實(shí)時(shí)跟蹤尋跡小車(chē)視頻演示:

手機(jī)實(shí)時(shí)跟蹤尋跡小車(chē)手機(jī)APP截圖:

安裝方法:
1.直接安裝Trace.apk,Android5.0以上系統(tǒng)需要到設(shè)置里賦予應(yīng)用相機(jī)和藍(lán)牙權(quán)限
2.在豌豆莢搜索“跡”安裝,同上

使用方法:
1.進(jìn)軟件之后可以點(diǎn)擊連接藍(lán)牙,選擇你的藍(lán)牙模塊(模塊需要事先在手機(jī)系統(tǒng)藍(lán)牙設(shè)置里面配對(duì)好),連接上之后如果有目標(biāo)信息就會(huì)通過(guò)藍(lán)牙發(fā)送到模塊上,Arduino進(jìn)行讀取就可以了。
2.點(diǎn)擊左上角的按鈕進(jìn)入預(yù)覽畫(huà)面,此時(shí)在預(yù)覽窗口中點(diǎn)擊任何一個(gè)你想追蹤的物體,就會(huì)自動(dòng)進(jìn)行處理輸出數(shù)據(jù)了,頂欄會(huì)顯示你選中的顏色。
3.這里說(shuō)明一下,跟蹤原理是以顏色為特征的,所以應(yīng)該盡量避免視野中出現(xiàn)顏色相同的物體,同時(shí)如果發(fā)現(xiàn)跟蹤物體的周?chē)霈F(xiàn)大量小塊的目標(biāo)塊,可以適當(dāng)調(diào)大屏幕下方的進(jìn)度條,直到雜塊消失只剩一個(gè)目標(biāo)。

說(shuō)明一下屏幕下方各個(gè)控件的含義:
1.左邊的按鈕是切換手機(jī)前后鏡頭的(現(xiàn)在應(yīng)該沒(méi)有不帶前置鏡頭的手機(jī)了吧…)
2.進(jìn)度條用于調(diào)節(jié)圖像處理閾值,這個(gè)值用于色塊過(guò)濾,可以理解為,用于設(shè)置最小的目標(biāo)塊的限制,也就是當(dāng)目標(biāo)小于一定程度就過(guò)濾掉。
3.T、X、Y三個(gè)參數(shù)是目標(biāo)的信息,XY是坐標(biāo)大家都知道(坐標(biāo)的最大值跟手機(jī)鏡頭分辨率有關(guān));T是目標(biāo)的大小信息,如果檢測(cè)到多個(gè)目標(biāo)或者沒(méi)有檢測(cè)到任何目標(biāo)這里會(huì)顯示E(error)。T可以用于粗略得判斷物體的遠(yuǎn)近(近大遠(yuǎn)小),不過(guò)更推薦的方式是用Y軸判斷遠(yuǎn)近(見(jiàn)后文的小車(chē))。


手機(jī)實(shí)時(shí)跟蹤尋跡小車(chē)設(shè)計(jì)總結(jié):

這個(gè)小車(chē)大家可以隨意搭建,只要能把你的手機(jī)放上去就行。Tmp上我用了兩個(gè)舵機(jī)改造成輪子,把180度的舵機(jī)改成可以連續(xù)旋轉(zhuǎn)的360舵機(jī),這樣就省下了電機(jī)驅(qū)動(dòng)以及麻煩的減速箱,而且只用一根信號(hào)線就可以控制電機(jī)的正反轉(zhuǎn)和速度,這部分要是大家感興趣可以上網(wǎng)搜搜相關(guān)改造教程。
然后我們需要把小車(chē)和手機(jī)聯(lián)系起來(lái),通過(guò)藍(lán)牙模塊:

需要使用從機(jī)模塊,最好把波特率設(shè)置為115200,連線如下:
藍(lán)牙模塊 Arduino
Tx -> Rx
Vcc -> 5V
Gnd -> Gnd
1.注意藍(lán)牙的Rx是不接Arduino的,因?yàn)锳rduino只需要接收APP的數(shù)據(jù)而不需要發(fā)送,這樣的話留出的Tx就可以通過(guò)Serial.Print()打印到電腦端的串口助手。
2.當(dāng)然,考慮到一般Arduino都只有一個(gè)硬件串口,這樣串口被藍(lán)牙模塊占用了之后每次下載都需要拔下藍(lán)牙以避免數(shù)據(jù)串?dāng)_,解決辦法是換用軟串口或者換用Mega等不止一個(gè)串口的板子。
3.軟件部分,提供已經(jīng)封裝好的Arduino庫(kù),放到library文件夾后打開(kāi)示例就會(huì)用了

需要自己完成的部分就是,把獲取到的x,y坐標(biāo)轉(zhuǎn)換為小車(chē)電機(jī)的速度,思路是這樣的:
1.假設(shè)我們希望目標(biāo)始終在屏幕中間,那么當(dāng)y坐標(biāo)大于屏幕y最大值的一半時(shí)讓車(chē)有一個(gè)往前的基礎(chǔ)速度V,反 之則是向后的基礎(chǔ)速度-V;
2.如果x坐標(biāo)大于屏幕x最大值的一半,那么讓車(chē)子有一個(gè)旋轉(zhuǎn)速度Vt,反之有個(gè)旋轉(zhuǎn)速度-Vt;
最后賦值給小車(chē)的速度是:左輪 = V+Vt,右輪 = V-Vt,也就是所謂的差速驅(qū)動(dòng)了。


最后給出APP和Arduino庫(kù),見(jiàn)“相關(guān)文件”下載。

  • TraceAPP-Arduino-master.zip
    描述:TraceAPP Arduino源碼
  • traceAPP下載.apk
    描述:traceAPP下載
  • 原文出處.txt
    描述:原文出處

相關(guān)推薦

電子產(chǎn)業(yè)圖譜