Remote Controlled 6WD All Terrain Robot




Introduction: Remote Controlled 6WD All Terrain Robot

About: I'm an enthusiast of robotics :)

Most of the robots I built so far were 4 wheeled robots with a load capacity of several kilograms. This time I decided to build a bigger robot that will easily overcome various obstacles on its way and will be able to move with a load of at least a dozen kilos. I also assumed that the robot should be able to cope in difficult terrain such as sand, snow and rubble. To make it possible, I built a 6-wheel chassis equipped with 6 motors of sufficient high power and suitable motor driver and power supply. I also wanted my robot to be controlled from a long distance (at least 200 meters) so I used a good quality 2.4GHz transmitter and receiver.

Once all the above requirements were met and the first tests were successful, I decided to extend the project with a manipulator and two cameras. Thanks to the image from the camera you can control the robot even if it is out of sight. This feature allows the robot operator to perform remote inspection tasks in areas that are difficult to access or are dangerous for humans.

From the description of this project you will learn how to:

  • build a 6 wheeled robot chassis capable of transporting at least a dozen kilos
    • allows you to transport heavier items
    • possible commercial use and not just a robot as a toy!
  • remotely control such a robot from a long distance
    • bind a 2.4 GHz transmitter with a receiver
    • read commands from a 2.4 GHz receiver via Arduino
    • control of the robot's position
  • set preview from cameras on your computer or smartphone
    • implementation of wireless long-range video transmission at 5.8 GHz

Robot parameters (basic version):

  • External dimensions (LxWxH): 405x340x120 mm
  • Total weight: 5 kg
  • Ground clearance: 45 mm

Extended version (with a manipulator and a cameras):

  • External dimensions (LxWxH): 405x340x220 mm (robot prepared for transport)
  • Total weight: 6.5 kg

Step 1: The List of Parts and Materials

Chassis of the robot is made entirely from aluminum and duralumin. In this project I used 6 Monster Truck wheels with a diameter of 125 mm which makes it easy to overcome small obstacles. The robot is driven by 6 high-power 12 V brushed DC motors (180 RPM, 27 kg-cm) with metal gears. As a motor driver you can use any driver that is able to provide a continuous current of at least 10A per motor e.g.: VNH2SP30, BTS7960B.

Parts needed in this project:

  1. High Torque Gear Reducer DC Motor 12V 180RPM x6
  2. 6mm Hex DC Gear Motor Connector x6
  3. Emergency Stop Switch x1
  4. Stainless Steel Power Push Button Switch x2
  5. 7.4V 2700mAh 10C Lipo Battery x1
  6. 11.1V 5500mAh 3S 45C Lipo Battery x1
  7. Motor Driver e.g.: VNH2SP30 x6 or BTS7960B x2
  8. Arduino mega 2560 x1
  9. Wheel Rim & Tires HSP 1:10 Monster Truck x2
  10. Micro USB Board x1


  1. FrSky TARANIS Q X7 2.4GHz 7CH Transmitter x1
  2. FrSky V8FR-II 2.4GHz Receiver x1

Materials (chassis):

  1. Duralumin sheet 2mm thick (LxW): 345x190 mm x2
  2. L-shaped aluminum angle bracket 2mm thick: 190x40x20 mm x2
  3. C-shaped aluminum angle bracket 2mm thick: 341x40x20 mm x2
  4. Nuts and bolts:
    • M3 10 mm x10
    • M2 6 mm x8


  1. HILDA Electric Mini Drill

Extended version:

  1. RunCam Split camera x1
  2. 2 axis gimbal x1
  3. Robotic Arm x1
  4. Robot metal gripper x1
  5. VL53L0X Laser ToF Sensor x1

Step 2: Assembling the Robot Chassis

Assembling of robot chassis is quite easy. All steps are shown in the photos above. The order of the main operations is as follows:

  1. Drill 3 holes with a diameter of 13 mm in side aluminum profiles (Holes for the motor shaft)
  2. Drill 6 holes with a diameter of 3 mm in side aluminum profiles (Holes that fasten the motors to the profile)
  3. Screw the DC motors to the side aluminium profiles
  4. Screw the side aluminium profiles with DC motors to the base
  5. Screw the front and rear profile to the base
  6. Install the necessary power switches and other electronic component (see in the next section)

