Gazebo | Ignition | Community
Ask Your Question

accuracy of gazebo simulation of arm vs real hardware

asked 2021-03-11 01:20:32 -0500

rakuwaku gravatar image

updated 2021-03-11 03:27:29 -0500


I am interested in getting the most accurate gazebo representation of a custom 7-dof robotics arm, in terms of its dynamics when loaded/unloaded vs the real arm. Is this even possible?

In the open source projects with arms that I see, the gazebo sim do not correlate with reality for the arm. The arm is tuned with some PIDs for the EffortJointController so it works well in sim, but it has not correlation with the real hardware. Most projects actually just use the Hareware_interface/PositionJointController instead since there's no need for a PID.

Given the link inertias, mass, torque limits, vel limit and accel limits in the urdf, is that not enough to give a good representation? What else is missing? In theory, what other factors complicates the simulation such that it cannot realistically match a real arm?

The Atlas was simulated in Gazebo by OSRF for the DRC. It was capable ok walking. Is the simulation an accurate model of the robot there?

I'm using ROS noetic and the default ode engine for Gazebo 11.

edit retag flag offensive close merge delete

2 Answers

Sort by ยป oldest newest most voted

answered 2021-06-09 17:39:19 -0500

Adam Gronewold gravatar image

updated 2021-06-09 17:39:45 -0500

I think, as Dan mentions, arguably the most important detail in relation to simulating real hardware and their corresponding control laws is temporal effects. Sure I can implement a PID controller in Gazebo using many different methods, but it seems that regardless of the dynamic properties that are used, and the route in which PID is implemented, on a model one can't simulate these temporal effects in any real way. If I can design a PID controller that will have 0 s.s. error in Gazebo it is certainly wonderful, but what of rise time? mechanical time constants? These details are arguably just as important, especially because commands will often change before steady state has been reached at all, meaning within a short command sequence a real system and a simulated system in Gazebo will already be behaving fairly differently.

On a similar front, roboticists often come from one of two backgrounds: computer science or control engineering. For those based in controls, like myself, being able to assess my simulated system "open loop" or "closed loop" is very important, but it seems that in Gazebo, neither one can really be simulated. Setting a new velocity, through PID or not, changes this speed instantly. And what if I want my system to have a similar impulse response to the real system? As far as I am aware this really cannot be done as the resulting time history of this actuation will bang on and bang right back off. Any incites on this front would be particularly helpful. Sorry I could not be more help, but I wanted to add my two cents in hopes that some broader attention can be brought to this question.

edit flag offensive delete link more

answered 2021-05-21 12:29:58 -0500

danzimmerman gravatar image

updated 2021-05-21 13:52:04 -0500

What else is missing? In theory, what other factors complicates the simulation such that it cannot realistically match a real arm?*

Yes, I'm interested in this too. I would like an accurate dynamical model of the UR5 and other UR manipulators. But I don't yet know of a package or project that provides this kind of Gazebo "emulator" for a given robot system that includes both its accurate physical dynamics and captures the effects of any software delays (which might be appreciable and more important than subtle dynamic effects.)

To accurately simulate the dynamic response of the robot to command inputs you really need a model of all of its internal software/hardware/firmware controllers and you also need accurate dynamical models of its actuators.

On the subject of actuation, and a modeling approach to make a Gazebo model more realistic, I've been thinking about it but I think it needs to explicitly handle the actuators at least at a simple level.

I feel like there's an important concept put well here by Russ Tedrake:

One thing that might be surprising is that, despite the fact that the joint dynamics of a manipulator are highly coupled and state dependent, the PID gains for each joint are often chosen independently for each joint, and are constant (not gain-scheduled ).


nearly all electric robots have fairly substantial gear reductions, often on the order of 100:1


The "reflected inertia" of the arm at the motor is cut by the square of the gear ratio; or the "reflected inertia" of the motor at the arm is multiplied by the square of the gear ratio. This has interesting consequences -- as we move to the multi-link case, we will see that the inertia of the arm is a state-dependent function that captures the inertial coupling of the other joints in the manipulator. The motor inertia, on the other hand, is constant. For large gear ratios, this means the dynamics of the joint are less dependent on the nonlinear effects of joint position and velocity, making it relatively easy to tune constant feedback gains that perform well in all configurations

However, in short, if we're trying to use an effort controller, I think this means that we must have a simple model for how the arm's inertia tries to backdrive the motor inertias. Simply removing the active torque on the motor rotor does not set the joint torque to zero as viewed from the standpoint of the arm's inertia. Rather, setting the motor torque to zero will allow the rotor to freewheel, which actually dominates the overall inertia of the system. The actual effort seen by the "motor coils," which are what we would control with an effort joint interface, is very different from 1/N the joint torques from the manipulator dynamic equations.

I don't know if there's a good plugin framework for modeling actuator dynamics. Just having the gearbox (like ... (more)

edit flag offensive delete link more


I'm curious if you've looked at the gazebo_ros_motors project. I haven't played with it myself yet, but it looks like it takes a more realistic approach to motor modelling in Gazebo

shonigmann gravatar imageshonigmann ( 2021-06-10 13:10:25 -0500 )edit

I haven't looked at that, looks interesting. Thanks!

danzimmerman gravatar imagedanzimmerman ( 2021-10-15 12:40:48 -0500 )edit

Question Tools



Asked: 2021-03-11 01:20:32 -0500

Seen: 642 times

Last updated: Jun 09 '21