Closed anazawa-t closed 6 years ago
こちらですが,SimulatorItemのsimulationTime()で取得できるみたいです. https://github.com/s-nakaoka/choreonoid/blob/master/src/BodyPlugin/SimulatorItem.h#L112
簡単ですが以下のような感じで取得出来ました. ちなみにですが,SimulatorItem::findActiveSimulatorItemForはinitialize後でないと見つからないのでstartあたりに書く必要がありました.
#include <cnoid/RootItem>
#include <cnoid/SimulatorItem>
virtual bool initialize(SimpleControllerIO* io) override
{
...
robot_name_ = io->body()->name();
...
}
virtual bool start() override
{
Item* robot_item = RootItem::instance()->findItem(robot_name_);
simulator_item_ = SimulatorItem::findActiveSimulatorItemFor(robot_item);
return true;
}
virtual bool control() override
{
simulator_item_->simulationTime();
}
kyawawaさん
ご回答いただきありがとうございます。 無事にシミュレータの時間を取得することができました。
ある一定時間ロボットに同様の動作をさせたいと思っており、そのためにシミュレーション時間を取得したいのですが、コントローラ側でChoreonoidに表示されているシミュレーション時間を取得することは可能なのでしょうか? 可能であれば、取得方法をご教示頂けないでしょうか。