Home | Tutorials | Wiki | Issues
Ask Your Question

pcdangio's profile - activity

2019-06-03 16:43:05 -0600 received badge  Notable Question (source)
2019-06-03 16:43:05 -0600 received badge  Famous Question (source)
2017-12-15 07:41:11 -0600 received badge  Enlightened (source)
2017-12-15 07:41:11 -0600 received badge  Good Answer (source)
2017-10-24 12:28:07 -0600 received badge  Nice Answer (source)
2017-06-30 04:05:04 -0600 received badge  Nice Answer (source)
2017-05-09 12:05:48 -0600 received badge  Good Answer (source)
2017-02-24 12:23:44 -0600 received badge  Famous Question (source)
2016-12-12 17:01:08 -0600 received badge  Famous Question (source)
2016-11-02 10:50:38 -0600 commented answer Static friction parameter issue

I'd say do your free-fall test from at least 5 different angles and see if you can approximate the model. You can also judge the accuracy of your model at that point. But in the end, I really doubt you will be able to tune your PID controller in simulation and copy the gains into a real world system and have them work the same. Even if you model all of your components exactly... physics simulation is still only an approximation of the real world. It's discrete, friction is "modeled", etc.

2016-11-02 10:46:56 -0600 commented answer Static friction parameter issue

As for the system identification... if you have a motor attached to that link in the real world, then there are all kinds of extra dynamics introduced. I'm assuming you turned off your motor and let your link free-fall to take your measurements. In that case, you can't just model it with joint friction and damping... the motor/gearbox has its own inertia term as well. On top of that, backdriving a motor induces currents which will dynamically effect the torque required to backdrive it

2016-11-02 10:37:21 -0600 commented answer Static friction parameter issue

My comment about static friction... static friction is defined as the amount of force required to take an object at rest and put it into motion. Once the object goes into motion, dynamic (aka kinetic) friction takes over and the static friction has no effect. A good description can be found here: http://hyperphysics.phy-astr.gsu.edu/hbase/frict2.html So static friction should have no effect on your link's joint while it is moving... if it does, then Gazebo/ODE is using the term incorrectly

2016-11-02 10:33:05 -0600 commented answer Static friction parameter issue

Integral gain is the only possible way to get rid of steady state error completely. You can always increase your P gain to decrease your steady state error, but it will never reach zero. Also setting a P gain too high will create oscillations around the setpoint that you will have to deal with. If you use a P-I controller, you can use a decent P gain to get a fast response, and a small I gain to clean up the steady state error.

2016-10-31 13:35:23 -0600 answered a question Static friction parameter issue

Your steady state error is probably caused by a Proportional gain that is not strong enough to overcome friction AND gravity. I imagine you are still seeing steady state error after zeroing your friction coefficient because of gravity. You need to use an Integral gain to overcome both of these forces and get rid of your steady state error.

Also, the response you posted looks really underdamped. Try increasing your P gain to get a faster rise time, and use a D gain to mitigate any oscillations that pop up.

The static friction coefficient doesn't make sense to me in this case... "static" friction should only apply when the joint is not moving at all. I would expect "dynamic" friction to effect your step response. I tried to look up how Gazebo/ODE implements the "static" friction for a joint, but unfortunately the ODE wiki is down. From what you have found though, it seems likely that either Gazebo or ODE is confusing static friction with dynamic friction. I imagine when you decrease the "static" friction coefficient, your rise time gets quicker? If so, they must be implementing it as dynamic friction.

Lastly, setting up a physically accurate model can be real tricky. I wouldn't rely on the accuracy of the simulation unless you've done some serious system identification... especially if you are trying to determine feedback control gains for a real world system. Setting up a single test case (e.g. letting the link fall from one angle to another) will only make your model accurate for that exact case. You can get entirely different behavior from one test case to the next.

Long story short, use sim to get an initial set of gains for your real world system... then do real world testing and adjust your gains as needed. All kinds of complications come up that are tough to model (e.g. motor dynamics, feedback loop rate effects on integral/derivative terms, etc).

Hope this helps!

2016-10-22 20:53:05 -0600 received badge  Notable Question (source)
2016-10-21 09:44:01 -0600 answered a question Large Collada meshes only render partially

I found the answer:

It turns out that Google SketchUp screws up the orientation of surface normals when exporting Collada (dae) meshes. What I have to do is export a SketchUp file as an OBJECT (obj) file, and then import the obj file into MeshLab. I then export as a Collada (dae) file from MeshLab, since MeshLab makes sure the orientation of the surface normals is done correctly. The mesh then loads fine in Gazebo.