Step 3: Connection of Electronic Parts

The main controller in this electronic system is Arduino Mega 2560. To be able to control six motors I used two BTS7960B Motor Drivers (H-Bridges). Three motors on each side are connected to one motor driver. Each of the Motor Driver can be loaded by the current up to 43A that gives a sufficient margin of power even for the mobile robot moving over rough terrain. The electronic system is equipped with two power sources. One for supplying the DC motors and servos (LiPo battery 11.1V, 5500 mAh) and the other to supply Arduino, bluetooth module, fpv camera and sensors (LiPo battery 7.4V, 2700 mAh).

The connections of electronic modules are the following:

BTS7960 -> Arduino Mega 2560

  • MotorRight_R_EN - 22
  • MotorRight_L_EN - 23
  • MotorLeft_R_EN - 26
  • MotorLeft_L_EN - 27
  • Rpwm1 - 2
  • Lpwm1 - 3
  • Rpwm2 - 4
  • Lpwm2 - 5
  • VCC - 5V
  • GND - GND

FrSky V8FR-II 2.4GHz Receiver -> Arduino Mega 2560

  • ch2 - 7 // Aileron
  • ch3 - 8 // Elevator
  • VCC - 5V
  • GND - GND

The wired connections between the 2.4 GHz receiver and the Arduino are shown in the wiring diagram above. Connect the 5V and GND power wires from Arduino to the receiver's pins + (VCC) and - (GND) respectively. In addition, you must connect used receiver channels (ch2 and ch3) to the Arduino digital pins (e.g. 7 and 8 just like in the program). If you're just starting to learn electronics and you do not know how to connect power supply, switches and motor driver, this wiring diagram from my similar project will be helpful. Before starting the robot's control from the 2.4 GHz Taranis Q X7 2.4GHz transmitter you should previously bind the transmitter with the receiver. The binding procedure is described in detail in my video.

Step 4: Arduino Mega Code

I've prepared the following sample Arduino programs:

The first program "RC 2.4GHz Receiver Test" will allow you to easily start and check the 2.4 GHz receiver connected to Arduino, the second "6WD Robot Control" allows to control the robot's movement. Before compiling and uploading the sample program, make sure that you have chosen "Arduino Mega 2560" as the target platform as shown above (Arduino IDE -> Tools -> Board -> Arduino Mega or Mega 2560). The commands from Taranis Q X7 2.4 GHz transmitter are sent to the receiver. Channels 2 and 3 of the receiver are connected to the Arduino digital pins 7 and 8 respectively. In the Arduino standard library we can find function "pulseIn()" that returns the length of the pulse in microseconds.We will use it to read the PWM (Pulse Width Modulation) signal from the receiver which is proportional to the tilt of the transmitter's control stick. The pulseIn() function takes three arguments (pin, value and timeout):

  • pin (int) - the number of the pin on which you want to read the pulse
  • value (int) - type of pulse to read: either HIGH or LOW
  • timeout (int) - optional number of microseconds to wait for the pulse to be completed

The read pulse length value is then mapped to a value between -255 and 255 that representing forward/backward ("moveValue") or turn right/left ("turnValue") speed. So, for example if we push the control stick fully forward we should get the "moveValue" = 255 and pushing fully back get "moveValue" = -255. Thanks to this type of control, we can regulate the speed of the robot's movement in the full range.

Step 5: Testing of Mobile Robot

These videos show tests of mobile robot based on program from the previous section (Arduino Mega Code). The first video shows tests of 6WD robot in my room. This robot is able to carry a load of several kilos very easily, on the video it transports 8 bottles of water equivalent to 12 kg. The robot can also easily overcome obstacles encountered on its way like curbs on parking what you can see in the second video. At the beginning of this instruction you can also see how well it cope in difficult terrain.

Step 6: Examples of Design Improvements

