This tutorial is intended to complement RobotShop’s Drive Motor Sizing Tool by providing you with a step by step explanation as to the calculations behind the dynamic tool. In the image below, half a mobile robot is shown. Although in this scenario only two out of the four wheels are driven, the equations below can be used for any number of passive and driven wheels, as well as for tank tracks. The equations are presented without units (units are presented with the drive motor selection tool).

To calculate the required torque, power, current and battery pack required by a wheeled mobile robot, there are several principles that must be understood: concept of vectors; 2D Force balance; Power; Current and Voltage. If you do not understand these concepts, you are encouraged to research them prior to reading this tutorial.

In order to roll on a horizontal surface, a wheeled robot’s motors must produce enough torque to overcome any imperfections in the surface or wheels, as well as friction in the motor itself. Therefore theoretically, a robot (small or large) does not require much torque to move purely horizontally. Obviously there will be more friction and resistance in a large robot than in a small robot, though it is still exponentially less than when a robot encounters an incline.

In order for a robot to roll up an incline at a constant velocity (no acceleration or deceleration) it must produce enough torque to “counteract” the effect of gravity, which would otherwise cause it to roll down the incline. On an inclined surface (at an angle theta) however, only one component of its weight (**mgx** parallel to the surface) causes the robot to move downwards. The other component, **mgy** is balanced by the normal force the surface exerts on the wheels.

In order for the robot not to slide down the incline, there must be friction between the wheel and the surface. The motor in a heavy truck may be able to produce 250 horsepower and significant torque, but we have all seen (in person or in video) large trucks simply spinning their wheels as they fall backwards on an icy street. It is friction (**f**) that “produces” the torque.

The torque (**T**) required is:

To select the proper motor, we must consider the “worst case scenario”, where the robot is not only on an incline, but accelerating up it.

Note now that all forces (**F**) are along the x and y axes. We balance the forces in the x-direction:

Inserting the equation for torque above, and the equation for mgx, we obtain:

Rearrange the equation to isolate T:

This torque value represents the total torque required to accelerate the robot up an incline. However, this value must be divided by the total number (**N**) of drive wheels to obtain the torque needed for each drive motor. Note that we do not consider the total number of passive wheels as they have no effect on the torque required to move the object aside from adding weight.

The final point to consider is the efficiency (e) in the motor, gearing and wheel (slip).

This increases the torque required and compensates for inefficiencies.

Total power (**P**) per motor can be calculated using the following relation:

T is known from above and the angular velocity (**w**) is specified by the builder. It is best to select the maximum angular velocity to be able to find the corresponding maximum power. Knowing the maximum power and the supply voltage (V) which the builder chooses, we can find an idea of the maximum current (**I**) requirements:

The two equations above are used to produce the following relation:

Finally, the capacity (c) of battery pack required can be estimated using the equation:

You may wonder why such a large value is needed. This is because when choosing a battery pack, the rated amp hours are not an accurate indicate of the maximum current the pack can produce for extended periods of time. Also, the total charge is rarely retained over time. This way you will ensure the battery pack you select will be capable of producing the current your motors require, for the time you require and with the inefficiencies inherent in recharging battery packs.

Note: This is the battery required PER MOTOR. To obtain a total battery pack required for the robot, multiply this value by the number of drive motors.

## Cameron

Hi there, this is a great post. However, I am struggling to grasp how you go mathematically from M.a = M.g.sin theta + T/R, to M.R(a + g.sin theta). I get M.R(a – g.sin theta). Both beginning and end make sense, I just can’t make the maths work.

## Coleman Benson

@Cameron http://www.robotshop.com/blog/en/files/sunforcebal.jpg may be wrong: in a force balance, M*a = T/R-M*g*sin(theta). Friction is up the incline, in the direction of the acceleration (which is contrary to a ball rolling down the incline).

## Peter

