Hi everyone,
I’ve recently run some tests on Trifinger robot to investigate how well the firmware can track the desired torques.
I simply sent some desired torques in a form of sine wave with an amplitude of 0.1 Nm at 0.5 Hz and recorded the measured torques. Below is the resulting plot
I observed that the measured torques do not match the reference closely, especially around the peaks. I guess the problem might come from inaccurate PI gains of FOC, but not entirely sure. Does anyone have any insights into what could be the root cause? Thanks!
Which software interface did you use to send the torque commands?
In case you use the one from the “robot_fingers” package: There are some safety checks happening under the hood, which can modify your desired action before sending the command to the robot. One of these safety measures is some velocity damping which prevents the joints from getting too fast and might explain your observations. You can check this by comparing the the “applied” action (you can get this via the get_applied_action()
method from the robot frontend).
This damping can be configured, but unfortunately this is not yet documented properly. Let me know if this is indeed what you are using, then I’ll put the documentation on my todo-list for the next days.
Thank you Felix,
Yes, I used the interface from “robot_fingers” package to send torques. Upon double-checking, I found a piece of code that adds velocity damping robot_fingers/include/robot_fingers/n_joint_blmc_robot_driver.hxx at 1b4db189f21b597416b4a46a28b3f70236de59d4 · open-dynamic-robot-initiative/robot_fingers · GitHub
I can turn it off by setting “safety_kd” to zero, but the velocities will be too high. Keeping both “safety_kd” and desired torques small works for my case.
Great you already found it. I now also wrote some basic documentation on the config options. Not yet merged but you can already see it in the corresponding pull request.