ros-industrial / abb_experimental

Experimental packages for ABB manipulators within ROS-Industrial (http://wiki.ros.org/abb_experimental)
Apache License 2.0
134 stars 116 forks source link

Add gazebo support for IRB1200 5/90 variant #110

Closed tulku closed 5 years ago

tulku commented 5 years ago

This is built upon the initial work of @stwirth (https://github.com/ros-industrial/abb_experimental/pull/98) and @jonbinney

Intertials

Meshlab was used to calculate the inertia tensor, the center of mass and the volume of each collision mesh. This is the method explained in this very well known tutorial. Meshes were scaled 10 times to get better results.

To calculate each link mass a constant density in the entire robot was assumed and then distributed the mass using the calculated volume of each link.

I used the obtained values for all joints except for joint_6 where they made the robot "crash". Maybe it's because the values are too small?

The new inertials look like this: screenshot from 2019-02-28 19-56-24

I tested the cylinder approximation for link 6 but those values failed in the same way, and were also very small.

Dynamics and control

Gazebo plotting tool was use to get and idea of the robot responses to motion commands. The original values made the robot oscillate significantly while moving, as can be seen on this plot: screenshot from 2019-02-28 18-58-01

The new values make the robot move smoothly and pretty quickly: screenshot from 2019-02-28 19-43-44

I'm pretty sure that we can find even better values if we keep tuning, for example to reduce even more the steady state errors, but I believe that the proposed values are already very adequate.

Testing

Start the simulation:

$ roslaunch abb_irb1200_gazebo  irb1200_5_90_gazebo.launch

Test the controllers:

$ rosrun rqt_joint_trajectory_controller rqt_joint_trajectory_controller arm_controller/command:=joint_path_command arm_controller/state:=feedback_states
gavanderhoorn commented 5 years ago

Thanks for the PR @tulku :+1:.

I've left some questions and comments.

gavanderhoorn commented 5 years ago

@tulku: would it be possible to address the requested changes?

tulku commented 5 years ago

@gavanderhoorn I need to take care of other things now, but I'd like to do them when I have time.

tulku commented 5 years ago

@gavanderhoorn I've updated this PR addressing some of your comments. I can rebase on kinetic-devel when its ready to merge.

gavanderhoorn commented 5 years ago

@tulku: apologies for taking so long, but I've got a few commits I'd like to add to this PR.

Minor changes to the package manifest and .macro_xacro only.

I don't believe you've checked "Allow edits from maintainers", so I can't push them directly.

Would you be willing to enable that? I believe you can still click the checkmark. It should be on the right side of the first post in this PR (see also Allowing changes to a pull request branch created from a fork).

If not I can open a PR against your PR.

tulku commented 5 years ago

@gavanderhoorn thanks for looking into this PR!

The "Allow edits from maintainers" was indeed marked. I unmarked and marked it again to see if that helps... If it does not work, I can quickly merge a PR against my branch.

gavanderhoorn commented 5 years ago

Just tried again and I can't push to feature/abb_irb1200_5_90_gazebo on your fork.

Do you have branch protection configured?

tulku commented 5 years ago

@gavanderhoorn No, I don't see any branch protection configured. I just invited you as collaborator to the fork, with that you should be able to push.

gavanderhoorn commented 5 years ago

Thanks again for the PR @tulku :+1:

performance is indeed quite nice with these gains and dynamics properties.

Thanks for taking the time to contribute it.

gavanderhoorn commented 5 years ago

Squash merging as all commits but the first one are fixups or review changes.