There are many types of motors including: * [https://en.wikipedia.org/wiki/DC_motor DC Motors] are usually the main motors that drive a robots wheels or tracks * [http://www.jameco.com/jameco/workshop/howitworks/how-servo-motors-work.html Servo Motors] and [http://www.instructables.com/id/BYJ48-Stepper-Motor/ Stepper Motors] are used to effect fine control such as for manipulating objects. Motors generally use electromagnets to generate physical motion such as rotating a shaft. Electromagnets typically require much more current than a micro-controller can source directly. To control motors, micro-controllers typically use a transistor as a valve; turning the transistor on or off requires a very small amount of current, but when turned on, the transistor can allow large amounts of current to flow through it to the motor. DC motor controllers often use 4 transistors in an [https://en.wikipedia.org/wiki/H_bridge H-Bridge] circuit; this allows the motor '''direction''' to be reversed by swapping the direction of current flow through the motor. DC motor '''speed''' is often controlled using [http://www.electronics-tutorials.ws/blog/pulse-width-modulation.html pulse-width modulation] (PWM). In many cases, there are dedicated integrated circuits to provide this functionality such as [http://www.gearbest.com/other-accessories/pp_218079.html Arduino Motor Shields]; and [http://playground.arduino.cc/Main/AdafruitMotorShield code libraries] to support them. Working with motors involves many considerations including protecting the motors from overheating if they are working too hard (e.g. stalled), braking control, and using the motors efficiently. For more details about DC motor control see (see [http://www.4qd.co.uk/faq/motrat.html here]) Real world motors must deal with inertia. Use of closed-loop control allows motors to drive actuators to specific speeds or positions. PID control loops are an important concept and the basics are explained [http://www.expertune.com/tutor.aspx here]