Autonomous Robot Project Lauren Mitchell Ashley Francis
The Challenge The goal for our summer project was to be able to remotely control a robot using a camera interface and wireless communication. The final challenge of this project was to teach the robot to follow a path specified through the camera interface.
Robot Capabilities Two motors Two 4.96 cm wheels One pivot wheel Two rotation sensors Green tracking material Java Programmable Lego Brick (RCX) Bluetooth
Web Camera Capabilities 120 x 160 resolution Mounted 2.5 m (8.25 ft) above ground Viewing area of 2.1 x 1.9 m (6.9 x 6.3 ft) Average of 10 fps Programmatic access through C++ API
Bluetooth Capabilities Serial communication with 8 data bits, 1 stop bit, max data transfer rate kbps, and even, odd, or no parity Maximum operating range of up to 30 meters (98 feet) 9 pin RS232 connector Required voltage of 5V V
Past Progress Summary: 1.Tracking the robot 2.Robot movement and code 3.Communication
Images from the camera
HSV values were used to track robot on image HSV values were calculated from RGB values of a pixel Each pixel of image is scanned looking for specific HSV ranges Crosshair placed where ranges found
Color analysis for pixels Green CD case used for color tracking on robot Range of HSV values for green pixels were determined :
Navigating the robot Java RotationNavigator class was used to control robot movement through rotation sensors and motors Provides ability to rotate 360 degrees and travel specified distances
Calculating angle and distance (xsrc,ysrc) (xdest,ydest) distance angle = [tan -1(y/x))*(180/л)] x = 1.325*(xdest-xsrc) y = 1.604*(ysrc-ydest) if(y != 0) distance = abs(y/sin(angle)) else distance = abs(x/cos(angle))
Communication between robot and PC: using Bluetooth BL-830 (female) connects to RS232 of PC BL-819 (male) connects to signal converter on robot 2400 bps data transfer rate Odd parity One 9-Volt battery Serial communication (sends 1 unsigned byte at a time)
Midsummer Results: Stationary robot found every 0.3 seconds Moving robot found every 7.34 cm On average, robot misses target by 9.2 cm (3.6 in)
The final stretch Improving accuracy of robot movement Closing loop with camera Robot orientation Developing a better tracking solution Teaching the robot a path to follow
SMOLES model
Inside the components
Robot orientation and correction (xsrc,ysrc) (xdest,ydest) (robx,roby)
Teaching the robot to follow a path User clicks are stored in a vector Pointer is used to access coordinates of click Pointer is incremented by 2 when robot reaches a node in the path dest x1 dest y1 dest x2 dest y2 dest x3 dest y3 Pointer
Control information is sent over Bluetooth using three byte protocol Show camera image on screen Store coordinates of robot destination in a vector Camera finds coordinates of robot on screen Necessary angle and distance calculated user clicks? Search for Robot Robot Found? Converter circuit transform signal for the RCX to receive protocol Robot receives information and responds accordingly no yes no yes Waits for new information Dest Flag? Destination pt equals vector pointer (pointer incremented by 2) true Correct Flag? false Update angle information is sent over Bluetooth using four byte protocol true false
Java code to receive and execute protocol Thread 2: Main Thread angle & distance received? no yes Rotate Robot Reset angle, distance, and correction flags check correction Flag Thread 1: Read Thread Read sent byte check byte Read next byte Store as current position angle to update to Store as distance robot needs to travel Read next byte If = -1 If = 1 If = 5 Stop Robot in path Read next byte check byte Store as angle robot needs to rotate Read next byte Store as angle robot needs to rotate Stop Robot Update to current position and correct angle along path Move forward If = 8 If = -1 true false When distance is reached
Summer Results Robot reaches target point within two turns Robot has reached the target when it is between 0 – 6 cm from point Robot consistently follows path repeatedly Results Achieved
If we had more time… Find a better tracking solution Implement two-way communication Add obstacles to course
Autonomous Robot Project Lauren Mitchell Ashley Francis