Splitting work between ROS and a custom motor controller board
I'm designing a hobby bartending robot arm around ROS, and I'm wondering what's the best way to implement motor control.
Some background: I'm using brushed DC motors with homemade encoders controlled by various Atmega microcontrollers + H-bridges. Right now, I'm planning on having them communicate via RS-485, with an Atmega32u4 usb bridge to the computer running ROS.
I looked at how the PR2 motor controller boards work, and the only onboard control they do is a 100kHz control loop around the motor current. All other control is done in a realtime Linux loop and communicated using EtherCAT (more details). I'm tempted to copy what they've done, but I'm worried that my lower-cost approach means more onboard control (ie, position/velocity) will work better.
I'm relatively new to this, so any advice on how to implement it, or even recommendations on a better way to do the multi-drop communications would be greatly appreciated. Thanks!