Applying a force to a link in gazebo plugin
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?
and
math::Vector3 force(100,0,0);
model->GetLink("propeller")->SetForce(force);
// this method seems to work, however, it applies a force in the global x direction not the thruster x direction.
Asked by kkrasnosky on 2017-09-04 19:12:37 UTC
Answers
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
Asked by Francimore on 2017-11-09 15:28:15 UTC
Comments
rotate the force vector into thruster's frame? you can get the world orientation or entities using
GetWorldPose().rot
and just apply that toforce
Asked by iche033 on 2017-09-05 13:08:55 UTC