500 likes | 671 Views
Group 12 Jason M ersch V ictor M orales V ictor R obles D anielle A nderson. ParkBot. Project Overview. Autonomous valet parking vehicle with search, park, and return functionality Provides a low cost solution to automatic valet parking with potential use in real world vehicles
E N D
Group 12Jason MerschVictor MoralesVictor RoblesDanielle Anderson ParkBot
Project Overview • Autonomous valet parking vehicle with search, park, and return functionality • Provides a low cost solution to automatic valet parking with potential use in real world vehicles • Cars with this functionality would have their own designated row of spaces
Requirements • Front-end parking • Carpeted surface with no incline • Avoid objects in path • Parked centered in space • All parking spaces uniform and designated • Return to drop-off position • Low cost to implement • Simulate potential real world environment • Battery powered
Specifications • Maximum RC car dimensions: 20”L x 6”W • Max Speed: 6 mph • Max search and park time: 5 minutes • Max pull out and return time: 5 minutes • Parked front end clearance: 3 in • Safe distance from obstacle in park search mode: 10 in • Safe distance from obstacle in park mode: 3 in • Max cost: $400.00
Testing Area Specifications • Real World Measurements • Typical parking space • 240 in L x 94.8 in W • Dimensions of average mid-sized car • 181.4 in L x 70.2 in W • Scaled Down Testing Area Measurements (1:10) • Parking space • 24 in L x 9.5 in W • 4 inch clearance between cars • 12 spaces total – 6 on each side • Total parking lot dimensions: 60 in L x 96 in W • 48 inches will separate left and right spots
Components Overview • RC car platform • DC motor for forward and reverse propulsion • Steering servo for left and right maneuvers • Power Supply • Transmitter/Receiver pair • Obstacle avoidance sensors • Microcontroller
RC Car Comparison • Hobby grade RTR car • Fully proportional steering • Large, full function, but didn’t fit budget • RTR car • Left/Right /Center steering • Purchased: Mercedes AMG R/C Car (1:10 scale) • Large and fit budget • Dimensions: 18.125 in L x 7.5 in W x 5 in H
Motor Requirements: • Bi-directional • Speed control • Speed less than 6 mph • Utilize existing motor in R/C car • Operating voltage: 2.5 to 6V • Max speed: 5 mph (existing load)
Motor Control Options • Controlling the direction of motor rotation is achieved by implementing an H-bridge • Manually build H-bridge with BJT or MOSFET • 2PNP • 2 NPN • Diodes • Resitors • Implement Dual H-bridge IC • Chose: SN754410 • 4 drivers (2 bi-polar channels) • 1A max per channel • Supports: 4.5V-36V • Built in clamping diodes • Thermal shutdown
H-bridge Implementation • SN754410 • Utilize pins 1-8 and 16 • MCU PWM to Pin1 • Vcc2 Existing Power 7.2V • Vcc1 Secondary Power 5V • Pins 2 & 7 MCU input • Pins 3 and 6 Motor leads
Steering Servo • R/C car’s existing servo • 6-wire servo motor with potentiometer • 4 Control lines • Blue - left • Yellow - right • Brown - always low • White – always high • 2 Power leads • Will be controlled by microcontroller
Transmitter & Receiver • Motivation: • Basic functionality • Send signal to begin parking spot search • Send signal to pull out of parking spot and return to point of origin • Allows for expansion if different wireless features want to be added
Transmitter & Receiver Methods Considered • Bluetooth • Too expensive to implement • Infrared • Poor range • Wi-Fi • Components needed to implement system are too large • Chose: RF • Good range • Easy to implement on microcontroller
RF Transmitter • MO-SAWR-A • Transmits at a frequency of 315Mhz • Range up to 500 ft. • No line of sight needed for transmission • Common in car alarm remotes, beepers, and many similar devices • Operating voltage: 2 to 12v
RF Receiver • MO-RX3400-A • Receives signal at 315Mhz from RF transmitter • Range of up to 500 ft. • Common in car alarm remotes, beepers, and many similar devices • Operating voltage: 5V • Current draw: 2.3 to 3 mA • Digital signal to to microcontroller for easy data processing
Sensors Considered • Infrared Sensors • Sharp IR GP2D12 Sensor • 450 –750 nanometer range of visible light • Covers a range of 10 to 80cm with a optimized distance of 24cm • Operating Voltage: 0.3 to 7 volts • Max current draw: 10mA • Imaging Sensors • TSL 1401 Linescan Imaging Sensor Daughterboard • 128-pixel sensor chip • 7.9mm focal length imaging lens • Operating voltage: 3.3 to 5 volts. • Max current draw: 5mA
Sensors Considered cont’d • Ultrasonic Sensors • Chose: Ping Ultrasonic Range Finder • Emit a short 40 kHz signal • Range 0.8 in to 118.8 in (3.3 yd) • Operating Voltage: 5 volts • Max current draw: 35mA
SensorsAdvantages and Disadvantages • Ultrasonic sensor • Fastest response time at 115 us up to 18.5 ms • Smallest at 0.84 in W x 1.8 in L • Best range at 0.8 in to 118.8 in • Infrared sensor • Poor range • Imaging sensor • Poor range • Slow response time • Expensive
Ultrasonic Sensor Considerations • The sensor must be mounted perpendicular to the floor for accurate performance • Echo-free environment for the most accurate readings • The object that the sensor will detect has to be large enough for the ultrasonic waves to deflect off of it
Ultrasonic Sensor Mounting • The small size of the sensors make it easy for mounting onto the frame of the car • There will be three sensors mounted on ParkBot one in the front and one on each side of the car • These sensors will be connected in series to keep the current draw low • Sensors will be mounted at different heights to determine optimal height
Power Supply • It was decided to divide the power system into two parts: • One for the drive and servo motors • The other for remaining components
Voltage Regulation • Required to regulate a voltage of 5VDC for the components operating at this voltage and the logic part of the H-Bridge(VCC1) • Required to regulate a voltage of 6VDC for the front motor(servo/steering) with high current • Decided to use a simple linear regulator for the 5VDC and a variable regulator for the 6VDC • The components operating at 5VDC are not going to draw much current so the dissipated power at the regulator is not going to be large. (7.2-5)V*107.5mA=2.2*107.5=236.5mW • For the 6VDC regulator the amount of current draw will be about 1000m (7.2-5)V*1000mA=2.2*1000=2.2W • For the 5VDC regulator a LM7805 IC is going to be used, and for the 6VDC a LM 317t
Voltage Regulation • LM317 • VOUT = 1.25 * ( 1 + R2/R1 ) • R2 = R1 * ( (VOUT/1.25) -1 ) • R1=240, R2=910 Vin=7.2 Vout = 6Vd • LM7805 • Power 4 components • Connected from the 7.2v battery
Power Supply 1 • Chose: Tenergy 7.2V Ni-MH 3000mAh battery • The battery will be connected to a LM317 variable voltage regulator to power the steering servo motor and rear motor • The battery was chosen based on the amp/hours and volts needed to properly operate the steering servo and rear motor • In charge of powering the rear motor and steering servo H-Bridge SN754410 VCC2 Rear Motor F/B 7.2v NiMH LM317 6VDC Steering Servo
Power Supply 2 • Came with the RC car • 7.2v 700mAH Ni-Cd battery pack • It will be in charge of powering the additional components added to the car • It will be connected to a LM7805 linear voltage regulator. Regulates voltage to 5V. This will power: • Ultrasonic Sensors, RF Receiver unit, H-Bridge chip Vcc1 Logic, and microcontroller LM7805 5VDC Microcontroller 7.2v NiCD Sensors RF Receiver unit H-Bridge VCC1 logic
MCU Requirements • I/O pins needed: • 4 digital (for obstacle avoidance sensors and RF receiver) • 3 digital PWM (for DC motor control and servo control) • Open source • Well documented with online examples • Uses a familiar programming language • Sufficient memory and processing power • Operating voltage of 5V • Chose: Atmel ATMega328
MCU Specifications • Atmel ATMega328 • With ArduinoBootloader for use with the Arduino language • Arduino language based on C/C++ • Max frequency: 20MHz • 32KB of program space • 23 I/O Pins • Operating Voltage: 5V
Programming the MCU • Use a SFE FTDI USB to Serial Basic Breakout Board that interfaces with the MCU • Optimized to work with 5V Arduino boards and cloned 5V Arduino boards • Easy loading of code onto MCU through USB port on PC • Cheaper than buying USB to serial converter cable ($33 vs. $14)
PCB • We decided to go with a 28 pin development board perfect for the Atmega328 microcontroller. • We will solder the PCB after successful testing of the implemented parts on the board • Optimized Arduino configuration will be used for maximum perfomance for our system • Size: 5" x 3.7" (127 x 93.98mm)
Software Structure ParkBot • intnumSpotsOccupied • intrightOrLeftSpotAvail • intobstacleDetectedFlag • Servo steeringServo • const intleftSensorPin • const intrightSensorPin • const intfrontSensorPin • const intmotorPosTerminal • const intmotorNegTerminal • const intrfReceiverPin • intnumSpotsOccupied • Keeps track of the number of occupied left and right spots. Increments after each occupied pair of spots is detected • intrightOrLeftSpotAvail • Set to 1 if a right spot is available and 2 if left spot is available once open spot is detected • intobstacleDetectedFlag • Set to 1 if there is a front obstacle, 2 if there is a left obstacle, and 3 if there is a right obstacle during obstacle avoidance loop + void moveForward(long distance) + void moveBackward(long distance) + void turnWheels(int direction) + long timeToDistance(long sensorReading) + long getFrontDistance() + long getLeftDistance() + long getRightDistance() + void pullCarIn() + void takeCarOut() + void threePointTurn() + intisCentered()
Motor and Steering Servo Functions • void moveForward(long distance) • Moves ParkBot forward for the designated distance given in inches • void moveBackward(long distance) • Moves ParkBot backwards for the designated distance given in inches • void turnWheels(int direction) • If direction parameter is equal to 1, this function will turn ParkBot’s wheels to the left. If direction parameter is equal to 2,
Obstacle Sensor Functions • long getFrontDistance() • Returns the distance in inches of the nearest obstacle to the front of ParkBot • long getLeftDistance() • Returns the distance in inches of the nearest obstacle to the left of ParkBot • long getRightDistance() • Returns the distance in inches of the nearest obstacle to the right of ParkBot
Obstacle Sensor Functions cont’d • long timeToDistance(long sensorReading) • Sensor-read helper function. Takes in a time in microseconds (i.e. reading from an Ultrasonic sensor) and converts the time into a distance in inches (i.e. distance from nearest object to sensor). • According to Parallax's datasheet for the PING))) Ultrasonic sensor, there are 73.746 microseconds per inch. Also the sensor reading in microseconds is the total time, outbound and return, so we must divide by 2 to get the distance to the obstacle. This gives us the following conversion: distanceInInches = sensorReading / 73.746 / 2
Algorithm Functions • void pullCarIn(intrightOrLeft) • Does the process of pulling ParkBot into a parking spot. If the rightOrLeft parameter is 1, ParkBot will pull into the parking spot on the right side. If the rightOrLeft parameter is 2, ParkBot will pull into the parking spot on the left side • Common Pull Into Parking Spot Scenario (figure not drawn to scale):
Algorithm Functions cont’d • void takeCarOut(intrightOrLeft) • Does the process of pulling ParkBot out of a parking spot. If the rightOrLeft parameter is 1, ParkBot will pull into the parking spot on the right side. If the rightOrLeft parameter is 2, ParkBot will pull into the parking spot on the left side • During the execution of pullCarIn() and takeCarOut(), all sensors will be checked at a rate of 2 Hz to detect whether there is an object within 3 inches of ParkBot on all sides. If an object is detected during either of the two algorithms, the process will be repeated again with minor modifications according to where the obstacle was detected • intisCentered() • Returns a 1 if ParkBot’s left and right side clearance values are within 0.2 inches of each other. Returns a 0 otherwise.
Testing Scenarios • The following scenarios will be accounted for and mastered: • Spot available on left • Spot available on right • No spots available • Spot too small on the left • Spot too small on the right