Clone wiki

smp-driverless-car-robot / Home


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.


VisionThe Vision System. Based on OpenCV.
VCUVehicle Control Unit. Controls The Vehicle.
SteeringSteering Control. Left/Right and Resistance Feedback.
SpeederControls Vehicles Speed, Acceloration and Brakes.
DirectionsFeeds travel directions to the VCU
ProximityChecks Objects in the immediate proximity
CollisionavoidanceChecks for potential collisions
GpsProcess locations and instructions from the GPS
SignreaderChecks 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:
	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
  • Servos
  • Stepper Motors
  • Linear Actuators

Have fun!