Quote:
Originally Posted by AustinSchuh
If you work out the physics, you'll get the following:
torque = J * angular_acceleration + r cross F_gravity
F_gravity cross r -> F_gravity * r * cos(theta)
So, you get
torque = J * d^2/dt^2 + F_gravity * r * cos(theta)
When linearizing, you want to convert your system to be linear. The only nonlinear term above (assuming that torque is your input, which is a reasonable assumption for now) is the F_gravity * r * cos(theta). So, if we define
torque = torque_linear + F_gravity * r * cos(theta)
And then do a variable substitution, we get a linear system back. i.e.
torque_linear = J * d^2/dt^2
|
Quote:
|
For your 1st question, we just did guess and check, IIRC You can also find it from the system dynamics (Weight/MOI of arm, force of gravity, and torque applied by motor), but you'll usually need to tune it anyways. It's also not a huge deal if you get it a bit wrong - the control loop can absorb a lot of it if needed.
|
Thanks for the advice! I spent my study period learning about how cross vectors worked and then went over a few of the concepts with my Physics teacher. I now have a good understanding of what's going on with the feedforward.
Two questions:
1. Shouldn't torque_linear = J* d^2(theta)/dt^2? *
2. Is the goal of the voltage scalar to be as close as possible to
so that it becomes the non-linear part of the equation when multiplied by cosine(theta)?
*I start calculus next semester and have learned only the very basics from the edX class I have started taking to prepare for it (only 1 week in). Apologies if I am missing something obvious.