Gazebo | Ignition | Community
Ask Your Question

Applying a force to a link in gazebo plugin

asked 2017-09-04 19:12:37 -0500

kkrasnosky gravatar image

I am trying to simulate an autonomous surface vehicle with an azimuthing thruster. I set up a basic model and want to apply a force to the thruster in the thruster's reference frame. What recommendations do you have for accomplishing this?

So far I have tried:

this->model->GetJoints()[0]->SetForce(0, 300);  // in this method I can't seem to control the direction.  Is it applying a torque and not a force maybe?


math::Vector3 force(100,0,0);
// this method seems to work, however,  it applies a force in the global x direction not the thruster x direction.
edit retag flag offensive close merge delete


rotate the force vector into thruster's frame? you can get the world orientation or entities using `GetWorldPose().rot` and just apply that to `force`

iche033 gravatar imageiche033 ( 2017-09-05 13:08:55 -0500 )edit

1 Answer

Sort by ยป oldest newest most voted

answered 2017-11-09 14:29:39 -0500

Francimore gravatar image

updated 2017-11-09 14:30:02 -0500

try this:

gazebo::physics::LinkPtr link=  _model->GetChildLink("Path::to::Link");
link->AddForce(gazebo::math::Vector3(x, y, z)); //for global force
link->AddRelativeForce(math::Vector3(x, y, z)); // for relative force depends on actual pose and angular

Path to your link you can find over the GUI or from SDF file

edit flag offensive delete link more
Login/Signup to Answer

Question Tools

1 follower


Asked: 2017-09-04 19:12:37 -0500

Seen: 3,919 times

Last updated: Nov 09 '17