# robot_ip in industrial_robot_client

Hey, dear all, Recently, I am integrating ros industrial with dual Staubli TX90 arm. Actually, a package for the single arm has been developed at staubli_experimental. We have tested and ran well each controller. But my case is: I need to communicate and control dual arm. And each controller has its own ip address. for instant, left_arm[192.168.169.1], right_arm[192.168.169.2].

Here are what I have done:

1. I studied motoman_driver, and in its case, the industrial::smpl_msg_connection::SmplMsgConnection connet with one robot_ip can connect two controllers. Since I have not used motoman sda series ever, I guess motoman has integrated two controller hardware in one ethernet port.
2. I am rewriting the original staubli-ROS-I to support for dual arm connecting. I intend to use two connect and motoman-like group to manage the states and commands.

And I am here to asking:

1. For anyone who have used motoman sda or have experiments with motoman_driver: Is it right that motoman has only one hardware ethernet ip address to connect two controllers? So the motoplus or controller app will send all states or receive command in one port? How they can pub all states in only one /joint_states?
2. For anyone who have experiments with ROS-I: Is it right to go that I use use two connect with two standalone ip address? How to handle two controller states and commands in one topic, /joint_states, and /joint_trajectory_command? For Q2, I am synchronously coding, it is a really heavy work. I hope anyone could give me advice or a yes to go.
edit retag close merge delete

@Hao Deng: could I ask you to please mark the question as answered by ticking the checkmark to the left of the answer? It should turn green.

That would much more clearly mark this question as answered than when you close it.

Thanks.

( 2017-06-27 10:08:12 -0500 )edit

Sort by » oldest newest most voted

Is it right that motoman has only one hardware ethernet ip address to connect two controllers?

No. SDA* robots use a single FS100 (or newer) controller that controls all groups (4) simultaneously.

The driver thus only needs a single TCP/IP connection to the controller.

So the motoplus or controller app will send all states or receive command in one port? How they can pub all states in only one /joint_states?

I think this is now clearer from my earlier answer above.

In more detail: JOINT_FEEDBACK_EX messages contain one JOINT_FEEDBACK message per motion group, for a total of four messages.

Is it right to go that I use use two connect with two standalone ip address? How to handle two controller states and commands in one topic, /joint_states, and /joint_trajectory_command? For Q2, I am synchronously coding, it is a really heavy work. I hope anyone could give me advice or a yes to go.

If you have two controllers, then asynchronous motion and joint state feedback could be achieved by simply running two instances of the relevant of staubli_val3_driver/launch/robot_interface_streaming.launch at the same time, each instance connecting to its own controller (just supply a different robot_ip to each launch file). Run each in their own ROS namespace (you could set group="left_arm" and group="right_arm" on your launch file include tags, if you decide to create a single wrapper launch file).

This would effectively treat your two arms as two independent, separate robots.

If combined joint states are desired, then an instance of joint_state_publisher with its source_list parameter (see the documentation) set to include the joint_states topics in both namespaces should work.

Synchronous motion with two separate controllers is going to be difficult -- if not impossible -- to achieve without some form of (mfg supported?) synchronisation between the two controllers. It is also not a use-case that the staubli_val3_driver was designed for.

more