Hi @jangunhed,
Welcome to the RobotShop community! 
What you describe is exactly right. That being said, there are a few ways to improve the results:
-
You can increase the baud rate. The communication was tested with up to 36 servos at 500 kbaud with no errors, so this should be safe unless you use very long cables between the servos. Increasing the baud rate won’t solve bus contention but it can at least reduce a bit the duration of transmission.
-
Since you are using a RPi4, you should try and use the multiple UART buses available on that board. This has been done already for a humanoid project. You can read more about it here (this is a long topic, you have been warned!
). You may want to contact @cmackenzie as he was the main driving force behind those effort and has done most of the work (including a full library for optimized comms!)
You can also use CL and CH for collision situations. They respectively cause the servo to either go limp or hold when they hit an object by setting a threshold for current consumption, requires some trial & error to find the right value for different situations. That way you don’t have to micro-manage each servo continuously and instead can just read its status during motion to check for early hold/limp (vs motion).
Sincerely,
). You may want to contact