Show EOL distros:
Package Summary
This package specifies the interface to a realtime controller. A controller that implements this interface can be executed by the controller manager in the real time control loop. The package basically contains the C++ controller base class that all controllers need to inherit from.
- Author: Wim Meeussen
- License: BSD
- Repository: pr2-ros-pkg
- Source: hg https://kforge.ros.org/pr2mechanism/hg
Package Summary
This package specifies the interface to a realtime controller. A controller that implements this interface can be executed by the controller manager in the real time control loop. The package basically contains the C++ controller base class that all controllers need to inherit from.
- Author: Wim Meeussen
- License: BSD
- Source: hg https://kforge.ros.org/pr2mechanism/hg (branch: pr2_mechanism-1.5)
Package Summary
This package specifies the interface to a realtime controller. A controller that implements this interface can be executed by the controller manager in the real time control loop. The package basically contains the C++ controller base class that all controllers need to inherit from.
- Author: Wim Meeussen
- License: BSD
- Source: hg https://kforge.ros.org/pr2mechanism/hg (branch: default)
Package Summary
This package specifies the interface to a realtime controller. A controller that implements this interface can be executed by the controller manager in the real time control loop. The package basically contains the C++ controller base class that all controllers need to inherit from.
- Author: Wim Meeussen
- License: BSD
- Source: hg https://kforge.ros.org/pr2mechanism/hg (branch: default)
Package Summary
This package specifies the interface to a realtime controller. A controller that implements this interface can be executed by the controller manager in the real time control loop. The package basically contains the C++ controller base class that all controllers need to inherit from.
- Maintainer status: maintained
- Maintainer: Austin Hendrix <ahendrix AT willowgarage DOT com>
- Author: Wim Meeussen
- License: BSD
- Source: git https://github.com/PR2/pr2_mechanism.git (branch: hydro-devel)
Package Summary
This package specifies the interface to a realtime controller. A controller that implements this interface can be executed by the controller manager in the real time control loop. The package basically contains the C++ controller base class that all controllers need to inherit from.
- Maintainer status: maintained
- Maintainer: Devon Ash <dash AT clearpathrobotics DOT com>
- Author: Wim Meeussen
- License: BSD
- Source: git https://github.com/pr2/pr2_mechanism.git (branch: indigo-devel)
Package Summary
This package specifies the interface to a realtime controller. A controller that implements this interface can be executed by thecontroller managerin the real time control loop. The package basically contains the C++ controller base class that all controllers need to inherit from.
- Maintainer status: maintained
- Maintainer: Devon Ash <dash AT clearpathrobotics DOT com>
- Author: Wim Meeussen
- License: BSD
Package Summary
This package specifies the interface to a realtime controller. A controller that implements this interface can be executed by the controller manager in the real time control loop. The package basically contains the C++ controller base class that all controllers need to inherit from.
- Maintainer status: unmaintained
- Maintainer: ROS Orphaned Package Maintainers <ros-orphaned-packages AT googlegroups DOT com>
- Author: Wim Meeussen
- License: BSD
- Source: git https://github.com/pr2/pr2_mechanism.git (branch: kinetic-devel)
Package Summary
This package specifies the interface to a realtime controller. A controller that implements this interface can be executed by the controller manager in the real time control loop. The package basically contains the C++ controller base class that all controllers need to inherit from.
- Maintainer status: unmaintained
- Maintainer: ROS Orphaned Package Maintainers <ros-orphaned-packages AT googlegroups DOT com>
- Author: Wim Meeussen
- License: BSD
- Source: git https://github.com/pr2/pr2_mechanism.git (branch: kinetic-devel)
Package Summary
This package specifies the interface to a realtime controller. A controller that implements this interface can be executed by the controller manager in the real time control loop. The package basically contains the C++ controller base class that all controllers need to inherit from.
- Maintainer status: unmaintained
- Maintainer: ROS Orphaned Package Maintainers <ros-orphaned-packages AT googlegroups DOT com>
- Author: Wim Meeussen
- License: BSD
- Source: git https://github.com/pr2/pr2_mechanism.git (branch: melodic-devel)
Package Summary
This package specifies the interface to a realtime controller. A controller that implements this interface can be executed by the controller manager in the real time control loop. The package basically contains the C++ controller base class that all controllers need to inherit from.
- Maintainer status: maintained
- Maintainer: ROS Orphaned Package Maintainers <ros-orphaned-packages AT googlegroups DOT com>
- Author: Wim Meeussen
- License: BSD
- Source: git https://github.com/pr2/pr2_mechanism.git (branch: melodic-devel)
コントローラーインタフェース
リアルタイムコントローラーとして実装するために、あなたのコントローラはpr2_controller_interface::Controllerベースクラスから継承する必要があります。 ベースクラスは下記を含みます
- あなたが実装する必要がある4つのメソッド:init, starting, update と stopping,
- 1つのあなたが呼ぶことができるメソッド; getController
ベースクラスはこのように見えます:
1 namespace pr2_controller_interface
2 {
3 class Controller
4 {
5 public:
6 virtual bool init(pr2_mechanism_model::RobotState *robot,
7 ros::NodeHandle &n);
8 virtual void starting();
9 virtual void update();
10 virtual void stopping();
11
12 bool getController(const std::string& name,
13 int sched,
14 ControllerType*& c);
15 };
16 }
下のイメージはこれらの4つの方法がどういう順序で呼び出されるか示すフローチャートを与えます (より詳細は下記の文章で).
コントローラーの初期化
init メソッドは non-realtime で実行されます。
コントローラーを初期化するために、コントローラーをロードするとき、initメソッドが呼ばれます。 コントローラーを初期化することは、それをスタートすることについて、独立していることに注意を払ってください: コントローラーをスタートする前に、 initialization はどんな量の時間も与えられることができます。 init メソッドは2つのアーギュメントをとります:
robot: これは pr2_mechanism_model::RobotState ロボットモデルを記述します. (ja/pr2_mechanism_model参照). モデルはロボット Joint へのアクセス(アクチュエータ、エンコーダなど)を提供して、そしてロボットメカニズムのキネマティックの / ダイナミックな記述を含んでいます。
n: この ros::NodeHandle はコントローラの "namespace" です. このノードハンドルの namespace で、コントローラーはパラメータサーバーからコンフィギュレーションを読み込んで、トピックを公表するなどすることができます。
もし initialization が成功した、あるいはそうでないなら、initメソッドは戻ります。 もし initialization が失敗するなら、コントローラーはja/pr2_controller_managerによってアンロードされるでしょう。ユーザーにあなたのコントローラーがなぜ初期化することに失敗したかについて通知するために常にROS_ERROR("explanation");を使うことを確実にしてください。コントローラーはただ1度初期化されることができるだけです。もしあなたがコントローラーを再度初期化することを望むなら、あなたは最初にそれをアンロードして、そして次に再びそれをロードする必要があります。
コントローラのスタート
startingメソッドはhard realtimeで実行されます。
8 virtual void starting();
starting メソッドはcontroller managerによって、コントローラーがスタートされる時いつも、1度呼ばれます。 スタートすることは、このアップデートコールの直前に、最初のアップデートコールと同じサイクルの中で実行されます。
最初のアップデートが呼び出される直前に、`startingメソッドはコントローラーを初期化します。 controller managerは、コントローラーをアンロードして / ロードすることを必要とせずに、後の時にコントローラーをリスタートすることを許されます.
コントローラーの更新
updateメソッドはhard realtimeで実行されます。
9 virtual void update();
すべてのコントローラーのupdateメソッドは周期的にpr2_controller_managerで1000 Hzの周波数でコールされます。これはすべてのコントローラーの時間が結合した実行が1ミリ 秒以上を要することができないことを意味します。アップデートループで、本当のコントロールの作業がされます。
コントローラーの停止
stoppingメソッドはhard realtimeで実行されます。
10 virtual void stopping();
stopping メソッドは毎回1度呼ばれコントローラーはストップします。 ストップすることは、このアップデートコールのすぐ後に、同じサイクルの中で最後のアップデートコールとして実行されます。stoppingメソッドは何も返しません、それは失敗することを許されません。
他のコントローラーへのポインターを要求
getControllerメソッドはnon-realtimeで実行されます。
getControllerメソッドはコントローラーがもう1つのコントローラーへのポインタを得ることを可能にします。 これはリアルタイムでそれぞれのコントローラーがそのアウトプットを次のコントローラーに送るコントローラーの"チェーン"を作成するために使われます。このシステムは不十分な非リアルタイムの ROS コミュニケーションの代替物です。
getController メソッドは3つのアーギュメントをとります:
name: あなたがポインタをもっていくことを望むコントローラーの名前を持った文字列
sched: int (ENUM) これはリクエストされたコントローラーがあなたのコントローラーの前か後に実行されるべきであるかどうか明示します。可能な値は pr2_controller_interface:BEFORE_ME と pr2_controller_interface::AFTER_MEです.
c これはあなたが、リクエストされたコントローラーのタイプとマッチするタイプの、リクエストしたコントローラーへのポインタです。タイプは getController メソッドのについての同じくテンプレートアーギュメントです。