jacobians, a nice thing (apparently) [robotics to-knows]
Ewwwwwwww Jacobiansssssss! I remember learning this "nonsense" in Multivar-Calc and being like "what is this nonsense and when will I ever use it?"
Well this thing is apparently not nonsense and it has a few incredibly useful uses (as far as uses go). Jacboians start becoming useful when we start talking about what's called Resolved Motion Rate Control (RMRC), which is a technique for controlling systems that involves relating the linear velocity of the end effector (desired), and the angular velocity of the joints/motors. And the system is derived from the kinematic equations... we'll look into why it's useful in a minute.
the basics of the Jacobian for RMRC:
So let's say I have the kinematic equations below...
What I want to do, is create a relation between the velocities at the end-effector and the joint velocities. And how we do this, is we take the Jacobian of the system.
So I'm not going to make a post on how to actually take a Jacobian. Khan Academy has some good videos on that if you aren't familiar. But I do want to take a second and explain WHY WE CARE. What knowing the Jacobian results in, is a new system of equations derived from the kinematic equations of the robot system and it looks like this:
What this shows you is, if Q is the vector of joint velocities and V is the vector that determines the velocity we want of the end effector, then we can relate these two quantities via the Jacobian or Inverse Jacobian as shown above. So if we'd like to control the velocity of the end effector, we now know what needs to be done to the joints, how fast we must spin them and in what direction, to make this velocity at the endpoint occur. So this is really important if we want rate control right?
more uses of the Jacobian:
So this does mean something else though if we look at the formula. In robotics, many times, we're usually in discrete time for control systems because there's no need for continuous time in all cases. Which means we can write derivatives as DeltaTheta/DeltaT and DeltaX/DeltaT, and most of the time we have a small enough DeltaT where this approximates the derivative well. What this means is we can now multiply both sides by this DeltaT (if we know it or not, we just need to assume it's small enough), and we now have...
THIS IS VERY IMPORTANT. TAKE A LOOK AT WHY THIS IS VERY IMPORTANT. What is this thing saying? Let's say I know the joint positions right now (the Thetas), and I know WHERE I AM (using forwards kinematics because we know Thetas) and WHERE I WANT TO GO (a desired position input), so I can find a vector DeltaX which represented where I need to move to get to my desired position...
I can do... J(Thetas)^(-1)*DeltaX to find what my joint movements need to be to get there! This is one of the many concepts in Resolved Motion Rate Control.
So let's say I start the robot at Q=(0,0,0), meaning the system is HOMED. Due to the FK equations I know what Xo is at this point. Now I want too go to Xe=Xo+X (where X is the DISPLACEMENT). I can use the above equations to find the DeltaTheta I have to go to get there and I can command the motors to go to each 0+DeltaTheta!
Now typically, we won't just command the robot to go the whole length of the new position. At each time-step we'll check where we are, where we wanna go, and re-run the above math algorithm. Moving a small DeltaTheta at the time.
This is an intuition of how we can possibly use the Jacobian for inverse kinematic control and position control. On Sunday, I plan to write something about about how (apparently) we can use the Jacobian in statics as well to calculate the torques needed on our actuators.