You can extend this project with additional components such as:

Above you will find two videos presenting the mentioned improvements. The first video shows how to control a pan-tilt camera and a robot gripper using Taranis Q X7 2.4GHz transmitter and FrSky V8FR-II receiver. Next video shows a quick introduction how to connect and control a 2 axis gimbal using the same set of transmitter and receiver at 2.4 GHz.

Step 7: Robot Arm Tuning

I made the robot arm earlier and described it in this instruction. However, I decided to slightly modify the original project and add another degree of freedom (wirst) and FPV camera. The robot currently has 4 rotary joints:

  • Wirst
  • Elbow
  • Shoulder
  • Base

Rotation in 4 axes allows easy gripping and manipulation of objects in the robot's workspace. A rotating gripper that performs the role of the wrist allows you to pick up objects placed at different angles. It was made of the following parts:

The camera is placed directly above the gripper to make it easier for the operator to grab even small objects.

Step 8: Checking the Status of the Robot and Preparing for Transport

The robot arm and camera stand are folded, that makes the robot transport much simpler. The rear panel of the robot is equipped with 3 LEDs. Two of them show the power status of electronics, motors and servos (on or off). The third RGB LED shows the battery status and failure. For easier programming, the robot is equipped with a micro USB port. This solution makes testing much easier without the need to remove the robot housing.

Step 9: Testing Preview From Wifi and Fpv Cameras

Two cameras were installed on the robot. The Wifi camera was placed on an adjustable aluminum holder at the back of the robot. A small fpv camera was placed just above the robot gripper.

Cameras used in this test:

The first video shows the test of both cameras. The view from the wifi camera is displayed on the smartphone and the view from the fpv camera on the laptop. As we can see on the video, the preview delay is small and for Wifi camera this delay is slightly larger.

In the second video, I showed you step by step how to get a preview from 5.8 GHz fpv camera on your computer. The image from the camera is sent from the transmitter to the 5.8 GHz receiver. Then it goes to a video grabber connected to a laptop via a usb port and is finally displayed on the VLC player.

Check out my other projects related to robotics, just visit:

Step 10: Image Processing and Possible Practical Applications

Currently I'm developing a dedicated application for 6WD security vehicle. This app providing the following functionality:

  • preview and record the image in real time
  • snapshots
  • detecting moving objects
  • objects tracking
  • marking detection zones
  • automatic sending of alarm notifications

I'm using Python, OpenCV and TensorFlow when creating and testing this software.

Examples of applications:

  • protection of facilities and areas against the access of unauthorized persons
  • exploration and inspection of hard to reach places
    • tunnels and pipes
  • inspection of dangerous places for human life and health
    • chemically contaminated places
    • buildings threatening to collapse
  • transport and neutralization of dangerous objects (explosives, harmful and toxic chemicals)

Example problem and its solution

Formulation of the problem:

Currently a classic monitoring and protection system use of stationary cameras that monitor only the part of the area that should be protected. This disadvantage causes that the system is incomplete and provides only partial control over what is happening in the protected area. Additionally, the camera itself usually does not have the ability to monitor environmental parameters.

Solution to the problem:

The solution to the problem formulated above is a camera placed on a remotely controlled or autonomous vehicle. Such a vehicle can reach every corner of a protected area and give us a real-time preview if everything is okay. It can also send measurement data of physical quantities (e.g. gases, temperatures) to the base station. Furthermore, the transmitted image is processed to detect moving objects with specific features in the selected protected zone. If such objects appear then the system will send an emergency notification to the owner or security office.

Remote Control Contest 2017

Second Prize in the
Remote Control Contest 2017

Wheels Contest 2017

Second Prize in the
Wheels Contest 2017

Arduino Contest 2017

Participated in the
Arduino Contest 2017

1 Person Made This Project!


  • Build a Tool Contest

    Build a Tool Contest
  • Sculpt & Carve Challenge

    Sculpt & Carve Challenge
  • Meatless Challenge

    Meatless Challenge



1 year ago

hi can you tell me how you join the wheel rims to the motors thanks


Question 2 years ago on Step 3



