Gazebo | Ignition | Community
Ask Your Question

kinematic links use case?

asked 2020-10-15 09:49:25 -0500

Georacer gravatar image

Hello everybody!

I'm making some SDFs. I noticed that both the model and the link types support the <kinematic> tag.

When referring to the model, I can understand the reasoning: you want to move this model by writing velocities to its base links or to each individual joint perhaps.

But having a kinematic link doesn't work as I would expect.

Expectation: The link has no weight (since its inverse inertia is set to 0 by the ODE implementation). You cannot apply a force to it. But if you fix it to the base link (with a fixed joint) it will follow the body base link hapily.

Reality: The (child) kinematic link is fixed in place if you don't write a velocity to it. Applying a force to the base link (where the child link is attached with a fixed joint) results in no motion, because the child link prevents the whole model from moving. This sounds a bit counter productive.

Is there a good use case for a kinematic link, which you couldn't do with a kinematic model?

Thank you for your time!

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted

answered 2020-10-15 14:43:22 -0500

I love kinematic links, they're great for cheating/hacking things. For example, let's say I have a rope model and I want to pretend it's being held by at each end by some magical floating grippers. Instead of applying forces and a closed-loop controller to try to make the grasped points stay at some position or follow a trajectory, I can just make those links kinematic, and call SetWorldPose. If I do this, the rest of the rope will be dynamic and respect physics, but the fake-grasped-points will move kinematically.

What you expect is easily made exactly as you describe -- just make a link (not kinematic) which has no mass and has a fixed joint to the base.

edit flag offensive delete link more


So you're using them with a free ball joint. Great use case!

"What you expect is easily made exactly as you describe -- just make a link (not kinematic) which has no mass and has a fixed joint to the base." I would expect applying a force to a zero-mass link to throw the solver out of whack, but I guess I'll find out soon enough.


Georacer gravatar imageGeoracer ( 2020-10-15 15:41:38 -0500 )edit

another option is to merge the links. you can have multiple collision and or visual elements in one link

Peter Mitrano gravatar imagePeter Mitrano ( 2020-10-26 13:39:53 -0500 )edit

My intention wasn't to use the extra link as a collision carrier, but to actually help me get its local frame state and apply local wrenches, so merging wasn't an option.

Georacer gravatar imageGeoracer ( 2020-10-26 13:57:44 -0500 )edit

This answer was super helpful. I'll come back when I have enough karma to upvote.

<kinematic> as a moveable boundary condition is really very useful.

danzimmerman gravatar imagedanzimmerman ( 2021-02-10 23:25:56 -0500 )edit
Login/Signup to Answer

Question Tools

1 follower


Asked: 2020-10-15 09:49:25 -0500

Seen: 1,733 times

Last updated: Oct 15 '20