with great power comes great responsibility, when to do torque control vs pos control [robotics]
Soooo recently we talked about (especially with regard to Chip) how we can calculate the torques needed on each actuator to actually support or exert some sort of force at the end-effector of a robot. Today, in a much less technical sense than Harry Asada described it, we're going to talk about when do you use torque control and when do you use force control in a more intuitive sense.
Let's take the example of a robot that needs to pick up a piece of chalk from a holder and then draw and "A" on a chalkboard with it. The action of drawing, first let's acknowledge, requires both force and position control. We need to draw an "A" which requires position control, and we can't press too hard or too softly otherwise the chalk will break, or not write in the first place.
We're going to use this situation as an example of discussing when and how to use torque control so let's just start by saying you can't do both at the same time. In position/torque combined control it makes sense that you wouldn't be able to do both at the same time in all axis. The reason for this is let's say you're asking the robot to move at a constant velocity in one direction but also telling it to exert a force in that direction --> these two signals will conflict, the system is over-controlled. Avoiding the derivation, here's how you choose in what directions to do what types of control.
First let's setup a piece of chalk robot...
So first, to examine this, we need to talk about constraints. And there are two types. ARTIFICIAL and NATURAL constraints.
Natural Constraints are anything dictated by the laws of nature, for example, we can't have one object pass through another, chalk can't go into the board. If something is moving at constant velocity, the net force in that direction must be zero/etc.
Artificial Constraints are anything we impart on the system. For example if we want something to move in a direction it can move with a constant velocity. We want it to not rotate and so on. In these cases these are task-specific constraints we impose on the system.
Both of these things combine to form a set of constrains the robot must follow in achieving its task. The robot must conform to natural constraints because we live in the world, and it should conform to artificial constrains because otherwise we wouldn't be able to actually achieve the task we want to.
So using this example, what are the artificial constraints, and what are the natural ones? The natural constraints are the fact that we can't shove this piece of chalk through the board. We can't go into the board right? The artificial constraints are that we want to write with this chalk and we want to move the chalk in a specific pattern, so the Vx and Vy must be larger than zero. Vz must equal zero because we can't move into the board and we aren't trying to lift the chalk up, the rotation velocities must also be zero because we aren't trying to rotate the chalk.
The other rule of thumb is along each axis we can't have both torque and force control. It isn't allowed. Again, this would lead to conflicting control inputs and we can't have that. So what we must do is decide which axis will we do force control and which do we do torque control.
Think of it like this...
In any axis we are able to move, we want to do position control, the reason for this is if we can arbitrarily move in any direction we want to and only need to control the position of the robot in those directions.
In any axis we are not strictly able to move, we want to do force control because in these directions exerting too much force can cause the arm to break or the object being manipulated to break and etc. Bad things can happen if we don't control the forces we are exerting in those directions.
So that leads us to this diagram:
And that's it, that's really how you decide which directions to move and which direction to not.