# Point streaming with multigroup Motoman systems

Hello everyone, I am working on a system consisting of a 6-axis Motoman MA2010 manipulator and a 2-axis Motopos D500 tilt-rotate positioner. The positioner is integrated with the manipulator as external axis. I have created the following two packages for integrating manipulator and positioner: motoman_ma2010_d500_waam_support and motoman_ma2010_d500_waam_moveit_config. The relevant manipulator and positioner packages can be found in PR#266.

I am able to execute trajectories to both the manipulator and positioner using PR#259 on the ros-industrial/motoman repository and using the joint_path_command topic.

However, we need to also stream trajectory points in real-time, so we would also need to use point streaming. I have so far tried the implementation provided in PR#215 in combination with PR#259 and the motoman_ma2010_d500_waam_moveit_config package but have run into issues.

A subscription to the topic joint_command, through which points should be streamed, does not seem to be created by motion_streaming_interface. I have created a simple node that publishes small joint angle increments to joint_command. On the other hand, three joint_path_command topics are subscribed to by motion_streaming_interface. Two are namespaced (arm and positioner) and one is not.

A possible cause for this might be that we are launching robot_multigroup_interface_streaming_dx200.launch, not the regular robot_interface_streaming_dx200.launch. The difference is that argument version0 is set to false. This means that the driver assumes a newer version of the "client" with multi-group support. I have tried to investigate what is meant by "client" and was trying to find out whether the version of the motoman driver code that has multi-group support is also the version that contains the point streaming implementation. So far, I was not able to distinguish the two versions of the motoman driver (multigroup and non-multigroup).

So my question would be: where can I find the two different versions of the "client"? Knowing this would help me investigate more on whether the point streaming implementation is included in both versions of the "client".

My guess above that the client version is the issue is not very informed so any input on potential other reasons for why a subscriber to the topic joint_command is not created would be very helpful.

Then more generally, I was wondering if anyone has successfully attempted this so far and if so, would you be willing to share your code?

Thomas

edit retag close merge delete

Sort by » oldest newest most voted

This is not supported by those PRs as the PRs target the single-group code paths. The subscriber and subsequent processing of incoming points is only added and activated whenever the single-group initialisation is run in motoman_driver.

where can I find the two different versions of the "client"?

you can't, as there is only one implementation. There are different execution flows through the code for the single and multi-group cases.

Adding streaming support to multi-group setups may not be trivial, as mapping between joints (on the ROS side) and joints on the MotoROS side may not be trivial (and there are other difficulties). The code for the single-group setup may help, but I'm not sure whether there are subtleties with multi-group setups that may not be apparent.

more

Hi Gijs, thanks for the prompt answer. We will eventually need the capability to stream points to the multigroup system due to our project's requirements so we (that is me with the help from some students at the U of A) will need to make this happen in the next 3 months if possible.

This seems to be a bigger task based on your answer but point streaming seems to be something that is gaining popularity in the community. So I am thinking that developing this feature and eventually adding it to the motoman_driver might be worth the effort from our side. What do you think?

( 2019-06-13 11:28:12 -0600 )edit

point streaming seems to be something that is gaining popularity in the community.

if you're referring to the motion interfaces that "other" industrial robots support, then I'm afraid there's no point in comparing that to the Yaskawa interface. Yaskawa controllers don't support such interfaces, and even internally they work differently. You don't explain what you want / need to do, but refer to ros-industrial/motoman/issues/219.

( 2019-06-13 15:19:51 -0600 )edit

point streaming seems to be something that is gaining popularity in the community.

Sorry, should have been more specific. As we have a Yaskawa system, I am not really interested in other robot manufacturer's interfaces. I just thought that other Yaskawa users might be interested in multi-group point streaming.

You don't explain what you want / need to do, but refer to ros-industrial/motoman/issues/219.

Given your initial answer, we (my research group) need to extend point streaming as implemented in PR#215 to handle multi-group systems. As this seems to be non-trivial, at this point, I think we need to fully understand the driver code to get a feel for the complexity of this task. I've also reached out to Ted Miller hoping that he can provide some insight on the MotoROS/MotoPlus side.

( 2019-06-13 17:07:04 -0600 )edit

Given your initial answer, we (my research group) need to extend point streaming as implemented in PR#215 to handle multi-group systems. As this seems to be non-trivial,

that is only my initial assessment. It may actually just be a matter of copy-pasting or calling methods in the other code-paths. At this point I don't know, but there will be some things that need to be adapted to the specificities of a multi-group setup.

( 2019-06-14 01:55:46 -0600 )edit