Would you please provide me some suggestions to make the actuator X8-16 backdrivable? I designed a cable-driven exoskeleton actuated by X8-16, and the endeffector is attached on the human ankle joint.
However, when I powered the motor on, the impedance of the motor is so high as to I cannot rotate my ankle joint to against the motor (limit the motion of the ankle joint). Is there any method to significantly reduce the impedance on the motor side so I can push and pull the cable end easily to rotate the motor unit?
I know impedance control is a feasibility way to do this. Any Matlab code examples would be highly appreciated.
First off thanks for using the actuators. We always love seeing our products get used on interesting things like exoskeletons
To have the actuators become backdriveable what you want to do is control the effort of the actuators.
I would first do this in Scope . Command the joint you want to be backdriveable to have a zero effort command.
This should be a way to test your system fast and will be your best friend for debugging.
The HEBI docs under for MATLAB tutorials can be found here: https://docs.hebi.us/tools.html#joint-level-control.
An example for command 0 torque for two actuators is something like this:
Code: Select all
cmd = CommandStruct(); while true cmd.torque = [0 0]; group.send(cmd); % immediately sends messages to all grouped modules pause(0.01); end
Thanks so much for your throughout explanation. According to your suggestions, I was able to run the motor with 0 torque, and the exoskeleton became more complaint. However, I held the output side of the cable and try to rotate the motor and I still need about 1.5 Nm torque (feedback from the torque sensor in the motor unit) to make the motor move with a moderate speed. If I want to move the motor faster, the torque value becomes higher like 3~4 Nm (also feedback from the torque sensor).
I would think this is the damping of the motor although it is running with backdrivability. Could you please tell me if there is one way to completely remove the resistance and make the backdrivability more easily?
Secondly, I also wonder that if the backdrivability still exists if the torque command is not zero, for example, how about I want to do some end-effector side force control or torque control based on the motor unit torque control?
Please feel free to let me know if I do not make the question clear.
I really appreciate your time and kind help.
You should be able to accomplish what you want with torque control of the actuators.
The torque (effort) controller in the actuator acts on the sensed torque directly on the output, and the details of how the actuator controls the output torque can be tuned by adjusting the gains on the effort controller. Details on these gains can be found here.
To start off with I would increase the P-gain of the effort controller (Effort Kp in the API) to something like 0.5 (significantly more than the default value). You can also try adding in an I-gain (Effort Ki in the API) of around 10 as a starting point. Play around with the values to see what works for your application. Taking the P-gain higher will help reduce the resistance at zero-torque and improved tracking, but at some point it will become unstable if the value is too large. The same goes (even more so) for the I-gain.
You can tune things interactively using the Gains Tab in Scope. Once you change a parameter, click the "Send" button to have the new gains be applied to the actuator. If you want the gains to persist after the actuator is rebooted, turn on the "Persist Sends" slider before pressing "Send". Once you have the initial tuning done, the best practice is to save the gains to an XML file and load them onto the actuator in whatever API you are using to control the actuator. This makes sure that the tuning of the actuators are consistently set and documented with the rest of your code.
Hope this helps,
Many thanks to your suggestions. I believe this will definitely help a lot. I will follow your guidance to play with those gains.
I also meet one issue that the power source automatically shut down (the indicator is not on) during the motor running. This issue happens when I generate a high impact between the environment and the motor when the motor is running in a speed control mode before the impact and torque control model after the impact, and I saw the motor torque reached around 30 Nm.
Could you provide me some tips why this happened and how to address this question?
Any suggestions would be highly appreciated.
Thanks a lot.
I'm guessing your power supply limited during the run? How are you powering the actuators?
If you can replicate the issue and take a .hebilog file using Scope and share it with us we may be able to help diagnose. The first thing to look at would be the system voltage during the run. If it dips below 18V the actuator may turn off and then reboot.