Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

support: add Gazebo simulation models #145

Closed
gavanderhoorn opened this issue Jan 20, 2015 · 7 comments
Closed

support: add Gazebo simulation models #145

gavanderhoorn opened this issue Jan 20, 2015 · 7 comments

Comments

@gavanderhoorn
Copy link
Member

A nice-to-have: add Gazebo compatible versions of the manipulator xacros/urdfs in the support package so they can be placed in simulated worlds.

@gavanderhoorn
Copy link
Member Author

Might also be nice to somehow support The Construct.

@wkentaro
Copy link

wkentaro commented Jun 1, 2016

Hi, I'm trying to do this because I need to simulate robot control for my project in Google Summer of Code in this year.
I worked around and have done 1. spawning model and 2. control joint position with ROS topic interface as shown below. code
Maybe the joint controller should be changed to receive joint trajectory and controlled with actionlib, in normal cases (I have used PR2 and Baxter robots).
Do you have idea about this? I'm new to ros-industrial so please correct me if I'm missing something.

ezgif com-video-to-gif 1

@gavanderhoorn
Copy link
Member Author

gavanderhoorn commented Jun 1, 2016

Hi. Thanks for looking into this.

We've experimented with Gazebo packages for the models in ROS-Industrial some weeks/months ago and this is what we noticed:

  • position based control seems to be the most stable and usable:
    • it's closest to what most industrial robots support
    • doesn't seem influenced too much by guestimation of inertias and masses
    • also doesn't require too much tuning of PIDs
    • it works relatively consistently across multiple versions of Gazebo
  • it pays off and is sort-of doable to keep support for a particular simulator (like Gazebo, but also V-REP fi) separate from the base robot support package, by making the base package contribute just the kinematics, geometry and the minimum dynamics bits, and have all the simulator specific parts be added by an add-on package (so fanuc_lrmate200id_support is the base package, fanuc_lrmate200id_gazebo packages the Gazebo support)
  • it's probably a good idea to make the simulated robot expose the same services and topics as the real hardware would (or at least as much as possible). That means running a FollowJointTrajectory controller over the joints, remapping topics to match ROS-I spec, etc.

Structuring and naming the launch files is something that is rather subjective unfortunately, and I don't think we've had enough exposure to really standardise anything.

The two main approaches (which are very similar) can be found in the _gazebo packages in the abb_experimental and the staubli_experimental repositories. I would appreciate it if you could take a look at those packages and see whether you have any thoughts on if things should be done differently.

Note that the proposed approach is rather ROS focused: still using URDF, only a single robot in isolation, etc. That might be something to address.

@gavanderhoorn
Copy link
Member Author

Also: because of the fact that inertias and masses are really only (gu)estimates, the dynamic behaviour will never really come close to the real robot. I feel this is important to mention, and so at least the Staubli packages include a warning about that (here for the TX90 fi).

@wkentaro
Copy link

wkentaro commented Jun 6, 2016

Structuring and naming the launch files is something that is rather subjective unfortunately, and I don't think we've had enough exposure to really standardise anything.
The two main approaches (which are very similar) can be found in the _gazebo packages in the abb_experimental and the staubli_experimental repositories. I would appreciate it if you could take a look at those packages and see whether you have any thoughts on if things should be done differently.

Thanks for the suggestion, I decided to follow the _gazebo name suffix to simply put gazebo stuffs into that package like the moveit related packages already in fanuc and fanuc_experimental repository.
I sent PR: ros-industrial/fanuc_experimental#20

@gavanderhoorn gavanderhoorn added this to the untargeted milestone Apr 15, 2018
@jediofgever
Copy link
Contributor

Currently, I am interested in this;
progress can be seen in this branch ;
https://github.com/jediofgever/fanuc_experimental/tree/gazebo_dev

Peek 2019-10-14 18-04

@gavanderhoorn
Copy link
Member Author

I'm going to close this.

Reason: creating these packages is quite some work, especially when we'd want to use effort interfaces everywhere -- and we should, as otherwise robot<->world/object interaction in Gazebo becomes very unstable/unpredictable. Effort interfaces would need tuning of PIDs and other such series/variant specific parameters, and with the many models we already support in the repository, that would mean a lot of tuning.

Creating Gazebo support packages for all robots therefore is not something we'll do 'just because we can', but will have to be prioritised based on when it is requested.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Development

No branches or pull requests

3 participants