Portland State University - Winter 2011
Albert EinsteinECE 479/579
Marek Perkowski
Ben SchaefferGehad ShaatJessie Truong
Nathen UppermanTin Nguyen
Portland State University - Winter 2011
Introduction to Einstein What we did and what we used Image Processing Software management
Outline
Portland State University - Winter 2011
Before After
Portland State University - Winter 2011
Portland State University - Winter 2011
Bluetooth API and implementation Servo controller application Android application (robot remote control)
with voice recognition object and human detection application Text-to-speech Integration of all previously mentioned
component into einsteinBrain Efficient Power system CUDA & TBB base program
What We Did
Portland State University - Winter 2011
IDE◦ Visual studio 2008 (developing C++ application)◦ RobotC (developing NXT application)◦ Appinventor ( developing android application)
Libraries◦ OpenCv 2.2 C/C++◦ .NET C++ Framework ◦ CUDA toolkit◦ NVIDIA Performance Primitives (NPP) library◦ GPU Computing SDK◦ TBB (Threading Building Blocks)
Hardware◦ NXT◦ Maestro servo controller◦ DC motors with Hitechnic controller◦ self-built power distribution system◦ 16 V battery
Subversion for managing resources and documents
What We Used
Portland State University - Winter 2011
Use neural network to improve Einstein's Artificial intelligence
Make him better good looking! replace NXT with a powerful microcontroller more balanced weight of the body improve power efficiency add wireless camera add more sensors & stereo camera replace the neck motor with servo use of CUDA & TBB to improve speed
Future Work
Portland State University - Winter 2011
We did the following processing on images◦ Find colored objects◦ Detect how many beats per minutes for a
drumstick◦ Face detection with area estimation
Image Processing
Portland State University - Winter 2011
Graphical User Interface
Portland State University - Winter 2011
Software Managment
Portland State University - Winter 2011
Android Application
Portland State University - Winter 2011
Load the picture normally Upload to gpu Process image using GPU functions
src = imread("file.jpg", CV_LOAD_IMAGE_GRAYSCALE);GpuSrc.upload(src);cv::gpu::matchTemplate(GpuSrc,GpuTmplt ,GpuDst, CV_TM_CCORR_NORMED);
CUDA & OpenCV
Portland State University - Winter 2011
GPU Vs. CPU
Portland State University - Winter 2011
Lessons Learned
• Power solutions are critical.
• Camera choice is important.
• Organize all SW components early.
• Design for speed!