You are on page 1of 5

WithOPenCV

Seeing
Library
A Computer-Vision
experiment with manystandardcom-
,lPenCV - Intel'sfree,oPen-source
-
Overview
OpenCV puter vision algorithms withouthaving
t lcomputer-visionlibrarY can
simplifycomputer-vision OpenCVis a f ree, oPen-source to code them yourself. Theseinclude
Vgreatly
for C/C++ edge, line, and corner detection, ellipse
p r o g r a m m i n gl t. i n c l u d e sa d v a n c e d computervision library
- facedetection, facetrack- programmers. You can download it fitting, image pyramids for multiscale
capabilrties
Kalmanfiltering, from http://sourceforge'net/proj processing, template matching, various
ing,facerecognition,
(Al) ects/opencvlibrary. transforms (Fourier, discrete cosine,
anda varietyof artificial-intelligence
- in ready-to-use form.In addi- Intel releasedthe first version of and distance transforms), and more.
methods
tion, it provides manybasiccomputer- OpenCVin 1999.Initially, it required
visionalgorithms viaits lower-level APls. Intel'slmageProcessing Library. That High-teve I computer-visionmoduIes
of how dependency was eventually removed, OpenCV includes several high-level
A good understanding
get- and you can now use OPenCV as a capabilities. In addition to face-
thesemethodswork is the keyto
whenusingOpenCV standalone library. detection, recognition, and tracking, it
ting goodresults
l'll tntroduce you OpenCV is multi-platform. lt suP- includes optical flow (using camera
In thisfive-part series,
to OpenCV andshowYouhow to uselt oorts both Windowsand Linux,and motion to determine3D structure),
to implementface detection,face more recently, MacOSX. With one camera calibration, andstereo.
tracking,and face recognition. Then, exception (CVCAM, which l'll describe
later in this article),its interfaces are Al and machine-learning methods
l'll take you behindthe scenesto
these methods platform independent. Computer-vision applications often
explainhow each of
requiremachinelearning or other Al
worksand giveyou tips and tricksfor
Someof theseare available in
gettingthe mostout of them. Features methods.
OpenCV's Machine Learning package.
Thisfirstarticleintroduces OpenCV
l'll tellyou how to get it and give you a O p e n C Vh a s s o m a n Y c a P a b i l i t i e s ,
view
few pointersfor settingit up on your i t c a n s e e m o v e r w h e l m i n ga t f i r s t . lmagesamplingand
comouter. You'lllearnhow to readand Fortunately,you'll need only a few to transformations
It'softenusefulto Process a group
writeimagefiles,capturevideo,convert g e t s t a r t e d . l ' l l w a l k Y o u t h r o u g h a
pixel u s e f u ls u b s e ti n t h i s s e r i e s . of pixels as a unit. OpenCV includes
betweencolorformats,andaccess
data- allthroughOpenCV interfaces. Here'sa summaryof the major interfaces for extracting image
functionality categories in OpenCV, subregions, randomsampling, resizing,
version1.0,whichwas just released w a r p i n g , r o t a t i n g , a n d a PPlYing

.!r at the timeof thiswriting:

lmage and videoI/O


Theseinterfaces
imagedata from
let Youreadin
files,or from live
perspective

Brnary
effects.

Methodsfor creatingand analyzing


