Gazebo Plugin vs Ros Control
Hello Everybody,
I was wondering what the community’s opinion on some standards regarding when to create a gazebo plugin vs using ros control. Currently I can see the value in having a gazebo plugin for sensors/physics usage. And one would use ROS control for actuating any joints using the built in controllers. The question is: Why have a gazebo plugin for diff_drive/tricycle drive/skid steer when ros control would work just the same? The only advantage I see would be for calculating odometry because you can access the joint/link information directly from gazebo. My next question on top of that would be then why not have a seperate gazebo plugin just for calculating odometry.
Thanks for your input in advance.
I won't comment on everything, but:
if you're asking why there is both a
diff_drive_controller
(inros_control
) and a Gazebo plugin then the answer is essentially that it's historical: the Gazebo plugin was created first, beforeros_control
existed. Thenros_control
was created, and some users thought it would be nice to have a Gazebo version of it. That allowed them to useros_control
controllers with Gazebo simulated robots.Then the
ros_control
diff_drive_controller
was written, which, because there is Gazebo integration forros_control
, can be used with both 'real'hardware_interface
s, as well as with Gazebo. You cannot use the Gazebo plugin with a real robot.As you can see, it 'just happened'. There wasn't any (iiuc) analysis of advantages of disadvantages.
Thanks for the answer. I was thinking it was something like that. To be more specific I was thinking that the tricycle drive and diff drive plugin of gazebo could be replaced by a ros control implementation of them for gazebo.