Skip to content
This repository has been archived by the owner on Jul 23, 2020. It is now read-only.

コントローラからのシミュレーション時間取得方法について #214

Closed
anazawa-t opened this issue Oct 22, 2018 · 2 comments

Comments

@anazawa-t
Copy link

ある一定時間ロボットに同様の動作をさせたいと思っており、そのためにシミュレーション時間を取得したいのですが、コントローラ側でChoreonoidに表示されているシミュレーション時間を取得することは可能なのでしょうか?
可能であれば、取得方法をご教示頂けないでしょうか。

@kyawawa
Copy link
Contributor

kyawawa commented Oct 29, 2018

こちらですが,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();
}

@anazawa-t
Copy link
Author

kyawawaさん

ご回答いただきありがとうございます。
無事にシミュレータの時間を取得することができました。

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants