#ros #gazebo-simu
#ros #gazebo-simu
Вопрос:
Здравствуйте, у меня возникли некоторые проблемы с использованием функции Gazebo AddRelativeForce().
Я делаю какой-то самолет и имеет 12 ссылок.
Итак. Я устанавливаю принудительную силу для каждой ссылки с помощью команды ROS.
Посмотрите на этот рисунок.
вы можете увидеть 12 ссылок
В этом случае я прикладываю усилие только к 1 звену в положении двигателя на 1 час
Я думаю, что самолет остается вращающимся и движется носом вверх.
но движение похоже на это видео. введите описание ссылки здесь
Мой код плагина
public: void SetForce_C2(const double amp;_forceC2)
{
this->link2->AddRelativeForce({0,0,_forceC2});
}
public: void SetForce_C3(const double amp;_forceC3)
{
this->link3->AddRelativeForce({0,0,_forceC3});
}
public: void SetForce_C4(const double amp;_forceC4)
{
this->link4->AddRelativeForce({0,0,_forceC4});
}
this->link2 = model->GetLinks()[2];
this->link3 = model->GetLinks()[3];
this->link4 = model->GetLinks()[4];
private:
physics::LinkPtr link2;
private:
physics::LinkPtr link3;
private:
physics::LinkPtr link4;
Я думаю, что код правильный.
Я хочу, чтобы движение было правильным, чтобы приложить усилие только к 1 звену в положении двигателя на 1 час
и чем движение самолета катится и нос вверх
Я думаю, что gazebo не вычисляет момент инерции и не применяется к самолету.
если верно, должен ли я рассчитать момент силы инерции и применить себя?
Ps. Инерция и масса тела самолета равна
<mass>5315.4</mass>
<inertia>
<ixx>34198</ixx>
<ixy>-0.08385</ixy>
<ixz>-1.56572</ixz>
<iyy>49580</iyy>
<iyz>3959.2</iyz>
<izz>77842</izz>
</inertia>