Page 1 of 1

Weld Joint Problem With Rotating Body

Posted: Fri Mar 14, 2014 11:05 am
by ptc79
Hi iforce,
I'm trying to set up a Box2D program with one circular rotating body, and another circular body that moves towards it and sticks to the first body's edge. The problem I'm having is that after I create a weld joint between the bodies, the second body tends to jump around erratically before the joint resolves itself.

The first body is a dynamic body with a circle fixture, connected to a static body with no fixtures by a revolute joint. It is able to rotate freely but not change position. The second body also has a circle fixture, and can move position freely. I use a b2ContactListener subclass to check for the collision. Then add a weld joint between the bodies, at the second body's centre, in the timestep immediately following the collision. The second body then jumps around for a few frames before the joint resolves itself at the correct position.

If I use a distance joint I don't get this problem. However, that means that the second body is able to spin on the first bodies edge. I want the second body to be in a fixed rotation relative to the first body, so I have to use a weld joint. Any ideas how I can solve this problem? Thanks for reading this.

Cheers

Re: Weld Joint Problem With Rotating Body

Posted: Fri Mar 14, 2014 11:14 am
by ptc79
By the way, this effect is most obvious when the first body is rotating before the collision. This causes the second body to be in completely the wrong position after a weld joint is added. If the first body is not rotating the second body might just be a little bit off after the collision.

Re: Weld Joint Problem With Rotating Body

Posted: Fri Mar 14, 2014 4:10 pm
by iforce2d
Unfortunately weld joints are not very reliable, especially where any kind of speed or movement (and especially sudden changes thereof) are involved. To get a really solid connection would require a single rigid body, ie. move the fixture of the second body onto the first body, and get rid of the second body.

Did you try using a second distance joint to prevent the rotation of the second body?

Re: Weld Joint Problem With Rotating Body

Posted: Tue Mar 18, 2014 12:45 am
by ptc79
Thanks for the help. I used a couple of Revolute joints instead. That achieved the effect I was looking for. I should have thought of that before.