Welcome to the Open Source SMP Car Robot project. SMP stands for "Symmetric Multi Processing". This project is optimised to run on multi-core processors. Which are expected to be sold for under $100 in the coming years..
If you don't have symmetric multiprocessing, you can still run the software. But we are sure that you'll have a multi-core multiprocessing CPU very soon..
They're the future.. and they are coming to every car..
About the Project
This is an Open Source project to develop an autonomous driving Robot using inexpensive computers, webcams, GPS and other sensors.
btw, most other Driverless car systems are not Open Source. For example, the systems from Mercedes and BMW only work in their vehicles - and its unlikely you'll ever get to see the source Code. Even the new Google Driverless car is not Open Source. We're not sure when it will be.. so in the mean time.. you can use this project.
Within this project, the high-level-code is Python and low-level-code for such things as cameras and sensors in C++. The systems use Sockets on a TCP/IP bus to communicate with each other with tasks being broken up so that they are easily able to run on different processors or cores. It's designed as a symmetrical-multi-processing configuration to take advantage of the new mult-core processors that are becoming available.
About the Lead Developer
David Lyon is a Software Developer based in Sydney with over 25 years programming experience in Assembler, C++, Python and other languages.
He's a regular traveller to Germany, Japan and the USA. Much of the design in this project comes from things he's seen in those countries.
|Vision||The Vision System. Based on OpenCV.|
|VCU||Vehicle Control Unit. Controls The Vehicle.|
|Steering||Steering Control. Left/Right and Resistance Feedback.|
|Speeder||Controls Vehicles Speed, Acceloration and Brakes.|
|Directions||Feeds travel directions to the VCU|
|Proximity||Checks Objects in the immediate proximity|
|Collisionavoidance||Checks for potential collisions|
|Gps||Process locations and instructions from the GPS|
|Signreader||Checks Road signage for information|
High Level Code
Here's the high level Python code:
if __name__ == "__main__": print "smp Driving Robot" if not StartupDevices(): exit(msg="Unable to setup startup devices") running = False while not running: running = GetDestination() while running: CheckDirections() CheckForObstacles() ControlVehicleSpeed() ControlSteering() running = not CompletedJourney()
The primary Computer that you'll need to have to implement this project is a car installable Mini-ITX motherboard.
A secondary controller known as an Arduino with Arduino Motor Shield is required to control sensors and stepper motors.
- Vision (USB Webcam)
- Ultrasonic Proximity Sensors
Motors and Actuators
- Arduino with Arduino Motor Shield
- Stepper Motors
- Linear Actuators