Great article. I am in the process of making a unit to traverse around the farm and change attachments to do various tasks. This article has been a huge help. I am a sparky by trade and therefore doing a hybrid diesel/electric unit using 3 phase geared motors at the drive wheels and controlling these using VSD units. This reduces the size of wire and enables me to use off the shelf control units complete with inbuilt reverse, braking etc. Your info has been a great help in assisting me with calculations.

## Cameron

Ah, that makes sense now, thanks for the reply. How do I establish a value for acceleration? Can I just take the average over the distance, or do I need to consider the moment of inertia if starting from a stand still?

## Coleman Benson

@Cameron It’s really up to you – it’s part of the equation so it needs to be considered. Looking into the moment of inertia may be a bit much (but certainly not out of the question if you want to be precise). Just think of the distance you want it to cover in order to reach a certain speed (from a dead stop).

## Cameron

Yeah that’s what I have done. Looked into inertia calculations but can get a bit nightmare trying to find CG of individual components and such like. Glad you’re still around though, noticed this was originally posted in 2012!

## crawler

Why do we multiply by100/efficiency. What efficiency are we talking about. The torque produced by motor . I am having some problems understanding this part, can u please explain?

## Coleman Benson

@crawler The efficiency is the overall efficiency of the system, most notably the batteries -> motor controller -> DC motors -> Gearbox. If you have data as to the efficiency of each section, multiply them all to get a total efficiency. If not, you will need to estimate the value. For example spur gears are around 65% efficient.

## kelvin

Should add dynamics so that Torque T = T = f*R + Inertia*a/r^2 instead of T = f*R, which is only for statics ?

## Coleman Benson

@kelvin If you know the inertia of the system (not easy to do especially if you’re still in the process of choosing the parts), then you can certainly refine the equations.

## kelvin

is that the inertia of wheel since it is the only rotational part?

## Coleman Benson

@kelvin That seems correct.

## Harshesh Gokani

If in case a robot needs to ‘pull’ a weight of 2000Kgs. Is that similar to ‘carrying’ a weight of 2000Kgs when it comes to calculating motor’s power. If that is correct, can I simply substitute 2000Kgs in place for mass in your calculations ??

## Coleman Benson

@Harshesh Gokani Yes and no; if the load is being dragged as opposed to rolling (i.e minimal friction), there will be significant resistance which needs to be factored into the equation. You also need to take into account the fact that the robot itself will need to weight enough to be able to get traction when pulling a load. The tool / tutorial are really for smaller to medium sized robots – nothing close to 2,000Kg.

## Harshesh Gokani

Thank you sir

The pulling will be done by placing the load on carts having 4 wheels and assuming the weight of the driving robot is enough to get the required traction to be able to pull, what more (if any) changes would I have to make in the calculations given in the tutorial ?

If there needs to be many more concepts to be taken care of, please can you also tell me what I can refer to ?

## Coleman Benson

If the cart has wheels, then you may be able to treat it as a payload, but 2,000Kg may require some additional considerations – it’s essentially the weight of a full sized pickup truck, and significantly more than a full-sized pickup truck can carry. If you’re seriously considering creating a robot to pull 2,000Kg, you should do all of the math and calculations.

## Harshesh Gokani

Thank you sir

We are trying to build an AGV that can pull 2000Kgs. Can you please tell us what are the calculations that need to be considered ?

## Ram

Excellent article! I am trying to build a tennis bowling machine with 2 motors having dia of 4 inches. I want to use 12V DC motors and preferably with < 2.0A peak current for convenience sake. I want to find what is the required torque for (each of) the motors – to get the maximum throw distance of 25m and speed of 120 km/hr. Tennis ball is around 60gram in weight I am thinking of having the throw done from the height of 1.1m height. If you can recommend a motor or specification of the motor, it will be helpful – Thanks again!

## Coleman Benson

@Ram Your application is quite different than the intended use of the Drive Motor Sizing Tool. You would primarily calculate the speed at which the motor + wheel need to rotate in order to launch a ball at a specific tangential speed. The torque calculations is a bit harder since the wheel needs to compress the ball.