Question 2 years ago

can you add your pc application too it would be really good


2 years ago

If I was to create a four motor version using the same motors, would the Pololu Dual VNH5019 Motor Driver Shield (Pololu item #: 2507) be suitable? I'm unsure of the peak current rating of these motors.


Reply 2 years ago

Or would this be a better option:
As it includes TTL serial (although CAN bus would be better) and RC inputs, as well as integrated dual quadrature (i'm thinking of autonomous track finding).


Question 3 years ago on Step 3

Can you build a chassis upon request? Or know someone who will?
Thank you!


Question 3 years ago on Step 2

How you joined XT60 with bts7960b ?
Can I ask for a photo ?


3 years ago

have a question about using the VNH2SP30 the pinouts are different to the BTS7960B do you have the equivalent i havent had any luck.
Thank You


Tip 3 years ago

A cool thing to do to make it go over rough terrain would be to use a better suspension. Kinda like the one that martin rovers use.


Question 3 years ago

Do you have all the code that you used for your robot available for others to use?


Question 3 years ago on Step 1

Hi could brushless motors be used instead of stepper motors? thanks


3 years ago on Step 10

Thanks for posting this. I think, God willing, i would like to make this to. Could you tell me what the cost of all the parts for the rc 6 wheel version is? Thanks again...great job.


Question 3 years ago on Introduction

Amazing! Thanks for sharing. Today at the nursery I saw guys struggling to lift a tree pot fill with dirt and a 10 ft tree to organize or sale not sure. But was thinking their job could be much easier with a controller and motorized wheels. This is very helpful in pointing me in the right direction. Thank you for your time spent creating and sharing this


4 years ago

can you explain where you conneted the power switch and panic buttom



Question 4 years ago on Step 1


First of all congratulations on your build and guide. It is very well written with alot of info.

I am looking to build a similar robot but on a 4WD platform. The thing is, for remote control, do I need such an expensive Transmitter and Reciever?

Could you reccomend something cheaper, or atleast tell me some minimum requirements for it.


PS: I am a beginner.


Question 4 years ago on Step 3

Thank you a lot for adding an wiring diagram. I am beginner and this diagram is very helpful. But still not all is clear for me. In your similar project (4WD all terrain robot) you have used a Sharp GP2Y0A02Y IR Distance Sensor to control the space in front of robot. In this project you have used a Laser ToF Sensor.
I have checked both sensors and it"s occured that they have totaly different construction. I am sure that connections to the Arduino Mega are also totally different. Could you please also show how to connect the Laser ToF Sensor to Arduino Mega? And another question, if I connect the Laser LoF Sensor to the Arduino Mega the Arduino Code will be still valid? It's mean will be fully operational?


Answer 4 years ago

Hi Iregg, you can see how to connect VL53L0X Laser ToF Sensor in my new instruction - BTW in this project I'm using Sharp GP2Y0A IR sensors in my robotic arm described here VL53L0X sensor is not used in the example code so everything will work. I put it on the front of the robot, because it has greater range than GP2Y0A (up to 2 m) and it is smaller. I will probably use it to detect obstacles in the robot's path, but you will learn about it from my next entry or instruction. Follow my channel and stay tuned :)


Reply 4 years ago

Hi Silver_a. Thank you a lot for your quick answer. Now is everything clear for me. The reason why I asked about this laser sensor is because I will use it not for an automatic gripper but as a controller of robot's path - for detecting of obstacles. Exactly as you have mentioned in your last responce sentence. I will have a possibility to drive towards an abstacle and when robot detect it it begins to slow down. In the distance e.g. 10cm to the obstacle it will stop. Then the only movement possibility will be to turn left / right / drive back. I hope that controlling the 2-meter space in front of the robot will be large enough to brake the robot from the maximum speed to 0 :)
I will wait impatiently for your next instruction. BTW I have smal question, when I was watching yours video (first link) I saw that you use a polish products to demonstrate how the Automatic Gripper works. It's mean you are from Poland. Can we start to communicate in our native linguage? :) It will be easier and more pleasant . :)