1 / 20

W itty's robotically engineered car kraziness (W.R.E.C.K.)

Ben Fluehr, Derrick Lam, Brett Melonis, Alex Person. W itty's robotically engineered car kraziness (W.R.E.C.K.). Overview. Work Completed Car Motion Control – Servos Car Vision – CMUcam Car Steering – Magnetometers Car Obstacle Avoidance – Range finders Work Remaining. Car Motion Control.

fleta
Download Presentation

W itty's robotically engineered car kraziness (W.R.E.C.K.)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Ben Fluehr, Derrick Lam, Brett Melonis, Alex Person Witty's robotically engineered car kraziness (W.R.E.C.K.)

  2. Overview • Work Completed • Car Motion Control – Servos • Car Vision – CMUcam • Car Steering – Magnetometers • Car Obstacle Avoidance – Range finders • Work Remaining

  3. Car Motion Control Electronic Speed Controller (ESC) Single steering servo Controlled via Handy Board

  4. ESC Control Pulse Width Modulated (PWM) control signal from Handy Board Draws power from battery Grounded to Handy Board

  5. Steering Servo Control Pulse Width Modulated (PWM) control signal from Handy Board Draws power from ESC Grounded to Handy Board

  6. Motion Control Example

  7. Car Vision - CMUcam 1

  8. CMUcam Main Loop void main() { //Initialize camera init_camera(); clamp_camera_yuv(); //Main loop while(1) { if (track_red() > 40) { //Stop sign found } if (track_yellow() > 40) { //Yield sign found } }

  9. CMUcam Detecting Blobs int track_red() { if (trackRaw(180,220,40,65,85,115) > 0) { return track_confidence; } else return 0; }

  10. CMUCam Continued int trackRaw(int rmin, int rmax, int ymin, int ymax, int bmin, int bmax) Uses CrYCb instead of more commonly known RGB space A box bounds the pixels within color boundaries, and the amount of pixels within box determines the confidence rating Must calibrate color ranges in track’s room with actual signs

  11. Magnetometer – Eval Board • Pre-mounted Components • HMC1052L • MOSFET reset • Amplifier circuitry • Five Holes • Vcc and GND • Out1 and Out2 • Set

  12. Magnetometer – Behavior • Neutral Voltage = Vcc / 2 • Voltage changes more as distance decreases • Magnetic field strength • Strongest at poles and weakest in between • Very strong fields cause problems • Point axis towards pole for best results

  13. Magnetometer – Behavior (cont.)

  14. Magnetometer – Code void CheckMagnetometer() { int reading = analog(MAGNET_PORT); int absDiff = abs(reading - neutral); if (absDiff > MAGNET_THRESHOLD) { ChangeSteering(absDiff); neutral = analog(MAGNET_PORT); } }

  15. Car Obstacle Avoidance • Original plan • Maxbotix Range Finder • Analog output • Problem • Still having jumpy output in the distances of interest • Increased code complexity • Difficulty responding to small changes in distance

  16. Solution • Sharp Range Sensors • Use infrared instead of sonar • Should “see” a narrower range • Only requires power, ground, analog output • May combine multiple sensors • Sharp GP2D12: 10 – 80 cm • Sharp GP2Y0A02YK: 20 – 150 cm • MaxSonar-EZ1: 15 – 645 cm

  17. Sharp Range Sensors • GP2D12 • GP2Y0A02YK • Sensor Cable

  18. Interactive C Example #define PORT 5 /* 7 available ports */ void main() { int distance = analog(PORT); /* 0 to 255 */ if (distance > 128) /* half max distance */ brake(); }

  19. Work Remaining • Mount components in final position • Glue • Pieces of plastic • Combine code to run simultaneously • Code finished for each component • Can probably call functions in turn from main loop • Possibility: multiple processes • Support from Interactive C • Spawn from any C function • Each runs for 5 ms

  20. Questions?

More Related