We are using XC330-M288-T and XL330-M288-T servos as gimbals in inspection crawlers with RC-PWM control protocol. When in Current-Based Control mode, they get into an unstable high-frequency oscillation in certain positions, especially when there is very little load present. They do not do this when they are in Position Control mode, only Current-Based Position, no matter what the current limit is set to. They only oscillate around 1 degree but it is enough to blur the video and make a lot of noise.
In the attached video you can see at the start the XC330 is in Current-based Control with a 300mA limit and oscillates when moving to the center or getting bumped. We then switch it to Position Mode and it no longer oscillates.
We have tried varying the PID values in the Wizard and this does not seem to fix the issue either. It will still oscillate.
Has anyone ran into this issue and been able to fix it?
I only have an XL330-M288-T and using RC-PWM via a U2D2 and Windows 11 + Dynamixel Wizard 2, and I do not have any vibration problem with Current-based Position Control mode.
What do you mean by using “standard servo library on ESP32”? The Dynamixel2Arduino library? Or do you have another operating system? What kind of Dynamixel Controller do you use?
The oscillation is a result of the high response rate of the internal current controller generating repeated overshoots for these small position corrections. Usually, raising the D gains and reducing P gains can help alleviate this problem… You mentioned you tried adjusting the PID values already, what adjustments did you test?
I tried both the D and P gains in the position control and it did not stop the oscillations, but I will try again and specifically make the changes you suggest.
Also, the changes do not seem to save when I repower the servo. All the settings in blue revert back to factory when the servo is repowered. Is there a specific way to save these changes?
We have multiple gimbal designs, and it only happens on certain gimbals that have similar weight distributions. Some of the gimbals never oscillate. The servos seem like they do not do it unless they are loaded in a specific way. It is especially bad when the crawler chassis and gimbal are both facing straight down. It is also noticeably worse on the XC330 servos.
I am using the ESP32Servo.h library to generate RC-PWM signals. I am using an ESP32 but in the video I was using the U2D2 adapter. It also happens when hooked up to a FlySky or FrSky receiver outputting RC-PWM.
We were able to get the oscillations to stop by decreasing the Position D Gain to 500 and the Position P Gain to 1000. They still try to oscillate when you tap the gimbal, but they quickly dampen and stop.
However, we cannot get the settings to save between resets even with the Bit 1 Restore RAM setting applied.