It seems it all already works for you. So just a comment.
If you want the obstacle to be "steady as a rock" then you can use a staticbody (or a rigidbody in static mode). (and move it just by changing its position)
But if you want the obstacle to react to the collision then using a RigidBody is just correct.
A call to add_central_force()
just acts for the time span of one physics frame. Probably, you call it again on every _physics_process
?. The collision will automatically create a counterforce to the related rigid bodies. Naturally, the mass of the rigidbodies will influence acceleration and collisions.