Hi,
We did it for our own interactive arm with three actuators that communicate through a CAN bus. Here's a quick rundown of what we built and what you might need:
- A valid URDF definition of your joints and actuators,
- A bridge class that will own instances of:
- A pr2::HardwareInterface
- A pr2::ControllerManager
- One pr2_hardware_interface::Actuator for each of your motors
- A node for hardware communication that will own the bridge class.
At initialization, your bridge class will create the actuators that should appear in your URDF and add them to the hardware interface. You will then create the controller manager and link it to the hardware interface. After loading your URDF XML into the controller manager (initXML(...)) you will be ready to periodically update your controller manager, which should call any other controllers you want to run, e.g. a JointSplineTrajectoryController.
I'm not familiar with SSC32 cards, but with our setup we communicate the state through each actuator instance that was added to the hardware interface. The controller manager update cycle will get these values automatically and propagate them to controllers. We run separate threads to get values to and from our bus, and call the controller manager update() method in its own thread.
Hope this helps,