ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question
0

Using abb_driver to send a joint trajectory to a virtual IRB2600 on RobotStudio

asked 2020-08-11 04:33:25 -0500

jsn-54 gravatar image

updated 2020-08-12 02:14:39 -0500

Hi everyone,

I'm trying to have a virtual IRB2600 run on RobotStudio (v2020.1 64 bits) perform a joint trajectory thanks to the ROS abb_driver package (using ROS melodic on Ubuntu).

I followed the instructions given in abb_driver tutorials (http://wiki.ros.org/abb_driver, http://wiki.ros.org/abb/Tutorials) and it seems to works correctly : at least, joint states are correctly received on the ROS PC upon the topic /joint_states (confirmed with 'rostopic echo' command) when I move links on RobotStudio PC.

The "/motion_download_interface" node is running (confirmed with 'rosnode list' command and ROS_INFO msg on the screen of the ROS PC ), it subscribes to the "/joint_path_command" topic (confirmed with 'rostopic info' command). I wrote a python script (inspired by http://wiki.ros.org/ROS/Tutorials/Wri...) that publishes a JointTrajectory msg on that same topic (confirmed with 'rostopic echo' command). But "/motion_download_interface" node seems to ignore it (no ROS_INFO msg on screen saying "Receiving joint trajectory message" as expected according to source code in http://docs.ros.org/kinetic/api/indus... (line 133).

Would you please help find what is missing and how to fix it ? Thanks in advance, best regards ! Here-under is the command and console info. The launch file is given also (see after the verbatim of the console, it comes from the orginal abb_driver package, I just added a call to yaml file that gives the name of the joints 'rob1_1', 'rob1_2'... since in the urdf robot_description, http://wiki.ros.org/abb_irb2600_support , joints are named 'joint_1','joint_2' ).


jonathan@ROS-Ubuntu:~/WIP/test_ws$ roslaunch abb_driver robot_interface.launch robot_ip:=192.168.1.28 --screen
... logging to /home/jonathan/.ros/log/fa13eac8-dbd5-11ea-b6a8-74dfbfc383e1/roslaunch-ROS-Ubuntu-11962.log
Checking log directory for disk usage. This may take a while.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.

started roslaunch server http://ROS-Ubuntu:44685/

SUMMARY

PARAMETERS

 /J23_coupled: False
 /controller_joint_names: ['rob1_1', 'rob1_...
 /robot_description: <?xml version="1....
 /robot_ip_address: 192.168.1.28
 /rosdistro: melodic
 /rosversion: 1.14.7

NODES

  /
    joint_trajectory_action (industrial_robot_client/joint_trajectory_action)
    motion_download_interface (abb_driver/motion_download_interface)
    robot_state (abb_driver/robot_state)

ROS_MASTER_URI=http://localhost:11311

process[robot_state-1]: started with pid [11977]
process[motion_download_interface-2]: started with pid [11978]
process[joint_trajectory_action-3]: started with pid [11979]
[ INFO] [1597152272.686230412]: Added message handler for message type: 0
[ INFO] [1597152272.688071569]: Robot state connecting to IP address: '192.168.1.28:11002'
[ INFO] [1597152272.688757197]: Adding rob1_1 to list parameter
[ INFO] [1597152272.688794961]: Adding rob1_2 to list parameter
[ INFO] [1597152272.688836581]: Adding rob1_3 to list parameter
[ INFO] [1597152272.688865491]: Adding rob1_4 to list parameter
[ INFO] [1597152272.688893494]: Adding rob1_5 to list parameter
[ INFO] [1597152272.688916966]: Adding rob1_6 to list parameter
[ INFO] [1597152272.688960781]: Found user-specified joint names in 'controller_joint_names': [rob1_1, rob1_2, rob1_3, rob1_4, rob1_5, rob1_6]
[ INFO] [1597152272.695712283]: Connected to server
[ INFO] [1597152272.695786253]: Initializing message manager with default comms fault handler
[ INFO] [1597152272.695834132]: Default communications fault handler successfully initialized
[ INFO] [1597152272.695871523]: Initializing message manager
[ INFO] [1597152272.695913117]: Added message handler for message type: 1
[ INFO] [1597152272.698848773]: Added message handler for message type: 10 ...
(more)
edit retag flag offensive close merge delete

Comments

Please always link to packages and tutorials you are using and reading. Otherwise we need to search ourselves, and we cannot be (absolutely) sure we find the same things you do.

gvdhoorn gravatar image gvdhoorn  ( 2020-08-11 08:19:49 -0500 )edit

1 Answer

Sort by ยป oldest newest most voted
0

answered 2020-08-11 07:53:45 -0500

gvdhoorn gravatar image

updated 2020-08-12 03:54:53 -0500

But "/motion_download_interface" node seems to ignore it

Do you see the "client at X.X.X.X connected" message twice on th teach pendant? Once for the state server, and another time for the motion server?

If not, you cannot execute motions.

Second thing to check: is the motion task actually running?

Please check the steps in the Robot Motion Task section of wiki/abb_driver/Tutorials/RunServer and make sure the motion task is running, as otherwise no motion can be executed.

Note: having a connection is not sufficient. The motion task must be running as well, as that is the task which will actually execute the motion (the motion server only handles network traffic).


Edit: from the roslaunch output and the TP lines you commented it looks like everything is connected.

I wrote a python script publishing a JointTrajectory msg on that same topic (confirmed with 'rostopic echo' command

The normal way to interact with the driver is to write an action client which constructs a goal (with a JointTrajectory) and then submits that goal to the action server (which is exposed by the joint_trajectory_action node in your .launch file).

Provided your custom .launch file is starting all the required parts, and the IRC5 is executing the required programs, I would expect that to work.

I don't have an example for abb_driver specifically, but that would also not be needed: the action server and client are generic. You could use motoman_driver/examples/simple_trajectory_action_client.py as inspiration.

Additional comment: do not add URDFs nor custom .launch files (or anything really) to the abb_driver package. Create a proper robot support package.

Even better: extend abb_irb2600_support and add your variant there. Make copies of the .launch files in that package for your variant (these launch files).

Try to avoid starting anything in abb_driver directly when working with a particular robot. Always use the .launch files in the support package.

If after writing an action client things still don't work, please make a wireshark capture of the traffic between your ROS PC and RobotStudio. That should show us whether the trajectory is sent to the controller or not.

edit flag offensive delete link more

Comments

Thanks a lot gvdhoorn for your valuable help.

Actually, I can only see one log "Connected to server" on the ROS PC. So the motion server may not be correctly set ? How can I check this ?

As regards the 'motion task', it's on the robotstudio PC, in RobotStudio's "RAPID" tab, that's it ? Yes it's running (selected tasks are T_ROB1, ROS_MotionServer and ROS_StateServer, pointer at line 69 of ROS_motion script, instruction WaitTime 0.05, 'Motors on " in journal log.

jsn-54 gravatar image jsn-54  ( 2020-08-11 08:14:32 -0500 )edit

Please update your original question text with a verbatim copy of both the command (ie: roslaunch) and all the console text which is printed by roslaunch and all the nodes.

Append --screen to the roslaunch command.


Edit:

I can only see one log "Connected to server" on the ROS PC.

actually, I was wondering about the teach pendant. It should print log statements as well.

gvdhoorn gravatar image gvdhoorn  ( 2020-08-11 08:17:45 -0500 )edit

CTRL+F5 on RobotStudio shows : ROS_StateServer->StateServer: Waiting for connection ROS_MotionServer->MotionServer: Waiting for connection ROS_StateServer->Client at 192.168.1.114 connected ROS_MotionServer->Client at 192.168.1.114 connected

jsn-54 gravatar image jsn-54  ( 2020-08-11 08:48:47 -0500 )edit

Thanks for these complementary and usefull elements. Actually, I thought I could skip actions (my experiments are on 'fire and forget" mode, no need to have any feedback) so I focused on simple message communication. I'm on holidays tomorrow, so I'll study and implement your recommendation on september. Once again, thanks for your valuable help !

jsn-54 gravatar image jsn-54  ( 2020-08-12 04:24:37 -0500 )edit

Actually, I thought I could skip actions (my experiments are on 'fire and forget" mode, no need to have any feedback

If you omit the client.wait_for_result() bit, you essentially get fire-and-forget, but with actions.

At least with actions it's a choice. With topics you have no choice.

gvdhoorn gravatar image gvdhoorn  ( 2020-08-12 04:28:59 -0500 )edit

Question Tools

Stats

Asked: 2020-08-11 04:33:25 -0500

Seen: 218 times

Last updated: Aug 12 '20