The weird thing is that I've been using the same model for years now. It hasn't been until the last 2 or 3 versions of Gazebo that I noticed the model's mesh stopped loading properly. Maybe something changed with ogre?

2016-10-21 09:37:19 -0600 answered a question make a noise laser model following the tutorial but didn't work

The reason gazebo is freezing (going black) is because it can't find the hokuyao.dae mesh, exactly as you suspected.

The tutorial you mentioned is missing a prerequisite step. You first need to download the "hokuyo" model from gazebo's model repository. The first time you insert a model from the gazebo repository, it gets downloaded and saved to your local model directory. So once you insert the hokuyo model from the repository, the hokuyo model and associated mesh files will appear in your model directory. Gazebo will then be able to find "model://hokuyo/meshes/hokuyo.dae" just fine.

2016-10-20 09:32:57 -0600 received badge  Student (source)
2016-10-20 09:32:52 -0600 received badge  Popular Question (source)
2016-10-14 15:35:14 -0600 marked best answer Explain Gazebo friction coefficients <mu> and <mu2>?

I'm having a tough time grasping the difference between "mu" and "mu2". The friction tutorial says that:

  1. "mu" is the Coulomb friction coefficient for the first friction direction, and

  2. "mu2" is the friction coefficient for the second friction direction (perpendicular to the first friction direction).

What are the "first direction" and "second direction" of friction? I thought friction always occurred in only one direction: along the vector in which the object is moving.

I must be missing something...

2016-10-14 15:35:14 -0600 received badge  Nice Answer (source)
2016-10-13 16:24:42 -0600 asked a question Large Collada meshes only render partially

Ever since I've upgraded to Gazebo 7, any LARGE mesh I use as a visual in a model file only partially loads. The majority of the polygons/shapes are missing when I load the model in Gazebo. I have opened the Collada files in other software and verified that the meshes are correct. Any ideas what might be causing the issue? These meshes used to work fine in previous versions of Gazebo.

2016-08-24 21:29:34 -0600 received badge  Popular Question (source)
2016-08-24 21:29:34 -0600 received badge  Notable Question (source)
2016-07-23 17:28:50 -0600 received badge  Necromancer (source)
2016-07-23 17:25:31 -0600 received badge  Nice Answer (source)
2016-06-26 09:30:02 -0600 received badge  Famous Question (source)
2016-06-06 08:57:28 -0600 received badge  Necromancer (source)
2016-05-19 22:09:45 -0600 received badge  Famous Question (source)
2016-05-01 19:31:16 -0600 received badge  Notable Question (source)
2016-04-30 11:38:11 -0600 received badge  Famous Question (source)
2016-04-27 12:51:34 -0600 answered a question interface gazebo camera with c++ program

You can use the gazebo transport system. See this example. It will show you how to write an external C++ program that links against gazebo and can subscribe to gazebo transport topics. You can then write a gazebo plugin that publishes the camera data over a gazebo transport topic.

2016-04-21 20:14:41 -0600 received badge  Famous Question (source)
2016-04-21 20:14:22 -0600 received badge  Notable Question (source)
2016-04-21 20:14:22 -0600 received badge  Popular Question (source)
2016-04-21 13:07:23 -0600 commented answer Gazebo Transport Messages: No standard messages for double, uint32, string, etc?

Yea I figured I'd have to make my own custom messages for the basic types. If I can summon the energy, maybe I'll integrate them into gazebo::msgs and do a pull request.

2016-04-21 13:07:23 -0600 received badge  Commentator
2016-04-21 11:57:30 -0600 received badge  Popular Question (source)
2016-04-21 10:37:16 -0600 asked a question Gazebo Transport Messages: No standard messages for double, uint32, string, etc?

It seems like the transport message types that come built-in with gazebo don't have any standard messages for things like a double, uint32, string, etc. I did manage to find one for an int32 under gazebo::msgs, but that's it. Am I somehow missing the rest?

2016-04-21 09:46:15 -0600 commented question How to publish joint angle using plugins?

I had a tough time understanding your question, do you mind trying to rephrase it a little? Are you just trying to make a gazebo plugin that publishes joint angles over a ROS topic?

2016-04-21 08:59:26 -0600 commented answer Custom transport message: where do I put the shared library?

I tried putting the shared library in the gazebo plugin path as well... had no luck. I could only get it to work if the shared library's directory was in LD_LIBRARY_PATH. I'm at work right now, but will retry putting it in the plugin path one more time when I get home.