Форум обсуждения систем  

Вернуться   Форум обсуждения систем "Умный дом", проектов Ардуино, OpenWRT и других DIY устройств > Форум умного дома > Сделай сам > Робототехника

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 23.09.2013, 21:36   #1
zuluss008
Junior Member
 
Регистрация: 23.09.2013
Сообщений: 1
Вес репутации: 0
zuluss008 is an unknown quantity at this point
По умолчанию

Я тоже делаю похожего робота, только на гусеничном ходу.
Вы web-морду на чём делали?
На javascript\ajax или php? (или на том и другом вместе)?
можете показать код странички?
В браузере не проблема поток с камеры показать. А вот во внешнее
приложение, например C++ (вы на первой странице упоминали opencv)
у вас получилось поток передать?
Я пока на этом этапе застрял....
zuluss008 вне форума   Ответить с цитированием
Старый 24.09.2013, 10:36   #2
filinmd
Senior Member
 
Регистрация: 18.09.2012
Адрес: Moscow
Сообщений: 157
Вес репутации: 0
filinmd is an unknown quantity at this point
Отправить сообщение для filinmd с помощью ICQ
По умолчанию

Цитата:
Сообщение от zuluss008 Посмотреть сообщение
В браузере не проблема поток с камеры показать. А вот во внешнее
приложение, например C++ (вы на первой странице упоминали opencv)
у вас получилось поток передать?
Я пока на этом этапе застрял....
Я пишу софт для своего "робота" ( Досталась RC машинка без пульта. Решил сделать пульт на arduino + mr3020) на Adobe Air под Android и нашел на просторах интернета примеры для работы с потоком MJPEG. Это конечно не C++, но тоже может быть интересно. Правда задержка картинки большая получается.

PHP код:
package 
{  
    
import flash.display.Loader;  
    
import flash.events.Event;  
    
import flash.events.ProgressEvent;  
    
import flash.net.Socket;  
    
import flash.utils.ByteArray;  
    
    
//import mx.utils.Base64Encoder;  
    
    /** 
     * This is a class used to view a MJPEG 
     * @author Josh Chernoff | GFX Complex 
     *  
     */  
    
public class  Main extends Loader  
    
{  
        private var 
_user:String;                                   //Auth user name  
        
private var _pass:String;                                   //Auth user password  
        
        
private var _host:String;                                   //host server of stream  
        
private var _port:int;                                      //port of stream          
        
private var _file:String;                                   //Location of MJPEG  
        
private var _start:int 0;                                 //marker for start of jpg  
        
        
private var webcamSocket:Socket = new Socket();             //socket connection  
        
private var imageBuffer:ByteArray = new ByteArray();        //image holder  
        
        /** 
         * Create's a new instance of the MJPEG class. Note that due a sandbox security problem, unless you can place a crossdomain.xml  
         * on the host server you will only be able to use this class in your AIR applications. 
         *  
         * @example import MJPEG; 
         *          var cam:MJPEG = new MJPEG("192.168.0.100", "/img/video.mjpeg", 80); 
         *          addChild(cam); 
         *           
         * @param   host:String | Host of the server. Do not include protocol  
         * @param   file:String | Path to the file on the server. Start with a forward slash 
         * @param   port:int    | Port of the host server; 
         * @param   user:String | User name for Auth 
         * @param   pass:String | User password for Auth 
         */  
        
        
public function Main ():void {
            
MJPEG("192.168.1.99","",8888);
        }
        
        public function 
MJPEG (host:Stringfile:Stringport:int 80user:String nullpass:String null )  :void
        
{  
            
_host host;  
            
_file file;  
            
_port port;  
            
_user user;  
            
_pass pass;  
            
            
webcamSocket.addEventListener(Event.CONNECThandleConnect);  
            
webcamSocket.addEventListener(ProgressEvent.SOCKET_DATAhandleData);  
            
webcamSocket.connect(hostport);  
            
        }  
        
        private function 
handleConnect(e:Event):void   
        
{  
            
// we're connected send a request  
            
var httpRequest:String "GET "+_file+" HTTP/1.1\r\n";  
            
httpRequest+= "Host: localhost:80\r\n";  
            
/*  
            if(_user != null && _pass != null){ 
            var source:String = String(_user + ":" + _pass); 
            var auth:String = Base64.encode(source); 
            httpRequest += "Authorization: Basic " + auth.toString()+ "\r\n";   //NOTE THIS MAY NEEED TO BE EDITED TO WORK WITH YOUR CAM 
            } 
            */  
            
httpRequest+="Connection: keep-alive\r\n\r\n";  
            
webcamSocket.writeMultiByte(httpRequest"us-ascii");  
        }  
        
        private function 
handleData(e:ProgressEvent):void {  
            
//trace("Got Data!" + e);  
            // get the data that we received.  
            
            // append the data to our imageBuffer  
            
webcamSocket.readBytes(imageBufferimageBuffer.length);  
            
//trace(imageBuffer.length);  
            
while(findImages()){  
                
//donothing  
            
}  
            
            
        }  
        
        
        private function 
findImages():Boolean  
        
{  
            
            var 
x:int _start;  
            var 
startMarker:ByteArray = new ByteArray();      
            var 
end:int 0;  
            var 
image:ByteArray;  
            
            if (
imageBuffer.length 1) {  
                if(
_start == 0){  
                    
//Check for start of JPG  
                    
for (ximageBuffer.length 1x++) {  
                        
                        
// get the first two bytes.  
                        
imageBuffer.position x;  
                        
imageBuffer.readBytes(startMarker02);  
                        
                        
//Check for end of JPG  
                        
if (startMarker[0] == 255 && startMarker[1] == 216) {  
                            
_start x;  
                            break;                    
                        }  
                    }  
                }  
                for (
ximageBuffer.length 1x++) {  
                    
// get the first two bytes.  
                    
imageBuffer.position x;  
                    
imageBuffer.readBytes(startMarker02);  
                    if (
startMarker[0] == 255 && startMarker[1] == 217){  
                        
                        
end x;  
                        
                        
image = new ByteArray();  
                        
imageBuffer.position _start;  
                        
imageBuffer.readBytes(image0end _start);  
                        
                        
displayImage(image);  
                        
                        
// truncate the imageBuffer  
                        
var newImageBuffer:ByteArray = new ByteArray();  
                        
                        
imageBuffer.position end;  
                        
imageBuffer.readBytes(newImageBuffer0);  
                        
imageBuffer newImageBuffer;  
                        
                        
_start 0;  
                        
0;  
                        return 
true;  
                    }  
                }  
            }  
            
            return 
false;  
        }  
        
        private function 
displayImage(image:ByteArray):void  
        
{  
            
this.loadBytes(image);  
        }  
        
    }  
    

filinmd вне форума   Ответить с цитированием
Старый 30.09.2013, 09:57   #3
mirror13
Junior Member
 
Регистрация: 30.09.2013
Адрес: Санкт-Петербург
Сообщений: 2
Вес репутации: 0
mirror13 is an unknown quantity at this point
По умолчанию

Доброго времени!

Хочу начать собирать робота по вашей схеме. Сразу скажу, что опыта в этом деле нет. Детали из списка уже заказываю, но не понятно пока: какими должны быть конденсаторы, резистор и спикер?
mirror13 вне форума   Ответить с цитированием
Ответ

Метки
сделать робота дома, робот, робота свими руками, robot, как сделать робота, платформа для робота


Здесь присутствуют: 5 (пользователей: 0 , гостей: 5)
 
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 09:31. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: zCarot
Яндекс.Метрика