ros-industrial / abb

ROS-Industrial ABB support (http://wiki.ros.org/abb)
145 stars 152 forks source link

How to improve the max trajectory size of abb_driver #151

Closed YuanfaTao closed 5 years ago

YuanfaTao commented 6 years ago

I've found that the MAX_TRAJ_LENGTH is defined in ROS_common.sys, which is 100.

https://github.com/ros-industrial/abb/blob/kinetic-devel/abb_driver/rapid/ROS_common.sys#L37

But, in my application, we may need download more than 100 trajectory points.

So, I have two questions:

i. why did you use 100 as the MAX_TRAJ_LENGTH, can we direct impove it?

ii. If we cannot improve the trajectory size by direct modifying ROS_common.sys, is there any other solutions?

Thanks!

gavanderhoorn commented 6 years ago

@YuanfaTao wrote:

Why did you use 100 as the MAX_TRAJ_LENGTH,

because it was a suitable trade-off between maximum supported trajectory length and length of the array in rapid. Uploading trajectories is typically very fast (see #142), so there's no performance aspect to it.

can we direct impove it?

If you mean: can we change the value, then: yes. You should check the industrial_core side of things as well to make sure there are no assumptions about the value being 100 there, but I don't recall anything like that.

If we cannot improve the trajectory size by direct modifying ROS_common.sys, is there any other solutions?

Right now there is no other option (at least not if you don't want to develop it), abb_driver uses trajectory downloading. Streaming would remove this limitation, but will affect other aspects.

In the future we'll be migrating to an EGM+RWS based driver, which will not have this limitation.

gavanderhoorn commented 6 years ago

See ros-industrial/industrial_core#147 for a related issue btw.

gavanderhoorn commented 5 years ago

Closing due to inactivity.

Feel free to keep commenting on the issue though.

jclinton830 commented 5 years ago

Is it possible to increase MAX_TRAJ_LENGTH?

When we tried to increase this value to 250 the controller was giving us type mismatch errors. Even though we just changed the number from 100 to 250.

gavanderhoorn commented 5 years ago

Yes, it's possible, but you'll have to make sure to update your local copy of industrial_core as well, as the same maximum length is encoded there.

jclinton830 commented 5 years ago

@gavanderhoorn Could you please point where exactly in the Industrial Core the changes should be made? I did a search for the MAX_TRAJ_LENGTH keyword in the industrial core directory and nothing came back on the search.

jclinton830 commented 5 years ago

Tried to find where this is referenced within industrial core package. Have not been able to find where exactly this value has been encoded. Some help on where this is would be much appreciated.

gavanderhoorn commented 5 years ago

Apologies for my delayed reply. And for the confusion.

There is a maximum nr points to a trajectory as specified in industrial_robot_client, but that is only for actual JointTraj messages (here), but those are not used with abb_driver.

abb_driver uses a subclass of JointTrajectoryDownloader which just loops over all points in a trajectory (here).

jclinton830 commented 5 years ago

Hi, thanks for getting back. We solved the issue by deleting the ROS_trajectory variable from the program data in the controller, and by performing a rapid restart on the controller after changing the constant from 100 to 2000.

haijing66 commented 3 years ago

@jclinton830 hello, i have the same error with you. i tried to increase the value of MAX_TRAJ_LENGTH to 1000 the controller was giving us type mismatch errors. Can you describe in detail how you made it successful. thank you.