Choosing the right vehicle

From the wide range of vehicles available, picking the right one for autonomous drive is as important as picking the rest of the components. But which one is the right one?

Autonomous vehicles, HC-SR04 sensors

Step 1: Detecting objects with HC-SR04
Step 2: Multiple HC-SR04 with Arduino using interrupts
Step 2b: Multiple HC-SR04 with Arduino using only 1 interrupt pin
Step 3: Choosing the right vehicle
Step 4: Automatic steer correction with HC-SR04
Step 5a: Vehicle accessories – SSD1306 status display
Step 5b: Vehicle accessories – Rotary encoder illuminated button
Step 6: Autonomous vehicles, putting it all together
Alternative 1: Steer correction with HC-SR04: Single sensor, stop and scan
Alternative 2: Steer correction with HC-SR04: Servo controlled car

There is no right one

As in many cases, there is not really “the right one”. But there definitely is the most suitable one within a certain range of requirements. So let’s take a look at these requirements

  • The vehicle must be easy to control (drive and steer)
  • Power consumption must be relative low,
    so no special (large) batteries are required
  • Empty chassis is preferred because custom hardware is used
  • Preferably pre-drilled holes for mounting the hardware
  • Must be low cost, or at least very affordable
    (hobbyists have tiny budgets)
  • Easy to purchase (widely available)

All there requirements are met by the thee wheel smart car chassis.

Three wheel smart car chassis

One of the possibilities that meets all the requirements is the three wheel smart car chassis. This chassis comes with two DC motors that can be easily controlled with the famous LM298, which is widely available. However, in this particular case, the Cytron Maker Drive is used in stead, but the concept of controlling it, is the same.

Three wheel smart car chassis
Three wheel smart car chassis

The battery holder and power switch are not used for the build in this project, since a 2 cell LiPo battery with a voltage regulator is used in stead.

How driving and steering is done

For the driving part, it is quite obvious, making the two wheels rotate in the same direction moves the vehicle forward, or backwards. Using PWM signals, the speed can be adjusted.

Rotating the wheels in opposite direction can make the vehicle perform a hard left or right turn, which can be very handy if an object very close by is detected and the vehicle has hit the brake and has come to a standstill.

Smooth steering can be achieved by using a different speed on each wheel. This can also be done by PWM signals, but using different values on each wheel. This way the vehicle can continue to drive and steer away from the obstacle at the same time.


Obviously, there are many alternatives that use the same concept, and are available in different shapes, forms and materials. There’s also the possibility of building your own chassis, and buying the motors and wheels separately.

One alternative is the four wheel chassis. It also meets all the requirements, but it does need a few additional elements.
An extra controller is needed for the 2 extra motors OR the motors need to be controlled in an X configuration (left front + right rear and right front + left rear), but if you use this method, make sure the motor driver can handle double the power (2 motors per channel).

Four wheel smart car chassis
Four wheel smart car chassis

Similarly, a two wheel balancing chassis can be used, but then additional code for the balancing and a gyroscope (and encoder) are required as well. This would not really meet ALL requirements for our vehicle.

Two wheel balancing chassis
Two wheel balancing chassis


The three wheel chassis is the best choice for this project, because it’s widely available, cheap, easy to assemble and very simple to control for driving and steering.

Arduino Boards: Arduino Uno R3 – Arduino Nano V3 – Arduino Micro
Arduino Software: Arduino IDE
Arduino Playground: Library NewPing
Arduino forum: Arduino Micro Interrupts 6
Arduino Reference: Port RegistersattachInterrupt()interrupt()noInterrrupt()pulseIn()pulseInLong()Servo library
Random Nerd Tutorials: Complete Guide for Ultrasonic Sensor HC-SR04 with Arduin
Circuit Digest: Arduino Interrupts Tutorial
Electro Noobs: Arduino register control, timers and interruptions
Wikipedia: Speed of sound – Echolocation