
Simulink Torque Not Changing with Changing Acceleration
6 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
I have created an inverse dynamic model for the human hand and am currently tyring to calculate the finger joint torques given a specific motion input (as a sine wave). I have tried this with multiple methods including the simulink-ps converter with the first and second dervatives provided as well as providing only the input and having simulink calculate the first and second derivative uisng a filtering constant. I change the angular velocity of the sine wave to act as a speed control for the fingers, but not matter what I change it to the output acceleration changes, but the torque always remains the same. I have found the most successful results come from providing the derivatives myself; however, I cannot get the torque to change only if I change the weight of the object that the hand is holding. I did not mess with any of the internal mechanics such as the spring/damper stuff only have the joint angle as the motion input and a sensor for the torque and acceleration. If you have any questions about anything that is unclear feel free to ask or if you have any tips/suggestions that i didn't think of that would be great! Thank you!
3 comentarios
Yannick
el 22 de Feb. de 2021
Editada: Yannick
el 22 de Feb. de 2021
Hi Olivia,
I hope I am not misreading things, but the results for the example using second-order filtering seem more reasonable to me than when explicit derivatives are provided.
With second-order filtering, the results seem sensible enough at first glance, without all the details. At omega = 120 rad/s, the acceleration amplitude is roughly 2000 rad/s^2, and at omega = 10 rad/s, it is roughly 170 rad/s^2, so at least the acceleration amplitude increases when omega increases. As far as the torque is concerned, it seems to oscillate around the same static torque of roughly 5 N.m for both values of omega, and the amplitude is larger in the omega = 120 rad/s case.
With explicit derivatives, the results seem nonsensical. The torques are the same for both values of omega, and the acceleration amplitudes vary inversely to omega. This makes me think that the position, velocity and acceleration signals being fed into the joint are probably not consistent with each other. I don't have your code for them and it is not clear what blocks you are using to generate these signals, so it's hard to tell the exact problem, but here is an example of the equations you'd want (please double-check in case I messed up!):
q = A * sin(omega*t) = A * sin(omega*t + 0)
w = A * omega * cos(omega*t) = A * omega * sin(omega*t + pi/2)
b = - A * omega^2 * sin(omega*t) = A * omega^2 * sin(omega*t + pi)
I would suggest trying the Sine Wave block to generate these signals. Just be careful to enter the correct parameters (frequency, amplitude, phase) for all three. I hope this will help improve the results!
Respuestas (0)
Ver también
Categorías
Más información sobre Multibody Dynamics en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!