chip updates: using the Jacobins to figure out if our motors are strong enough [updates]
So we learned in 2.12 today, we can use the Jacobian for even more things that just resolved motion rate control. It turns out there's a relation between the force on the end-effector and the torque required by the actuators relating to the Jacobian as well.
Treq=J(transpose)*F(arm must apply)
So in the case of chip, where is the force we need to apply. It's literally the force in the upwards direction that's the weight of the robot at the end of the robot. Which means it's <0,F_w,0> according to the coordinate system we developed last time. The force the robot needs to APPLY to stay up then, is <0,-F_w,0>.
So we can build a matrix T_act=J(T)*<0,-F_w,0> --> but these answers depend on the position of theta_1, theta_2, theta_3 right? What we care about is the robot is able to support its weight across the trajectory of motion.
So to Matlab we go to make sure the robot can support its weight in the following positions:
We really want to generate across all theta_1's and theta_2's can the robot support itself right? Does it ever go above 260Nm required which is our max actuator torque at stall?
We're going to do this in MATLAB!!! Now just for a sanity check, here are the actuator torques for a weight W, on the actuators symbolically, let's plug them in and evaluate. This is also at joint angles theta_1 = -45d theta_2 = 0d and theta_3 = 90d which is roughly the first of the three configurations above.
Assuming the following:
We get the following required actuator torques, ASSUMING NO FRICTION AND AN IDEAL SET OF ACTUATORS AND CONDITIONS.
So the torque on the first actuator required is roughly 0Nm which makes sense considering the load is along the axis of the lever arm between the foot and actuator 1 in this ideal case.
The torque required by actuator 2 is a small 14Nm in the negative direction. The negative direction makes sense if you refer to the diagram in the last post regarding the directions of the actuator.
The torque on actuator 3 is expected to be high, it's holding most of the weight of the robot and 500Nm is also assuming the robot is 50kg and all of that weight is on ONE leg. Which is a lot! But the magnitude makes sense but the direction seems opposite - so let's check.
So I think I reversed the direction of the force vector - I put in <0,W,0> not <0,-W,0> which would make sense. ALL signed flipped when I flipped the sign so that means T_3=+91 and T_2=+14. But this also doesn't make sense because I feel like T_2 should be negative and T_3 should be positive. I'm going to check myself and get back to you.
Okayyyyyyy found it! Theta_2 is REVERSED or at the very least un-clear in the diagram we made previously. Which means we're really going to re-draw this diagram on the computer so in-fact BOTH T_2 and T_3 SHOULD be positive in this case which is fine. Because the script is right my diagram is just wrong.
Here's a NEW DIAGRAM based on what we know now, and it's a little clearer.
This is the actual CHIP Leg model it is simply easier to read. I would like to make the point that we haven't CHANGED the model the math was CORRECT in the first part we had T2 going the correct way, it was just marked unclearly, or incorrectly maybe in the pervious diagram and that's amended in this one.
Let's try a few more angles...
Same forces, let's just say theta_1=0, theta_2=0, theta_3=0 simulating the robot getting up off the ground...
So we actually get <0,0,150> respectively meaning actuator three is bearing all the load. What I want to do is actually make this model a little more accurate by saying L6>L3 because in reality I think it is. So let's say L6=38cm.
In this case, <40,0,190> Nm is the respective torques on the actuator. What I'm wondering is why T2=0? That doesn't seem right, so let's check the math there again. The other two joint torques seem fine and they're ALL below 260Nm which is good.
So looking at the JT(0,0,0) matrix...
It seems for actuator 2, the only time torque would be needed is if there was a force in the x or z direction, which makes NO sense because the only time a torque should be needed is if the force is in the y direction. So I think our theta is in-fact wrong. Let's go take a look. Theta_2 should be a positive rotation by theta_2 around the X-Axis.
aha.... it's about the Y and we didn't catch it before because we were always using theta_2=0! Good thing we checked. Let's fix this.
It SHOULD BE: R2=[1,0,0;0,cos(theta_2),-sin(theta_2);0,sin(theta_2),cos(theta_2)];
Oops - used the wrong matrix. Let's re-calculate now!
Now we get <40, 20, 190> for (0,0,0) and <28,14,120> for (-pi/4, 0, pi/2) and ALL the magnitudes and directions DO make sense this time!
So the model is contained in a Matlab script I will upload to the GitHub at some point. When we refine it, it will be a proper Matlab script that does both input and output of the thetas, desired positions, torques, etc.
So those are the two actuator positions we really wanted to check because those are the places we were most worried about the joints failing. There are definitely other places that need higher torques, HOWEVER, we will likely not reach these places ever (legs flat out, etc) and also remember that this is assuming the whole robot's weight is on ONE leg AND that the robot weighs 50Kg which I don't think it does. So the safety factors here are pretty high for actuators rated to 260Nm. We haven't broken 200 yet.
We may want to create some sort of visual model for this in CAD or something. Or MATLAB that might be even better now that the system is built :)