0
$\begingroup$

Rosanswers logo

Hello, I want to inspect an object on a rotation stage with a 6-DOF robot arm from staubli (TX90 series). Since 6-DOF robots are sometimes limited in their reachable space while inspecting objects with endeffector mounted cameras, I want to extend my system with this a rotary stage. The setup should then look something like this:

image description

But instead of using the stage as a separate robot with a seperate movegroup, I want to integrate the stage into the serial chain of my industrial robot, so that the 6-DOF robot results in a 7-DOF robot. The tf_tree should then look something like this:

image description

So the rotation_link is the new reference frame (or world coordinate system) of my system. My motivation is, that I am able to let MoveIt do the path planning for my entire 7-DOF-system then. I have already written a hardware_interface for my controller including a joint_state publisher and a position controller (the FollowJointTrajectoryAction client was not implemented yet).

Since the Staubli-Driver does not contain any hardware interfaces, that I am able to use with ros_control, I do not know how to combine those two hardware-systems. The staubli robot communication seems pretty isolated to me since it is just communicating with the simple_message protocol after opening a couple of generic nodes (described here).

So to summarize what I am asking:

How can I implement a joint_trajectory_action for those two existing systems?

Before rewriting the whole ros_industrial_client package, I would really like to hear some advices, if there is a convinient way of realizing my plans.

Thanks a lot for your help.

Nils


Originally posted by nmelchert on ROS Answers with karma: 143 on 2018-11-27

Post score: 0


Original comments

Comment by gvdhoorn on 2018-11-27:
An observation: regardless of whether or not the robot driver has ros_control capabilities: achieving synchronised motion between the CS8 controller and the stage is going to be difficult. The stage is a relatively simple device controlled over USB with an unknown delay and no real-time ..

Comment by gvdhoorn on 2018-11-27:
.. (ie: determinism) guarantees afaict.

Coordinated motion between robots and external axes are at the moment still easier to achieve by integrating the additional axes into the robot's motion control system and then controlling that externally.

Afaik CS8 controllers don't support that though.

Comment by nmelchert on 2018-11-27:
I actually do not need realtime capabilities. I do not even need synchronised motion between those two systems. The base minimum of what I am expecting is to consider the rotary stage in the path planning of moveit. If that results in a simple final position for the stage, it would be fine.

Comment by nmelchert on 2018-11-27:\

Afaik CS8 controllers don't support that though.

Do you have any idea how to implement a work around? Has there been nobody before with a similar idea?

Comment by gvdhoorn on 2018-11-27:
re: CS8 support for external axes: you'd have to ask Staubli. It's been a while since I've worked with CS8 controllers, so perhaps the situation has improved, but last time I checked integrating external axes directly into the CS8 controller was not supported (natively at least).

Comment by gvdhoorn on 2018-11-27:
If you don't need synchronised motion then just treat the stage as a "second robot" and express the kinematic relationship in your URDF using an appropriate joint.

MoveIt will take care of the rest. For execution of planned motions, just make sure the driver for the stage accepts ..

Comment by gvdhoorn on 2018-11-27:
.. the regular goals MoveIt uses (ie: FollowJointTrajectory). But if you have a hardware_interface for it then that should be solved already (just use the joint_trajectory_controller).

Comment by nmelchert on 2018-11-27:\

If you don't need synchronised motion then just treat the stage as a "second robot" and express the kinematic relationship in your URDF using an appropriate joint.

I don't quite understand. How can i do my motion planning with respect to the "rotation frame" if the stage if ...

Comment by nmelchert on 2018-11-27:
... it is not part of the serial chain?

Comment by nmelchert on 2018-11-27:\

CS8 support for external axes: you'd have to ask Staubli.

I just talked to staubli. The CS8 controller supports a serial interface (see the handbook of the cs8 controller). The technical support told me that..

Comment by nmelchert on 2018-11-27:
... it is capable of handling external hardware like e.g. rotary stages.

Comment by gvdhoorn on 2018-11-27:
Yes, you can use a serial port to communicate with any serial device, including a rotary stage. That is not the same as being able to kinematically integrate an external axis in such a way that it will result in coordinated motion between the robot and the external axes.

Comment by gvdhoorn on 2018-11-27:
As to your question: MoveIt only cares about two things (here):

  1. seeing JointStates published for all joints you want it to plan for
  2. being able to control all the joints you want it to plan for

Requirement 1 is covered by publishing JointStates for your rotary stage. Requirement 2 ..

Comment by gvdhoorn on 2018-11-27:
.. is covered by having a FollowJointTrajectory server available for your rotary stage. Now you need to do two things:

  1. configure MoveIt's controller manager such that it knows which joints are controlled through which Action srvs
  2. encode the kinematic relationship between robot and stage

Comment by gvdhoorn on 2018-11-27:
The first you do by editing the .yaml files in the config dir of a MoveIt configuration package. The second by editing your .xacro or .urdf and using the appropriate joint type.

Whether MoveIt can meaningfully plan for the setup you describe I can't say though.

Comment by nmelchert on 2018-11-27:
Thanks a lot for your detailes answer.

$\endgroup$

1 Answer 1

0
$\begingroup$

Rosanswers logo

Answer was given in the comments by gvdhoorn.

Thanks a lot.


Originally posted by nmelchert with karma: 143 on 2018-11-27

This answer was ACCEPTED on the original site

Post score: 0

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.