My latest 'project' - CAT, a Java+laptop controlled autonomous vehicle
Joshua Siegel
Posts: 51
Hi everybody,
I've had this project done and under wraps for a while, since we wanted to surprise our competition at a recent event [noparse];)[/noparse]. After the competition, finals came up and I sort of burnt out on the whole thing, but now I'm ready to work again!
I want to say thank you very much to Parallax for their great products, and show some other people here what can be done with some patience and perseverance! I've been using basic stamps and Parallax products since 6th grade now (I'll be a senior this year), and you guys are always really helpful, whether it is in the form of source code, documentation, sales, or just plain encouragement. Keep it up!
Here's the gist of my project - you'll have to forgive me if I neglect some details; this is the most complicated project I've ever had the pleasure of working on, and some of the little bits of code/hardware Easter eggs get left out.
Note for those easily bored: There’s a PowerPoint with pictures linked to towards the bottom [noparse];)[/noparse]
What it can do:
-Fully autonomous:
--Parking
---Park angle
---Park parallel
---Remove from parallel
---Remove from angle (soon)
--Drive by GPS/avoid obstacles
-Partially autonomous:
--Auto-hold a lane by vision and line sensors
---With adaptive cruise control (never exceed set speed, but slow/stop to avoid accidents)
---With collision avoidance (slow/stop/swerve when an obstacle suddenly appears)
---Blind spot notification, only when turn signals on
-Non-autonomous:
--drive by wire (local, allowing disabled peoples to drive, or remote over wireless, for war zones/etc)
---gives real-time feedback of distance of objects from sensors surrounding robot
---feeds back video real-time in greyscale/120*160
-Additional:
--Use laptop for information (GPS, OBDII, reverse camera, data logging, ECU tuning, media center, displaying messages for tailgaters, etc.)
The hardware/sensors:
A modified power wheels jeep platform (junior, so no metal frame)
--rubber tires/aluminum wheels
--dual 12v motors instead of 16v
--18v drill for steering
--eight IR range finders
--two line detectors
--one potentiometer
--one digital video camera
--steel reinforced frame
--redesigned steering linkage
--integrated folding tripod
--gps receiver
--one MPC laptop (won last year for an autonomous hovercraft)
--encoders (but currently unused)
--several limit switches
The electronics:
--sensors as listed above
--laptop
--motors as listed above
--dual Phidgets 8/8/8 interface kits (also acting as USB hubs)
--dual victor 883 speed controllers
--parallax psc
--quick disconnect cables (one cable/25 pin connector for all digital switches, clip-ons for analog)
--ability for relay switching/easy USB LCD output
The software:
--this is where I went a little nuts, so I wont explain everything - though I’d be happy to answer any questions
---uses simple neural networks, prioritizing, sensory filtering, PIDS, condition evaluation (as part of filtering), all in simultaneous threads
---image processing using edge find, grey scaling, filtering, maximum clear path finding
----will eventually add derivative image processing and inertial bugs to check for false positives
---sensor analog value to distance converter, with 1cm accuracy @ 1.5m
---real-time GUI to inform end user of what is occurring - could be turned into text and sent to an LCD
---PID threads as a means of correcting for bounce steer, etc., running all the time
---redundancy in terms of limit switches, potentiometer, etc. to prevent any oversteer issues - we already burnt out a drill
For more information, my PowerPoint is available at www.spline-designs.com/CAT/CAT_1_6.ppt . I’m not currently posting my full source code, but if you’d like snippets, I can email/PM those to you.
I think that covers up the majority of my project. It is far from complete, and now I'm looking for more to do, especially in the way of sensors (I was awarded a $500 grant to continue work on this projects).
I’m currently looking into a new steering system (servo motors, rather than a software emulation of a hardware servo), a metal frame to eliminate flex from side to side, especially in steering, accelerometers to prevent drift, and other range finders – laser range finders that offer a wide FOV are especially interesting, and I’d love if anyone has ideas on how to find one in my price range or build one… Serial/USB interface would be best. Speed of updating is critical, and I’d like a range of at least 10m. Sonar has too wide a cone per sensor, it seems, and IR is too narrow.
Does anyone have comments? Criticisms? Suggestions?
Thanks for taking the time to look at my project and read about it!
Post Edited (Joshua Siegel) : 6/18/2006 3:43:15 PM GMT
I've had this project done and under wraps for a while, since we wanted to surprise our competition at a recent event [noparse];)[/noparse]. After the competition, finals came up and I sort of burnt out on the whole thing, but now I'm ready to work again!
I want to say thank you very much to Parallax for their great products, and show some other people here what can be done with some patience and perseverance! I've been using basic stamps and Parallax products since 6th grade now (I'll be a senior this year), and you guys are always really helpful, whether it is in the form of source code, documentation, sales, or just plain encouragement. Keep it up!
Here's the gist of my project - you'll have to forgive me if I neglect some details; this is the most complicated project I've ever had the pleasure of working on, and some of the little bits of code/hardware Easter eggs get left out.
Note for those easily bored: There’s a PowerPoint with pictures linked to towards the bottom [noparse];)[/noparse]
What it can do:
-Fully autonomous:
--Parking
---Park angle
---Park parallel
---Remove from parallel
---Remove from angle (soon)
--Drive by GPS/avoid obstacles
-Partially autonomous:
--Auto-hold a lane by vision and line sensors
---With adaptive cruise control (never exceed set speed, but slow/stop to avoid accidents)
---With collision avoidance (slow/stop/swerve when an obstacle suddenly appears)
---Blind spot notification, only when turn signals on
-Non-autonomous:
--drive by wire (local, allowing disabled peoples to drive, or remote over wireless, for war zones/etc)
---gives real-time feedback of distance of objects from sensors surrounding robot
---feeds back video real-time in greyscale/120*160
-Additional:
--Use laptop for information (GPS, OBDII, reverse camera, data logging, ECU tuning, media center, displaying messages for tailgaters, etc.)
The hardware/sensors:
A modified power wheels jeep platform (junior, so no metal frame)
--rubber tires/aluminum wheels
--dual 12v motors instead of 16v
--18v drill for steering
--eight IR range finders
--two line detectors
--one potentiometer
--one digital video camera
--steel reinforced frame
--redesigned steering linkage
--integrated folding tripod
--gps receiver
--one MPC laptop (won last year for an autonomous hovercraft)
--encoders (but currently unused)
--several limit switches
The electronics:
--sensors as listed above
--laptop
--motors as listed above
--dual Phidgets 8/8/8 interface kits (also acting as USB hubs)
--dual victor 883 speed controllers
--parallax psc
--quick disconnect cables (one cable/25 pin connector for all digital switches, clip-ons for analog)
--ability for relay switching/easy USB LCD output
The software:
--this is where I went a little nuts, so I wont explain everything - though I’d be happy to answer any questions
---uses simple neural networks, prioritizing, sensory filtering, PIDS, condition evaluation (as part of filtering), all in simultaneous threads
---image processing using edge find, grey scaling, filtering, maximum clear path finding
----will eventually add derivative image processing and inertial bugs to check for false positives
---sensor analog value to distance converter, with 1cm accuracy @ 1.5m
---real-time GUI to inform end user of what is occurring - could be turned into text and sent to an LCD
---PID threads as a means of correcting for bounce steer, etc., running all the time
---redundancy in terms of limit switches, potentiometer, etc. to prevent any oversteer issues - we already burnt out a drill
For more information, my PowerPoint is available at www.spline-designs.com/CAT/CAT_1_6.ppt . I’m not currently posting my full source code, but if you’d like snippets, I can email/PM those to you.
I think that covers up the majority of my project. It is far from complete, and now I'm looking for more to do, especially in the way of sensors (I was awarded a $500 grant to continue work on this projects).
I’m currently looking into a new steering system (servo motors, rather than a software emulation of a hardware servo), a metal frame to eliminate flex from side to side, especially in steering, accelerometers to prevent drift, and other range finders – laser range finders that offer a wide FOV are especially interesting, and I’d love if anyone has ideas on how to find one in my price range or build one… Serial/USB interface would be best. Speed of updating is critical, and I’d like a range of at least 10m. Sonar has too wide a cone per sensor, it seems, and IR is too narrow.
Does anyone have comments? Criticisms? Suggestions?
Thanks for taking the time to look at my project and read about it!
Post Edited (Joshua Siegel) : 6/18/2006 3:43:15 PM GMT
Comments
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
·
Steve
"Inside each and every one of us is our one, true authentic swing. Something we was born with. Something that's ours and ours alone. Something that can't be learned... something that's got to be remembered."
Your project is truly awesome! I'm jealous. It is an example of determination.
Hey- the powerpoint photos were great.You must go to Harbor Freight for some of your stuff.
The wheels won't take much side load without fracturing,I found out the hard way!
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Thanks, Parallax!
I was going to mount a sprocket on the steering wheel and use a chain to a smaller sprocket mounted to a servo, but that drill idea is awsome (and less dangerous to nearby hands which is a concern doing this with a 8 and 5 year old)
Attached is a photo of the steering arrangement used on my R/C lawnmower.
As you can see,the drill turns a threaded rod,which drags the center link back and forth,turning the wheels.I used several other devices to do this and they all broke in heavy use.The clutch in the drill keeps bad things from happening when overstressed.Power to the drill is provided by a simple mechanical forward/reverse switch,activated by a small servo.The photo shows the chuck with the plastic covering cut off which allows better tightening.The steering is very rugged and reliable,but it will overshoot the intended position easily.
I don't know how Joshua is able to maintain precision steering control,sure would like to see.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Thanks, Parallax!
Post Edited (blindlizard) : 6/26/2006 9:22:44 PM GMT
I can get pictures soon, but I'm going to be redoing the steering system when I get a chance anyway (reducing it another 10:1 or so). The physical linkage is quite simple, with the drill being mounted such that it cannot rotate. The mounts 'grab' the handle, so that the load is distributed over a large area. The steering shaft was cut and ground so that the chuck would close well, though if you simply remove the wheel and replace the chuck with a 1/2" instead of 3/8" (mine didn't want to change), it can grab the machined 'nubs' on the shaft that attach it straight to the wheel.
The control is precise, but the movement isn't [noparse]:)[/noparse]
It moves too fast to be reliable, and can even hurt itself if I'm not careful about speed values I send it. That's part of the reason for futher reduction, along with the total weight of the vehicle (near 150lbs, if not more).
I pretty much tape the switch in place, and use my motor controller to flip the voltage when I need to reverse direction.
If you have any more questions, just ask!
Nice project, I'm nearly about to embark on a similar project but probably not as elaborate. I've just bought an Jupiter OEM GPS and will be testing it soon. What GPS module are you using and what accuracy have to managed to achieve ?
Regards
Stuart