(disclaimer: I'll use a few very definite looking "yes" and "no" answers here. These are all based on the rather minimal description of your system. Please keep that in mind when reading this answer)
Can Moveit plan a path for a robot arm on a gantry
Yes.
There is no difference between a gantry, a robot or a gantry + robot as far as MoveIt is concerned. It's just a collection of links and joints that happen to have a kinematic relationship. MoveIt (ultimately) plans in joint space, so any set of joints can be planned for.
or is that too many links?
No. There is no assumption on or limit to the nr of links and joints a model can contain (other than practical ones (ie: memory, CPU (planning time) and things like IK solver availability (if you want to plan for Cartesian goals)).
Should I modify the URDF for the robot to include the gantry,
No. Never add something to an existing model. Use composition where possible.
or is there a way/reason to make them two separate things.
I wouldn't make them "two separate things". As I wrote above: use composition:
- create the model of your gantry as a xacro macro. Make sure to take things such as prefixes into account.
- define a sane 'attachment' or 'tool' point for your gantry (likely the last link in its kinematic chain)
- create a composite xacro macro that combines the models of your gantry and the UR10
- create a workcell (or whatever you want to call it) xacro macro that places the composite structure (ie: gantry + robot) in its working environment (ie: model the workcell)
Making the composites macros themselves is not strictly needed, but is a nice convenience when you want to reuse those as composable parts. I always do it. If there is nothing to compose further, you create a top-level xacro file that just include
s the highest-level composite and then instantiates it.
Minimal example of this approach: Working with ROS-Industrial Robot Support Packages/Example: adding an end-effector to a robot.
Will a system this complex be able to avoid self colliding in moveit?
Yes.
This is not complex at all.
The composite robot that is. You haven't described your environment, which could add significant complexity.
Also I don't know how to incorporate the gantry servos even once I build a model in moveit.
My suggestion would be to somehow wrap the "clearpath servos" in a FollowJointTrajectory action server. MoveIt can interface with that directly (using a MoveItSimpleControllerManager
) making the whole system almost trivial to integrate (if you're using ur_modern_driver
for the UR10, that also has a FollowJointTrajectory
action server). Use ros_control for the servo interface, then configure it with a joint_trajectory_controller.
One thing to keep in mind is that with two action servers, motions will not be synchronised between the gantry and the UR10.
If that would be desired/required, you would have to probably convert ur_modern_driver
(assuming you're using ... (more)
Hi PeteMakesThings,
I am currently completing a final year engineering research project, and my design includes the modelling and simulation and of a xyz gantry robot. As I have come from a mechanical engineering background I am completely new to the world of ROS and robotics. Thus, I would greatly appreciate all the help I can get.
Would it be possible if you shared the urdf files for your gantry system? So that I can have a look at and gain a better understanding of how to implement my 3D model in urdf format.
Thank you in advance.