280 likes | 420 Views
Big Dog’s Kryptonite controlling a RC car over a network. James Crosetto BS (Computer Science and Computer Engineering) Jeremy Ellison BS (Computer Science and Computer Engineering) Seth Schwiethale BS (Computer Science). what to expect. project objectives requirements/specifications
E N D
Big Dog’s Kryptonitecontrolling a RC car over a network James Crosetto BS (Computer Science and Computer Engineering) Jeremy Ellison BS (Computer Science and Computer Engineering) Seth Schwiethale BS (Computer Science)
what to expect • project objectives • requirements/specifications • design issues/technology
project overview • expanding the range of a remote control car • control car over network, similar to a printer • be able to have first person view of car’s location
Functional Objectives • establish connection between rc car and driver’s computer • get real time visual feed • control rc car • user friendly GUI • backtracking (retracing to reacquire lost signal)
establish connection • between rc car and user’s computer • TCP/IP protocol suite • connection oriented • reliable • sockets • what are they?
real time video feed • IP camera • video stream • wireless interface • linux kernel • Axis® RTSP • control protocol for media server • “play” and “pause” type of commands • control of media stream properties (bit rate, res, etc…)
IP Camera • Power: 5.1 V DC, max 3.5 W • Alarm output (motion, audio, external) • Open API for software integration • CPU, video processing and compression; • Ram: 32 MB • Flash: 8 MB
with ip camera tcp/ip
controlling car • commands sent from user’s computer to camera • camera relays signal to microprocessor • microprocessor sends translated signal to car
client/server • single connection • server on camera – C • client on user’s computer – Java
sockets in C • create socket intsocket_descriptor; socket_descriptor = socket(AF_INTET, SOCK_STREAM, 0);//domain, type, protocol) //0 = IPPROTO_TCP for AF_INET, SOCK_STREAM • bind socket to port structsockaddr_in address; address.sin_family = AF_INET; address.sin_addr.s_addr = INADDR_ANY; address.sin_port = htons(7000); bind(socket_descriptor, (structsockaddr *)&address, sizeof(address)); • listen for connections listen(socket_descriptor, 5) //there can be up to 5 connections pending, >5 timeout error • accept connection intaddrlen; structsockaddr_in address; addrlen = sizeof(structsockaddr_in); new_socket = accept(sock_descriptor, (structsockaddr *)&address, &addrlen); if(new_socket<0) perror(“Accept connection”);
RC car servo • 3 Leads: • Ground • Vcc • Pulse width modulation
Square Pulse wave of 1.0-2.0ms repeats every ~20ms Width of pulse determines the position of the servo with 1.5ms as the normal center The amplitude of the pulse is from the reference level to the Vcc Vcc = 4.6-6.0V RC car servo Pulse Width Modulation
IP Camera – I/O • 4-pin I/O terminal • 1 transistor output • Max load of 100mA • Max voltage of 24V DC • 1 digital input • Can be activated or left floating • Auxiliary power and GND • Max 5V DC, 2.5W • Connector for main power • Power to auxiliary equip, Max 50mA
microprocessor • Receives signals from the transistor output of the IP camera • Translates the signals • Sends translated signals to steering box and speed control • Programmed with C and Assembly • Written, debugged, tested using CodeWarrior and a Dragon12 development board
Backtracking • Every time the IP camera receives a command, it stores the command in memory • If a connection is lost, the camera sends signals to the car to make it backtrack • If a connection is reestablished, backtracking stops
GUI • processing • can communicate directly to RTSP server on camera • have an instance of a client