Show EOL distros:
Package Summary
A set of packages that include controller interfaces, controller managers, transmissions, hardware_interfaces and the control_toolbox.
- Maintainer status: developed
- Maintainer: Wim Meeussen <wim AT hidof DOT com>, Adolfo Rodriguez Tsouroukdissian <adolfo.rodriguez AT pal-robotics DOT com>, Dave Coleman <davetcoleman AT gmail DOT com>
- Author: Wim Meeussen
- License: BSD
- Bug / feature tracker: https://github.com/ros-controls/ros_control/issues
- Source: git https://github.com/ros-controls/ros_control.git (branch: hydro-devel)
Package Summary
A set of packages that include controller interfaces, controller managers, transmissions, hardware_interfaces and the control_toolbox.
- Maintainer status: developed
- Maintainer: Adolfo Rodriguez Tsouroukdissian <adolfo.rodriguez AT pal-robotics DOT com>, Dave Coleman <davetcoleman AT gmail DOT com>
- Author: Wim Meeussen
- License: BSD
- Bug / feature tracker: https://github.com/ros-controls/ros_control/issues
- Source: git https://github.com/ros-controls/ros_control.git (branch: indigo-devel)
Package Summary
A set of packages that include controller interfaces, controller managers, transmissions, hardware_interfaces and the control_toolbox.
- Maintainer status: maintained
- Maintainer: Adolfo Rodriguez Tsouroukdissian <adolfo.rodriguez AT pal-robotics DOT com>, Dave Coleman <davetcoleman AT gmail DOT com>
- Author: Wim Meeussen
- License: BSD
- Bug / feature tracker: https://github.com/ros-controls/ros_control/issues
- Source: git https://github.com/ros-controls/ros_control.git (branch: jade-devel)
Package Summary
A set of packages that include controller interfaces, controller managers, transmissions and hardware_interfaces.
- Maintainer status: maintained
- Maintainer: Bence Magyar <bence.magyar.robotics AT gmail DOT com>, Enrique Fernandez <enrique.fernandez.perdomo AT gmail DOT com>, Mathias Lüdtke <mathias.luedtke AT ipa.fraunhofer DOT de>
- Author: Wim Meeussen
- License: BSD
- Bug / feature tracker: https://github.com/ros-controls/ros_control/issues
- Source: git https://github.com/ros-controls/ros_control.git (branch: kinetic-devel)
Package Summary
A set of packages that include controller interfaces, controller managers, transmissions and hardware_interfaces.
- Maintainer status: maintained
- Maintainer: Bence Magyar <bence.magyar.robotics AT gmail DOT com>, Enrique Fernandez <enrique.fernandez.perdomo AT gmail DOT com>, Mathias Lüdtke <mathias.luedtke AT ipa.fraunhofer DOT de>
- Author: Wim Meeussen
- License: BSD
- Bug / feature tracker: https://github.com/ros-controls/ros_control/issues
- Source: git https://github.com/ros-controls/ros_control.git (branch: kinetic-devel)
Package Summary
A set of packages that include controller interfaces, controller managers, transmissions and hardware_interfaces.
- Maintainer status: maintained
- Maintainer: Bence Magyar <bence.magyar.robotics AT gmail DOT com>, Enrique Fernandez <enrique.fernandez.perdomo AT gmail DOT com>, Mathias Lüdtke <mathias.luedtke AT ipa.fraunhofer DOT de>
- Author: Wim Meeussen
- License: BSD
- Bug / feature tracker: https://github.com/ros-controls/ros_control/issues
- Source: git https://github.com/ros-controls/ros_control.git (branch: melodic-devel)
Package Summary
A set of packages that include controller interfaces, controller managers, transmissions and hardware_interfaces.
- Maintainer status: maintained
- Maintainer: Bence Magyar <bence.magyar.robotics AT gmail DOT com>, Enrique Fernandez <enrique.fernandez.perdomo AT gmail DOT com>, Mathias Lüdtke <mathias.luedtke AT ipa.fraunhofer DOT de>
- Author: Wim Meeussen
- License: BSD
- Bug / feature tracker: https://github.com/ros-controls/ros_control/issues
- Source: git https://github.com/ros-controls/ros_control.git (branch: noetic-devel)
Contents
Overview
ros_control パッケージは単なる PR2 を越えて、すべてのロボットにコントローラーを一般的にするためにpr2_mechanism / japaneseパッケージを書き換えたものです。
Diagram source in ros_control/documentation
ros_control パッケージはあなたのロボットのアクチュエータのエンコーダと入力の集合ポイントをJoint Stateデータ入力として受け入れます. それは一般的な制御ループフィードバックメカニズム、典型的に PID コントローラー、アウトプット(典型的にEffort)をアクチュエータに送り、制御するために使います。ros_control はJointのポジション、Effortなどの1対1のマッピングを持っていない物理的なメカニズムに関していっそう複雑になります、しかしこれらのシナリオは Transmission を使って説明されます。
プロジェクトのハイレベルの概観は、ROScon 2014 でのros_control: An overviewという題目で話されています。(slides, video).
追加のドキュメンテーションは Github Wiki で利用可能です。
Controllers
この執筆の時点でのros_controllersを含む利用可能なコントローラプラグインのリスト。あなたはもちろんあなた自身のものを作ることができ、このリストに限定されません:
- effort_controllers
- joint_effort_controller
- joint_position_controller
- joint_velocity_controller
- joint_state_controller
- joint_state_controller
- position_controllers
- joint_position_controller
- velocity_controllers
- joint_velocity_controllers
Hardware Interfaces
この執筆の時点での利用可能なハードウェアインタフェース(ハードウェアリソースマネージャーを経由して)のリスト。あなたはもちろんあなた自身のものを作ることができて、そしてこのリストに限定されません:
- Joint Command Interfaces
- Effort Joint Interface
- Velocity Joint Interface
- Position Joint Interface
- Joint State Interfaces
- Actuator State Interfaces
- Actuator Command Interfaces
- Effort Actuator Interface
- Velocity Actuator Interface
- Position Actuator Interface
- Force-torque sensor Interface
- IMU sensor Interface
Transmissions
Transmissionは、Effort/Flow変数を変換するそれらの積であるPowerが一定のままであるような、制御パイプラインの要素です。Transmissionインタフェース実装は、Powerを維持し、 Effort/Flow変数を出力のEffort/Flow変数にマップします。
機械的なTransmissionは、Powerを維持している変換です、すなわち
P_in = P_out F_in x V_in = F_out x V_out
ここで P, F と V はPower,力および速度を表します. より一般的には, PowerはEffort(例えば 力, 電圧) と Flow変数 (例えば 速度, 電流) の積です. シンプルな機械的な1:nの減速機は:
effort map: F_joint = F_actuator * n flow map: V_joint = V_actuator / n
以上から、Powerは入力と出力の間で一定であることを見ることができます。補足的にはWikipedia link (最初の部分で十分でしょう).
Transmission URDF Format
Transmission Interfaces
Transmissionに特定されるコード(ロボットに特定されない)がTransmissionタイプで共有された同一のインタフェースの下で双方向性の(アクチュエータ <-> Joint)のEffortとFlowマップを実装しています。 これはハードウェアインタフェース非依存です。この執筆の時点での利用可能なTransmissionタイプのリスト:
- Simple Reduction Transmission
- Differential Transmission
- Four Bar Linkage Transmission
Usages:
transmission_interface::ActuatorToJointStateInterface がアクチュエータ変数からJoint状態に移し替えます。
hardware_interface::JointStateInterfaceがコントローラーにJoint状態をさらします.
Example
こちらを参照
Joint Limits
joint_limits_interface は異なった種類の Joint コマンド上に Joint 制限、 URDF と rosparam のような共通のフォーマットからそれらを代入する方法と制限を適用する方法を表現するデータ構造を持っています。
joint_limits_interface はそれ自身コントローラーによって使われません(それは HardwareInterfaceを実行しません)しかし代わりにコントローラーは、ロボット抽象化のwrite()メソッド(あるいは等価なもの)で、更新された後操作します。制限を強いることはコントローラーによって設定されたコマンドを上書き するでしょう、それは別の生データバッファを操作するものではありません。
Specification
Joint limits 位置, 速度, 加速度, 躍度 と Effort
Soft joint limits Soft 位置制限, k_p, k_v (pr2_controller_manager/safety_limitsに記述される)
- URDF (位置、速度、 Effort のみ)からの Joint 制限情報をロードするための実用的な方法
ROS parameter server(すべての値)からjoint limitsをロードするための実用的な方法。
パラメータ仕様は、MoveItと使われているものと同じです。加えて、躍度とEffort制限を解釈します。
Joint limits interface
Joint 制限を強制するためのros_controlインタフェース。
- Effort によって制御される Joint 、位置によって制御される Joint と速度によって制御される Joint のために、2つのタイプのインタフェースが作られました。1つ目は soft 制限ではなく、普通の制限を持っている Joint のために使われる飽和インタフェースです。2つ目は PR2 で使われたものに類似しているSoft制限を実装するインタフェースです。
Example
こちらを参照
Examples
Barrett WAM controllers at Johns Hopkins University: barrett_control on Github
RRBot in Gazebo: ros_control with Gazebo tutorial
Rethink Baxter hardware as used at the University of Colorado Boulder: Baxter on Github
Install
Ubuntu では、debian パッケージ(推奨)から ros_control をインストールすることができます:
sudo apt-get install ros-$ROS_DISTRO-ros-control ros-$ROS_DISTRO-ros-controllers
あるいは Ubuntu と他のプラットホームでは、ソースからのインストールを簡単にするために rosinstall のファイルが提供されています:
cd CATKIN_WORKSPACE/src wstool init wstool merge https://raw.github.com/ros-controls/ros_control/$ROS_DISTRO-devel/ros_control.rosinstall wstool update cd .. rosdep install --from-paths . --ignore-src --rosdistro $ROS_DISTRO -y catkin_make
Ideas and future perspectives
まったくロードマップはなく、このページ は ros_control により良くいっそう複雑な制御機構を乗せ、現在の実装の欠点に対処することを見込む議論と提案される解決策を含んでいます。
ros_control の課題と機能を議論することに対して、ROS Control SIG がメーリングリストと共に存在します。あなたも参加して、ros_control の開発の手伝いをすることを奨励します!