ros-industrial / abb_driver

(old) ROS driver for ABB IRC5 / RW5 or RW6 controllers (Simple Message & RAPID)
http://wiki.ros.org/abb_driver
29 stars 17 forks source link

Robot does not move #10

Closed SaengthongStk closed 3 years ago

SaengthongStk commented 3 years ago

I'm using ABB experimental package with RobotStudio and ROS-kinetic. I followed these tutorials to configure ROS and an ABB IRB1200 robot in RobotStudio to work together. When launching the moveit_planning_execution.launch in a terminal that's shown below.

$ roslaunch abb_irb1200_5_90_moveit_config moveit_planing_execution.launch sim:=false robot_ip:=192.168.1.1

I get the following error when I start plan and execute :

[ERROR] [1610335075.542277098]: Controller is taking too long to execute trajectory (the expected upper bound for the trajectory execution was 3.590049 seconds). Stopping trajectory.

I tried 2 things in trajectory_execution.launch.xml without success:

  1. Edit the following value from 1.2 to 3.2: <param name="trajectory_execution/allowed_execution_duration_scaling" value="3.2"/> <!-- default 1.2 -->

The result is it takes a longer time to show the same error.

  1. Add the following parameter: <param name="trajectory_execution/execution_duration_monitoring" value="false"/>

The result is it took too long to execute without showing any output on the terminal, I have waited for 3 hours before closing it.

What am I doing wrong?

gavanderhoorn commented 3 years ago

This is really an issue with abb_driver. I might transfer this issue over there later (edit: done).

The RAPID implementation in abb_driver is unable to execute the transferred trajectory within the time expected by MoveIt's trajectory execution manager. That's the component printing the error message you show.

The work-around for this is what you did: disable the monitoring, or allow for more time (also discussed on ROS Answers: How do I disable execution_duration_monitoring ?).

One thing I don't quite understand yet:

The result is it took too long to execute without showing any output on the terminal, I have waited for 3 hours before closing it.

Does your IRB 1200 not move at all, or does it never complete the motion?

We've used abb_driver with quite some robots, and after disabling the execution monitoring, things typically work as expected. Provided everything else is configured correctly of course.

SaengthongStk commented 3 years ago

Thank you for replying.

Does your IRB 1200 not move at all, or does it never complete the motion?

It doesn't move at all. The following picture is the outputs from the pendant.

RS_01

By the way I think it's correctly connected because I set manual mode then jock the robot from RobotStudio and the real robot in RViz can move along.

gavanderhoorn commented 3 years ago

Is the motion task running? Without that task, the robot will not move.

See wiki/abb_driver/Tutorials/RunServer - Robot Motion Task.

For now this doesn't seem to have anything to do with trajectory execution monitor.

gavanderhoorn commented 3 years ago

I've updated the title of your issue, as that's what you observe: your robot does not move.

We don't want to prematurely focus on MoveIt, or on work-arounds for the TEM.

SaengthongStk commented 3 years ago

Is the motion task running? Without that task, the robot will not move.

I'm not sure, Do I have to check here?

image

The pointer doesn't move any where all the time.

gavanderhoorn commented 3 years ago

Have you followed the steps described in wiki/abb_driver/Tutorials/RunServer - Robot Motion Task?

SaengthongStk commented 3 years ago

Have you followed the steps described in wiki/abb_driver/Tutorials/RunServer - Robot Motion Task?

Yes, And I also ran in both MANUAL mode and AUTO mode.

gavanderhoorn commented 3 years ago

Your first screenshot is a typical example of everything running except the motion task.

Can you show a screenshot of the production window on the virtual TP after you've started the motion task?

And can you also verify you have the tasks configured correctly?

SaengthongStk commented 3 years ago

image

image

I'm not sure about setting motion task, I can't configure the motion task both ROS_MotionServer and Ros_StateServer as you can see the following picture.

image

But in this tutorial ,We have to configure the motion task to "NO".

image

gavanderhoorn commented 3 years ago

The ROS_MotionServer is not the motion task. ROS_motion.mod contains the main code for the motion task.

It looks like you didn't configure T_ROB1 correctly, and the code shown is the default code, which is not part of the driver.

That's the reason your robot isn't moving.

You'll either want to remove your current main module, or overwrite whatever you have now with the code in ROS_motion.mod.

See also the second note right under the table in section 3.2 you show in your screenshot:

If T_ROB1 has existing motion-control modules, you may need to rename the main() routine in ROS_Motion.mod to ROS_main(). In this case, set the Entry point for T_ROB1 task to ROS_main().

gavanderhoorn commented 3 years ago

As this doesn't appear to be a problem with the code, but with the configuration of your robot controller, I'm going to close this issue.

That does not mean I'm dismissing your problem, only that we want to keep the issue tracker for reporting problems with the driver itself.

Feel free to keep commenting on the issue of course.

SaengthongStk commented 3 years ago

It works now. Thanks for your help. You help me a lot.