I'm assuming you want an answer that discusses how to do this with ROS. There might be ways to do this with the controller alone, but I won't mention those as I don't have any experience with them.
At least one available driver (ur_modern_driver
) has a ros_control
compatible mode.
An approach that might work, would be to combine the ur_modern_driver
hardware_interface
with one controlling your linear rail (using the combined_robot_hw
support in ros_control
).
This would allow synchronised execution of a trajectory across both the 6 axes available from the robot as well as the one from the rail.
The interfaces available to the robot controller and the rail controller will then become the bottleneck: if they delay execution of incoming motions in an arbitrary or hard to predict way, or if there is a significant difference between how your linear rail executes motions from how the UR controller does it, this will not work. But that is not something unique to using ROS, the combined_robot_hw
approach or any of the available drivers.
Millisecond synchronisation of two independent pieces of hw is never easy and adding more software to such a setup doesn't necessarily make it any easier.
I know Universal Robots do sell the hardware to do this, but I don't think UR ROS driver supports this at the moment. Due to the MoveIt architecture a single action server needs to control all the joints to achieve what you want. At worst you may have to customise the driver to add a prismatic joint
I'm not sure this is actually true. I believe the MoveIt trajectory execution component will mix-and-match controllers and submit trajectories to all of them as required by the plan.
If UR has a solution for this I would recommend investigating that.
Extending the driver (any driver) to provide the additional information is most likely much easier than doing a software sync of two (largely) independent systems.
@PeteBlackerThe3rd: if you're referring to the Festo product then I believe that does not support integrated / coordinated motion as the OP describes.
I recently found information about the festo system they are trying to pass as a 7th axis. It stated that it does not do interpolated motion but move the axis independent of the robot. It's advantage is the axis can be programmed from a UR cap on the UR teach pendant.
Thank you for quick replies
this is not really fair: it is a 7th axis.
The fact that it doesn't support coordinated motion or isn't integrated into the kinematics of the base robot controller doesn't change that.