binary (two-vaIued) images
imagesarefrequentlY used
video feed. You can also create in inspectionsystemsthat scan for
imageandvideo files. shapedefectsor countparts.A binary
reoresentation when
is alsoconvenient
Generalcomputer-vision and locating an objectto grasP.
ng aIgorithms
mage-p rocessi
(mid-and lowJevd APls) Methodsfor comPuting3D
Usingtheseinterfaces, 1loucan information
Thesefunctionsare useful for
I FIGURE 1.AmongOPenCV's manY I mapping and localization- eitherwith
lcapabilitiesarelace detection (top I
; left), contour detection (top right) a stereorig or with multipleviewsfrom
(bottom). I a sinolecamera.
I and edge detection
62 srnvo01.eoo7
FIGURE 9. Selecting
Math routinesfor image processing, OoenCVheaderfiles
computervision,and image in Windowsto place
interpretation intoa singleinclude
OpenCVincludes mathcommonly directorv.
used,algorithms from linearalgebra,
statistics,
andcomputational geometry. experimental code.
However,the sim-
Graphics plest interfacesfor
Theseinterfaces let you write text face recognition are
anddrawon images. In addition to vari- in this module. The
ous fun and creative possibilities,
these codebehindthemis
functions
areuseful andmark- specialized
for labeling for face
ing.Forexample, if youwritea program recognition, and
that detectsobjects,it's helpfulto label they'rewidelyused
images withtheirsizes andlocations. for thatpurpose.

GUImethods ML containsmachine-learning Customizinga Windows Install


OoenCVincludes its own window- interfaces For Windows users,OpenCVis
ing interfaces.
Whiletheseare limited Theremaining functionalityis con- easyto install, andthe defaultinstalla-
comparedto what can be done on tainedin HighGUl andCVCAM. Bothof tion will work. But a bit of advance
each platform,they providea simple, theseare locatedin a directorynamed planningmay leaveyou happierwith
"otherlibs,"
API to displayimages,
multi-platform makingthemeasyto miss. theresults. Herearea few suggestions.
acceptuser input via mouseor key- SinceHighGUlcontains the basicl/O SinceOpenCVis a developers'
board,and implement slidercontrols. interfaces, you'llwant to be sureyou toolkit - not a program- you may
don't overlookitl lt alsocontains the want to locate it somewhereother
Datastructuresand algorithms multi-platform windowingcapabilities. than your ProgramFilesdirectory. lf
With these interfaces,you can CVCAM containsinterfacesfor you do preferto locateit elsewhere,
efficientlystore, search,save, and videoaccess throughDirectXon 32-bit decidethat beforeyou runthe installer,
manipulate (also Windowsplatforms.
largelists,collections However, HighG UI and enterthat locationwhen asked.
calledsets),graphs,and trees. alsocontains videointerfaces.In this I suggestyou alsodecide- before
article,l'll coveronly the interfaces in installing- how youwant Windowsto
Data oersistence HighGUl. They'resimplerto use,and find the OpenCVdlls.You can either
Thesemethodsprovideconvenient they work on all platforms.lf you're modifyyour system's PATHvariableto
for storingvarioustypesof
interfaces usingWindowsXP or 2000,you may include or youcanmove
theirlocation,
datato diskand retrievingthem later. get a performange boostby switching them.after installing,from OpenCV's
"bin"
Figure1 showsa few examples of to the CVCAM interfaces,but for directoryto your SYSTEM_ROOT
OpenCV's capabilitiesin action:face learningOpenCVthe simpleronesin directory.
contourdetection,
detection, andedge HiohGUl areiustfine. lf you preferto movethe dlls,but
detection. aren'tsurewhereyourSYSTEM-ROOT
InstallingOpenCV directoryis, you can locate it by
Organization Basiclnstall
runningthe sysinfoutilityavailable
www.cognotics.com/utilities.
at

O p e n C V ' sf u n c t i o n a l i t iys c o n - OpenCVfor Linuxor MacOSXis lf you preferto modifythe PATH


