2013-04-22 116 views
3

我想控制基於Arduino的和通過WIFI PC的IP攝像頭的小機器人,但我現在已經被瀏覽互聯網相當長的一段時間,我仍然不確定如何設置它。IP攝像機設置和控制從C++應用程序

我認爲具有機器人上的WIFI路由器如this one,通過以太網連接到一個Arduino,這將控制電機,並且還經由WIFI連接至IP motorised camera旁邊(我無法找到這樣一個小有幾個端口的路由器)。我會將筆記本電腦連接到由此路由器廣播的網絡(我無法使用我學校的網絡)將命令發送到相機或arduino,並從相機中檢索視頻。

現在,我到處找,但怎麼也找不到,我可以用相機從筆記本電腦上的(C++/QT/Windows)中我的客戶端應用程序界面? OpenCV聽起來適合直播,但它的電機呢?

+0

我會尋找像PELCO更簡單的PTZCameraWrapper的東西,但我認爲它是特定於他們的網絡和相機:http://pdn.pelco.com/content/continuous-panning – 2013-05-01 11:15:13

+0

不清楚是什麼被問到這裏。看起來像一個很酷的項目,但其中很多可能與這個問題無關。也許你應該把它分成兩個問題,一個用於網絡連接,另一個用於控制攝像機。正在使用C++ API尋找相機,或者尋找您鏈接的相機的API? – 2013-05-01 13:32:55

+0

感謝您的回答。你是對的,我至少應該堅持最微妙的方面:我已經有相機(上面鏈接的模型),並有一個很好的軟件甚至網站訪問相機,但我想有一個API來控制相機並從中檢索視頻。 OpenCV已經存在檢索視頻,但我不知道如何控制電機......它應該像檢索視頻一樣傳統,不是嗎? – 2013-05-01 16:58:14

回答

1

Got it!我用WireShark嗅探了用攝像頭建立的通信端口(用「HTTP端口99」過濾了捕捉),並發現HTTP請求「/decoder_control.cgi?command=0」,「/decoder_control.cgi?command=2」等。在從我的瀏覽器發送它們之後:「192.168.1.99:99/decoder_control.cgi?command=0」等等,結果這個IP攝像機的命令與this address的命令相同,它就像一個魅力!

這太糟糕了,雖然是速度不能調整(它的成立在設置,也許我可以動態地以同樣的方式改變它的值),但是這是一個開始。

感謝您在任何情況下你的幫助,保持良好的工作,這是迄今爲止我最喜歡的專業論壇。

2

這是不完全清楚你正在嘗試做的(如範圍細節;也就是點正在建設的硬件或使用硬件),什麼硬件,你已經有(如你已經擁有的機器人等。 ),以及你的經驗水平。

如果你說的帶攝像頭的移動機器人,我建議採取看看Scribbler/Fluke組合(鏈接指向早期版本的兩個 - 在最近的版本是更全面的功能),無論是對一個解決方案或想法以及您可以構建的示例代碼。

文人/福祿使用藍牙與主計算機進行通信,並在Fluke具有用於成像的車載照相機。範圍是@ 100米。福祿克公司運行一個Linux版本,因此可以處理視頻和許多其他操作。

+0

謝謝你的回答。讓我澄清一下,然後:我試圖通過WIFI在筆記本電腦和PTZ攝像機(上面鏈接的模型)之間通過嵌入式WIFI路由器(上面鏈接的模型)進行通信。由於涉及的數據速率和範圍(> 100m)而沒有藍牙。機器人由幾塊板子組成(其中包括arduino),這些板子很快就​​會被買下;我現在只有相機,但這通常足夠了。最後,我正在完成我的機電一體化工程研究,曾在一家着名汽車製造商的電子產品部門以及全國電力供應商的C++編程中工作。 – 2013-05-01 16:53:44

+0

如上所述,我正在尋找一個用於控制攝像頭電機的API(從中檢索視頻似乎是OpenCV的優雅之處),或者幫助我自己做到這一點。它似乎基於HTTP協議,我應該提到我只有它的概念。 – 2013-05-01 17:02:16

2

IP攝像機不需要連接到Arduino軟件。有時候最好使用最簡單的解決方案來獲得好的結果。我在我的一個機器人上做了同樣的事情,並且我將網絡攝像機與Arduino網絡分開運行,這樣我就可以使用具有自己應用程序的攝像機的所有功能。 可以從定製的應用程序運行機器人,該應用程序還可以在同一應用程序的單獨窗口中啓動相機應用程序。通過這種方式,您可以控制運動電機,並在應用程序的窗口中託管相機軟件並統一客戶體驗。只需處理您的控件和顏色即可調和表單的佈局。 你可以找到更多的參考如何編碼它herehere開始。

+0

這是一個很好的觀點,我實際上打算這樣做,但是來自統一的自定義界面。目標是用除屏幕上的按鈕之外的其他東西來控制電機,所以我必須找出自己發送信號的方式。 – 2013-05-06 22:25:06

+0

@MisterMystère,我詳細闡述了我的原始答案,以便爲您提供一些有關如何實現目標的參考。看看答案的第二部分。 – FeliceM 2013-05-07 16:00:24

+0

謝謝,即使我找到了一條途徑,並且因爲這些鏈接是針對C#應用程序的,所以它仍然是我沒有想到的替代方案,如果應用程序沒有辦法處理,我可以稍後使用它。另外,你在信譽的早期增長,所以我很高興爲你獎勵這個賞金:) – 2013-05-07 23:03:59

1

我會用OpenWrt閃存的路由器作爲您的機器人通信中心。從這裏你可以直接連接IP攝像機,併發送串行命令到你的Arduino進行控制。

您將可以使用OpenCV直接連接到IP攝像機流。

我還會寫一個小型的小型服務器,作爲路由器上的後臺服務運行。這個服務器將負責發送串行命令給arduino來控制機器人的電機。總而言之,這將需要幾個軟件:arduino代碼來解釋串行命令到H橋的電機控制,一個服務器(python會很容易)接收tcp數據包(或標準web請求)並轉換信息傳輸到串口,你的gui接口從IP攝像頭載入當前圖像(它看起來像你已經想出的那樣),以及一個到服務器的TCP套接字連接來執行電機的命令和控制。

+0

謝謝,這是一些非常有價值的建議。這樣可以避免在Arduino上使用以太網屏蔽,這意味着成本更低(我的時間在我的緊張預算中沒有考慮到)。我更關心如何在實踐中控制相機的電機,但它仍然回答我的問題的一部分(我同意它由兩個組成):) – 2013-05-07 23:01:01