Cannot control IRB2600 speed with abb_driver in RobotStudio

asked 2021-08-18 15:53:23 -0500

pwyq gravatar image

Hi ROS community, I am using ROS melodic with abb_experimental (abb_driver) on Ubuntu18.04 to control an IRB2600 robot arm in ABB RobotStudio. I followed this Using Simulated Robot in Robot Studio to set up the communication, and it works perfectly.

I am able to control the robot in two ways: (1) on Ubuntu terminal, directly use the command: rosservice call /joint_path_command <trajectory> ; (2) using Python actionlib and followed this simple_trajectory_action_client.py example. Both approaches can make the robot arm follows given trajectory points; however, the problem is that the joint velocity and acceleration seems not being controlled by the command. For the first approach, the velocities and accelerations in the <trajectory> seems have no effect on the robot (I tried the value from 0.01 to 1 for each joint and observed no visual difference of robot movement). For the second approach, it seems that joint velocities and accelerations are not controlled as well (I also tried different values and observed no difference). In addition, there is always a 30 seconds duration between SimpleActionClient.send_goal() and SimpleActionClient.wait_for_result() (i.e., the complete time of the task is independent of the trajectory length. In RobotStudio, the robot moves fast if given trajectory is long and moves slow if given trajectory is short).

There is one warning from roslaunch stating Velocity validation disabled.

pwyq@pwyq-VirtualBox:~/catkin_ws_py3$ roslaunch abb_irb2600_support robot_interface_download_irb2600_12_165.launch robot_ip:=192.168.0.101    
......
[ WARN] [1629314504.075782823]: Unable to read velocity limits from 'robot_description' param.  Velocity validation disabled.

I found that abb_irb2600_support/config only have joint_names defined, while the other, for example abb_irb120_moveit_config/config, have joint_limits etc defined.

Is my problem (i.e., cannot control IRB2600 speed through ROS) because the lack of support of moveit on IRB2600, or could the problem comes from RobotStudio / abb_driver / ROS...?

Thank you in advance for any help! I can attach code if that's necessary to the problem.

edit retag flag offensive close merge delete

Comments

Can you show an example of a JointTrajectory that you're submitting as a goal?

Both the code you use and the JointTrajectory goal which is submitted? You can rostopic echo the goal topic.

And some expectation management: abb_driver will never come close to the performance of abb_robot_driver, but the latter will require an EGM license.

gvdhoorn gravatar image gvdhoorn  ( 2021-08-19 02:09:43 -0500 )edit

I found that abb_irb2600_support/config only have joint_names defined, while the other, for example abb_irb120_moveit_config/config, have joint_limits etc defined.

A robot support package is completely different from a MoveIt configuration package, and the files you refer to don't have the same purpose. The fact both packages have a config directory doesn't really mean anything.

Is my problem (i.e., cannot control IRB2600 speed through ROS) because the lack of support of moveit on IRB2600, or could the problem comes from RobotStudio / abb_driver / ROS...?

What made you conclude there is a "lack of support of moveit on URB2600"?

gvdhoorn gravatar image gvdhoorn  ( 2021-08-19 02:11:54 -0500 )edit

Hi, thank you. The command approach is here rosservice call and Python code is here JointTrajectory Goal code. The command approach submit trajectory points instead of a goal, and the Python submits a goal; the /goal topic output is here rostopic echo. From my understanding from this post, abb_robot_driver requires extra work.

I conclude the lack of moveit on IRB2600 because there is no existing package (but I'm sure it's possible to make it my own).

pwyq gravatar image pwyq  ( 2021-08-20 11:08:35 -0500 )edit