tainedin several modules. packagedas a source-code archive. ratherthan movingthe dlls,you can
CXCORE containsbasicdatatype You'll need to build both staticand have the installerdo that for you
"Add bin
definitions. For example, the data shared-object libraries.
You can either by selectingthe checkbox
structures for image,point,and rectan- buildan RPMfirstandinstall fromthat. directoryto PATH."
gle are definedin cxtypes.h. CXCORE o r c o m p i l ea n d i n s t a l li t d i r e c t l y .
alsocontains linearalgebraand statis- Instructions for doing both are in After Installing
tics methods, the persistence func- INSTALL. The OpenCVdirectorycontains
tions,and error handlers. Somewhat The Windowsdownloadis pack- several Thedocsdirecto-
subdirectories.
oddly,the graphics functionsfor draw- aged as an executable that installs ry contains htmldocumentation for all
ingon images arelocated here,aswell. OpenCVwhen you run it. lt places the OpenCVfunctionsand datatypes.
CVcontainsimageprocessing and OpenCVfilesinto a directoryof your Sincethe best documentation is a
camera calibrationmethods. The choice,optionally modifies yoursystem workingexample, you mightalsowant
"samples"
computational geometry functions are path to includethe OpenCVbinaries, to browsethe directory.
alsolocatedhere. and registersseveralDirectXfilters.By The headerfiles you'll need to
CVAUX isdescribed in OpenCV's doc- default, it installsto C:/Program include whenyoucompile programs that
umentation as containino obsolete and Files/OpenCV/<version>. useOpenCVare distributed amongthe
SERVOO1.2oO7
63
1 // Iugclo. c FIGURE 3. Example
program that reads an the librarypath and the namesof the the
3 // Exarele showrng how lo rcrd rnd urlce rmgee
a
imagefrom a file and to use.Thestaticlibraries
staticlibraries ton
s llDcludc "cv.h"
writes it to a second you needto linkto arecxcore.lib, cv.lib,
a llncludt "hrghgur.h" fife in a difterent
? llncludc <ctdlo.h> compressionformat. and highgui.lib.Later,for facerecogni-
tion,you'llalsolinkto cvaux.lib.These
9 lns ulD (lnt !rgc, char'r trqlv) *.hpp. Therewill be "lib"
r0 { are in OpenCV's directory.
11 lplluoc. DIupIag " 9, lots of matches.You
t3 ,// Lord aD r&Efc tron lrlc don't need all of Readingand Writing lmages
la wlordlugc("n!'_rruge. rFg', CV-LoAD-IHAGI-ItNCaN|GED),
them. Headers for all lmage l/O is easywith OpenCV. //
ls r! ( !9InpIE) cvRr
t 6 { modules except Figure3 showsa comPleteProgram
l? lDrlDcl(tcdct!' ifall,ed Eo Load lnpul lMgc\n"),'
18 rcBurD -1;
HighGUl are in listing for readingan image f rom
"include" file and writingit as a secondfile,in a
19 l separate Cok
21 /,/ ntl'.a Ehe rega to c frl,e ttth a drf lcrcnt n.m, directoriesinsideeach differentcompression format.
22 / / usrag a drllerent rMgc lorrut -- .Dng lntgaad of . JPg module.Youcan skip To readan imagefile, simplycall gra
23 1l( ldsrvclugc("nl'_lnage_coF\'.Fng". Plnpl4) )
2{ { headers in the cvLoadlmage0, passingit the filename f ron
"fa1l,ed io *!lcc amge frle\i')i "src" (line14).OpenCV supportsmostcommon
7t
26 l
fprlnl!(grderr. directoriesfor ano
21 these modules.For imageformats, including JPEG,PNG, and Wor
28
29
// Rercnber ro lree rug!
wRel.aschrge(6plDplq),
nrcly rlEer uslng 1E !
HighGUl,you'll need BMP.Youdon't needto provideformat
30 highgui.h,locatedin information. cvLoadlmage0 determines two
31 rrgurD 0;
32 otherlibs/highgui. fileformatby readingthe file header. sou
To write an image to file, call It w
Althoughyou don't cvSavelmageQ. This function decides
OpenCVmodules.
needto do this, I liketo gatherthem
with
Programming whichfile formatto usefrom the file tma
togetherintoa singleincludedirectory. SomeBasics
OpenCV: extension. In this example,the exten-
"png,"
freq
On both Linuxand Windows,you sionis so it willwritethe image call,
canlocatethe headers the
by searching More about Headersand Libraries datain PNGformat. oflg
for
installdirectoryand subdirectories MostOpenCV programs needto Both cvLoadlmagefl and
filenames that matchthe pattern*.h, Later,
cv.hand highgui.h.
include for cvSavelmagefl are in the HighGUl Hov
face recognition, module.
t // Crpcur..c we'llalsoinclude Whenyou'refinished usingtheinput sta
2 //
3 // Eraralc ahowlDg lrow co coDtect to a wcbcs tnd caplura cvaux.h. The imagereceived fromcvLoadlmagefl, free orig
t
a
t
// vidco frG!
remaininghead- it by callingcvReleaselmageQ, as on line
€ llacluda 'eidro.h"
"srr1ng.h"
er filesareinclud- 29. Thisfunctiontakesan address of a tron
? llDcludc
0 alacludc ncv.h" ed by these pointeras its input because it doesa fiel
"!:rghgur . h" "safe
t fiDcludc
topJevel headers. release."lt freesthe imagestruc-
!lln! u1D(LDE r!gc, chu " r!gr) lf you'veleft tureonlyif it'snon-null.Afterfreeingit, it . W
t2(
13 CvcrDtule ' pcrpEurc . oi the header files setsthe imagepointerto 0.
l. fDllugc r pvid.oP!@ - oi
in multipledirec- .H
16 ins li
t6 chr! llleD.E[50]; tories (defa ult Live Video Input
18 // Inrtralrz! vldco crptura installation), Capturingimageframesfrom a
19 pcrpEule - cvclplurcfrotrllll CV_CAP_IIY
20 tl( lpcrDBurc !
),
maKe sure your webcam,or otherdigitalvideodevice, ind
22 "!arJ,ed cc lnrcr!Irze Tldeo caFtur?\n"1,'
c o m p i l e r ' s is nearlyas easyas loadingfrom file. exa
fprltrE!(9Bdc!!,
23 lcEula -1; includepath con- Figure4 showsa completeprogram cha
2a )
tainsthesedirec- listingto initialize framecapture,cap-
25 // CaDEure tlrlcc vl,deo l!s9 aad x!l'!c th.n a5 llLes
tories. lf you've ture and store severalvideo frames, 'n(
21 !o:(1-0; 1<3, 1++)
23 { gathered the and closethe caotureinterface. four
29 - cvgqclyFre( );
30
Dvr,daoFre
1l( lDvld.oFre )
!Capsu!!
headersinto one Thecapture interface on
isinitialized, pte
32 fPllagl(gtdar!' 'farLed ic gcl a vrdcc f:anc\r")i
includedirectory. line19,by callingcvCaptureFromcAMQ. inte
33 1 make sure that This functionreturnsa pointerto a pixe
3l
35 // ntLtc lhc cap!u!.d vrdco trlG a! an lroge llle directory is on CvCaoture structure. You won't access Gra
"vrdeoFrlRtd.tpg',
36 rD!1nE! (f1lene.
(ttla!.c, pvldQofre)
1.1);
y o u r c o m p i l e r ' s thisstructuredirectly. you'llstore
Instead,
3? 1! ( lcvsrvcfugc )
3 r (
"fal}ed
include path. the pointerto passto cvQueryFramefl. Acc
39 lDri'aE!(gEde!!, io w.t!e lmage frle is\r", lll'cntr),
a0 l Your linker Whenyou'refinishedusingvideo
tl
a2 fUPORTANT: Don'! rclcase or rcdlly ihc r@gc ..curncd
will need both input, call cvReleaseCapture() to ope
//
a3 // froE cvQuclyFlcG(l ! releasevideo resources.As with exa
aa
a5
l FIGURE 4. Example cvReleaselmageQ, you passthe address gra
program that
a6
a?
// tcr&inaEe
wRclcarecapturc
vrdco crplura
( EtfrDtule
and !!ce captula lelourcel
captures live video of the CvCapture pointer to seri
,,
t3 frames and stores cvReleaseCapture( ). prx
at lrEuln 0;
them as files. Don'trelease or otherwisemodifv they
64 senvoor.eooT
the lpllmageyou receivefrom cvQueryFrameQ! lf you need ers and other high-levelconstructs.All pixel-level
calculations
to modify image data, createa copy to work with: are performed inside OpenCV functions. However,if you
write your own image-processing algorithms,you may need
// Conv 'l.e '-ideo f-ame
-n -
to accessraw pixelvalues.Hereare two ways to do that:
lnl /m:^6 md'L^l hrh^6

cvclonelmage (pVrdeoFrame ) ;
1. SimplePixelAccess
/ [nqart rzorrr im:ao-nrnna<<inn nnr]o horo The easiestway to read individualpixelsis with the
cvGet2D0 function:
// l.YoF rha enmr:ftsa .r usrng rL
cvReleaselmage ( &plmgTochange ) ;
CvScalar cr,Get2D(const CvArr*,
int row, int col);

Color Conversions
Figure5 showscode for convertinga color imageto Thisfunctiontakesthreeparameters:
a pointer
to a datacon-
grayscale.OpenCVhasbuilt-insupportfor converting to and tainer(CVArr*),andarrayindicesfor row andcolumnlocation.
from manyusefulcolormodels, includingRGB,HSVYCrCb, Thedatacontainer canbe an lpllmage structure.
Thetopmost
and CIELAB. (Fora discussion of color models,see "The rowof pixels
is row=0,andthe bottommost isrow=height-1.
Worldof Color,"SERVO Magazine,November 2005.)
Notethat the conversion function,cvCvtColorQ,
requires The cvGet2Dflfunction
returnsa C structure,CvScalar,
two imagesin its inputlist.Thefirstone,pRGBlmg, is the definedas
sourceimage.Thesecond, pGraylmg, isthedestination
image.
It willcontainthe conversion
resultwhencvCvtColoO returns. r\modof cf F,-ts CvScalar
Because thisparadigm of passingsourceanddestination {
double val l4l ;
imagesto a processing functioniscommonin OpenCV, you'll l

frequently needto createa destination image.On line25, a CvScalar;


callto cvCreatelmageQ creates an imagethe samesizeasthe
original, pixeldata.
with uninitialized The pixelvaluesfor each channelare in valIi].For
grayscale
images,val[0]containspixelbrightness. Theother
How OpenCVStoreslmages threevaluesare set to 0. Fora three-channel,BGRimage,
OpenCVstoresimagesas a C structure, lpllmage.IPL green:val[1
blue:val[0], ], and red=val[2].
standsfor lmage Processing Library,a legacyf rom the The complementary function,cvSet2D0,allowsyou to
originalOpenCVversions thatrrequiredthisproduct. modifypixelvalues.lt's definedas
Thelpllmage datatype is definedin CXCORE. In addi
tion to raw pixeldata,it containsa numberof descriptive 1 / / ConvelrToc:ay.c
2 //
fields,collectively
calledthe lmageHeader. Theseinclude 3 // Exanple rhowtno how !o coDverg an lroge lroB color
{ // to grayscale

. Width- lmagewidth in pixels 6 lrncj,udc "sid:.. tr'


? fiDcludc "sir:rq.h'
g tiDclude "cv.:."
. Height- lmageheightin pixels 9 llncluda ":rg:aqer . hn
t0
1l iDt. uiD (1nt r!gc. chlrrr rrgv)
. Depth - One of severalpredefinedconstantsthat
13 Ipllngc r pRGBIq : O.
indicatethe numberof bits per pixelper channel.For lr lpllmge r pcraylq - 0,
example,if depth:lPL_DEPTH_8U, data for each pixel
16 / / Lo.d the RGB rBge lron llle
channelarestoredas eight-bit,unsigned
values. 17 pRGBIT{ - flLordlDge("n}'_rege.jpg", CI/_LOAD_II|AGE_UNCHAIIGED} ;
l8 rt ( TpRGBIE)
19 {
. nChannels - Thenumberof datachannels (fromoneto 2 0 tprlDc!(3cdc!!, 'faaled ro l,oad rnpuc rroge\nnli
-l;
four).Eachchannel onetypeof ptxeldata.Forexam-
contains 2f rctuln

ple,RGBimages havethreechannels- red,green,andblue 2 3


2a // Allocare rhe glayccalc rruEe
(These
intensities. aresometimes
calledBGRimages, because 29 pcrayllg - cvcreatclBge
pixeldata are storedas blue, green,then red values.) 26 ( wsize(pRcBlne->w1dch, pRcBtne->hc:ghr). pRcBfEg->depth, 1 t t

Grayscaleimagescontain
onlyonechannel - pixelbrightness.22 E; // Convetc rE Eo grrygcale
29 cvcvtcolor(pRGBIry, pcraylng, CI/_RCB2GRAy)t

AccessingPixelValues 3l / / Wrlre tre g:ayrcalc rruge ro a f tl.e


It'spossible
to createmanytypesof functionalityusing 33 23 i!(
{
lcvsavaf@ge("n.'_rnage_graj..tFg", pcr.yl4) )

OpenCVwithout directlyaccessing raw pixeldata. For 3 { !p!tnt!(sgde!r. "falIed !c r:lEe lnage flie\i")i

example, the facedetection,tracking,


and recognitionpro-
gramsdescribed laterin this 31 /,/ Ftec r@ge rcnolt'
38 cvRclcrrcfDqc ( 6pRGBIE0) ,.
seriesnevermanipulateraw FIGURE5. Example 39 cvRcleasclugc (6pcraylDo) t
pixel data directly.Instead, programfor convertinga { 0
theywork with imagepoint- colorimageto grayscale.il4 2 t return c,'

01.e007
SERVO 65
if your imagedata are
needto castthe data type. Forexamp|e,
input type),you,dcasteach
unsignedbytes(the most common using'rt'
Sourceforgesite or oth.erwise
opcncvllbrary ao unsignedchar* beforeassigning'
'" "lilou;;accessing
,.iri "a
trttp:/ / sourcctots c.nd I Wolccls I outt ttorn grlyscate (single-channel)
is eightbits (one byteper pixel)'
OfficialOPenCV usergrouP-^ imaoe,and the datadepth
grouqI OpcnCV with
http:/ /tcch. groupr'yatrooromI yorid u...tt PixelIrow][col]
OpenCVWiki
nct pixelIrow] Lcoll = ((uchar*)
lrttp://opcncvllbrary'courcctorgc' (PImg->r-mageData +
in thisarticleareavailable aela*prmq-twidthstep + col) );
Sourcecode for the Programlistings | *nlo
for download at wrrwr'cognotlcs'com/opcn€1 images'channelvalues, are interlaced'
In multi-channel values:
to "-tt" blue'green'and pixel
a codesnippet
Here's
red
row' rnt cort
void cvSet2D(CvArr*, int
Cvscalar) ;
qrpn - olmq->wjdthscep;
nchan = Plmg->nCharulels;
/l = 3 for a BGR image
2. FastPixel Access
-'' = Plmg->imageData;
ul9 easy to use' buf
afihough cvGet2DQand cvSet2D0
a few pixelvalues'ano
if you want to accessmore than directly
b l u e l r o w l I c o ] .I =
( (uchar*) (buf + row*widthsteP
+
oerformance matters,you'll want to read values nChan*col);
imageData
" ,f.r.raw databuffer,lpllmage
i.rn :- -^.., greenIrow] [col] =
asa 1Darray'In row- +
ftuq. datarnthe bufferarestored ( (uchar*) (buf + row*widchsceP
rowarelisted
values'llT.1':ti tt66u.'*69] + 1);
r.j;; ;'A; ilat rs,alfpixel row' and so on' redIrow] lcoll =
second
iitti, torfo*.d by pixelvaluesin the
+
( (uchar*) (buf + row*widthstep
pixel data are aligned' and
For performantt'*tont' four-byte
nchan*col + 2 ) ;

padded if necessary,sothateachrowstartson aneven


widthStep'indicates the eight bits (for
ililil. n t..ona field, lpllmaqe Finally,if imagedepth is greater,than
each row'spixel
data That
numberof bytesbetweenihe of
start needto,lt:ntft' multiple
+ .rurpi.,'ipL-oepin-:ii;, youid.
iilr."* r starisat lpllmageimageData i*lpllmage'widthStep' the buffer offset by
char*'so you may [vi.r"tor. eacr' uatueanO'muttipty
is definedas type imagedepth.lt's very
lpllmage.imageOata iti.-nrru"|. of data bytesfor your
however, that iou'll encounter a situationin which
unlikelv,
multi-byte pixelvalues dtrectty'
uo, tutt access
rreenulnnlncROBOTT HelP
Finding
tcRvot!
tulTllotlT ||ing,or':':9,Oj:::,Y'
insta
lf youhaveproblems :::::tJ
'"t:l
r't!";la 1f:: ::::: :::fY
ptr."i"";r;;'LIr."rp
il;ffi.;;;v.ir,"lilsralLrile'attheroot ?r-v"i:9fl:Y
il;;,-;lt; containshelpfulsetup and troubleshoottng
question'you maywant to
toi ri ihesedon't answeryour
officialYahoolusergroup Thesroup's
il;,; ;*" io the
Unl it in the Resources sidebar'
API documentation for eachmoduleis in the docs/ref
the one for
,rUjil.t.y All referencemanualsexcept
from index htm' in the docsdirectory'
AV;Ui are'linked
ion. and steeringwith
P :fli i:;:)'#J:i
[:ffi;:,t ! * I:?lr'"":
L5!i3 "::# ComingUP...
;" o:;:1"' &;" ;i'i.' o
oto
ry:I:dUsed
l'.si:: to detect faces with
inimanv
l"ii Next month,l'll show You how
;fi;;; tiiing'iorn dualspeedcontrol.
joystick OpenCV and exPlainthe algorithmbehindthe interface
Be
successf robotsSingle
uI competitive ?p:r,t^*l:,:3 seeingYouI
;::,:#;il.r[iJ,o'*""Y'^,::-:::^?.'l:T:li::ti:[;
s' "
direction
i.il ;';;;l'"il'" opoo'ite
:ff ?:tY::: :'::
;;iiil v ' r r v - - / proportronal,.
P U J ' L ' v " Jvlomptetetv ' l':s:: llf,-'*::ffi"::
io Compatiblewith Syro
your Futaba,JR,Hitec,o t . t i r n i l u tr a d^^!
nd u^m^p-"izac arrailahrl€.
#;;;tir'i)ui i" "' o
vu'r us vortu T l::::"']i*': and robotics'sle las wo*ed asa
picturedabove' ;;:;:,:;";';;;;;;;;;i";
i'n" ndrn+ze55v 75A per motorunit b;aow' and
at Evotution,Robotics
A;;:;;;r;t";-xs,nii researchgroup at UC
www.vantec.com is a memberof 5o(3),""'oipii'-ution
';;;;;;. or sodavistoaan
sh; is-ii"'i'tii oisinat devetopers

lfr
66 sgnvo01.eoo7
experimental ro(;"''""ognii6n -
i[aavision was buittwtthoPnCV'
tytt"' at lJc san Diego'

You might also like