Nick Harezga Jeremy Thornton Matthew Wozniak Overview Objectives Requirements Design Implementation User Interface Interfaces & Communication Arduino Robot Algorithms ◦ Vision Risks Multidisciplinary Aspects Testing Costs The primary goal of the project is to allow a user to control a robot using their “gaze” (which in this case is specified using a laser pointer). To do this we need a few components A robot which can move freely about a room A system to determine the location of a user’s “gaze” A method of locating the robot relative to the user’s gaze A way for the user to control when the robot moves Creation of a system capable of detecting a robot’s location relative to a target destination ◦ Also able to transform this information into discrete instructions Construction of a robot capable of wirelessly receiving and executing movement instructions Intuitive user controls with next to no learning curve The robot should be able to operate in a variety of indoor environments within a field large enough to be considered useful Accuracy Longevity ◦ The robot should be able to move to within a “tennis ball area” of the laser target location ◦ An hour of regular use ◦ Up to the maximum longevity of the Asus EeePC battery on standby (approx 9 hours) Area of Operation Reliability Simplicity Portable ◦ Operate from up to 8 feet in front of the camera (large portion of a standard room size) ◦ System functions properly under various lighting conditions ranging from full daylight to artificial lighting at nighttime ◦ 2 button user remote ◦ Simple calibration and setup procedures The project consists of 5 primary components: Computer Robot (mounted with a calibration point) Scene Camera Wireless Module User Control Module Computer: Asus EeePC 1000HE Vision algorithms: OpenCV in Python Robot control: Arduino Pro Mini 3.3V 8MHz Communication: Xbee 1mW Wireless Modules User Input: FT245RL USB to FIFO Module Control ◦ Laser targeting device (red laser pointer) ◦ Wired 2-button remote Connected via USB to the PC Status LEDs to report current activity Diagnostics ◦ Robot status LEDs (error, command in progress, etc.) PC Robot ◦ Handled via Xbee transparent mode Wireless serial link Tested and confirmed functional between PC and Arduino Human perceivable latency in loopback test program is negligible ◦ PC serial communication via PySerial library (Python) PC User Remote ◦ FT245LR USB to FIFO Serial communication (TX0 and RX1) External Interrupts PWM signals to Ardumoto motor shield ◦ Wheel encoders on pins 2 and 3 ◦ Pins 5 and 6 via analogWrite() function Sets a duty cycle from 0 to 100% based on the value in [0,255] Voltage supplied to motors varies directly with the duty cycle Alternatively, digital writes can be used to simply turn motors on and off if speed control becomes unnecessary ◦ Direction bit on pins 4 and 7 – logic HIGH or LOW Status LEDs 4 digital pins remain available ◦ Pins 8 and 9 – logic HIGH or LOW Constructed using Legos ◦ Lego motor spec @9V Weight No load Stalled Load Max RPM 42g 3.5mA 0.36A 0.12A 360 Motors will be driven by the Arduino through the Ardumoto motor shield Reflective wheel encoders used for turning and distance tracking Main loop: ◦ Read inputs from user control ◦ Capture locations of robot and laser target via scene camera Un-distort image Determine location of laser target Determine location and orientation of robot ◦ Calculate path of movement for the robot ◦ Robot movement: Update velocity vector Recalculate position Optionally recapture positions using scene camera for adjustments ◦ Each stage has error correction and diagnostic output for debugging purposes Camera is extremely important ◦ We are using the Logitech Pro 900 ◦ 1600x1200 max resolution Un-distortion ◦ OpenCV has built in functions for detecting and removing camera and perspective distortion Robot orientation and location ◦ Easily distinguishable and unique shape on the top of the robot (“calibration point”) Laser target detection ◦ Convert image to HSV and filter Robot accuracy ◦ Largely reliant on algorithms and wheel encoder resolution Detection of robot orientation and position Longevity requirements ◦ 3.7V Li-Ion 2000mAh Arduino – Idle: 6mA (measured), Active: 12mA Xbee – 55mA (measured) Ardumoto – 36mA (rated Icc max) ◦ 7.2V NiMH 3000mAh Motors – 0.12A each under load Computer Science ◦ Interpreting results of computer vision algorithms into both diagnostic information and discrete instructions Imaging Science ◦ Image normalization, interpretation and point detection Computer Engineering ◦ Command encoding and communication as well as microcontroller software Electrical Engineering ◦ Motor control, button debouncing, battery concerns and circuitry Mechanical Engineering ◦ Robot weight and design Subsystem/Component Testing ◦ Scene camera ◦ Detection algorithm ◦ Communication Wireless Arduino to Xbee PC to Xbee ◦ Arduino Command interpreting Pin output Do other pieces of hardware work with the output? Subsystem/Component Testing ◦ Robot Battery life Movement Straight line and turning Gradual Integration System Testing ◦ Does everything work together? Block Computer Wireless Module Wireless Module Wireless Module User Control User Control Scene Camera Laser Target Robot Robot Robot Robot Robot Robot Robot Component Computer Xbee Wireless Module Xbee Adapter Xbee USB Adapter FTDI Serial to USB Buttons Webcam Laser Pointer Microcontroller Wheel encoders DC Motors Motor Shield Xbee Wireless Module Battery Structure Basic system total cost CE dept contribution Total cost to us Product Price Less Owned parts Asus EEE PC $291.99 $0.00 Xbee 1mW chip $22.95 $22.95 Xbee Explorer $9.95 $9.95 Xbee Explorer USB $24.95 $24.95 FT245RL to USB board $17.95 $17.95 33mm Push Button $1.90 $1.90 Logitech Pro 9000 $59.99 $0.00 LP13 Laser light pen $5.70 $0.00 Arduino Pro Mini $18.95 $0.00 Wheel Encoder $1.90 $1.90 Lego DC motors $29.90 $0.00 Ardumoto $24.95 $24.95 Xbee 1mW chip $22.95 $22.95 Poly Li-Ion 2000mAh $16.95 $16.95 N/A $20.00 $0.00 $570.98 $144.45 $43.80 $100.65 Questions?