Show EOL distros: 

ros_control: control_toolbox | controller_interface | controller_manager | controller_manager_msgs | controller_manager_tests | hardware_interface | joint_limits_interface | realtime_tools | transmission_interface

Package Summary

A set of packages that include controller interfaces, controller managers, transmissions, hardware_interfaces and the control_toolbox.

ros_control: control_toolbox | controller_interface | controller_manager | controller_manager_msgs | controller_manager_tests | hardware_interface | joint_limits_interface | realtime_tools | transmission_interface

Package Summary

A set of packages that include controller interfaces, controller managers, transmissions, hardware_interfaces and the control_toolbox.

ros_control: control_toolbox | controller_interface | controller_manager | controller_manager_msgs | controller_manager_tests | hardware_interface | joint_limits_interface | realtime_tools | transmission_interface

Package Summary

A set of packages that include controller interfaces, controller managers, transmissions, hardware_interfaces and the control_toolbox.

ros_control: combined_robot_hw | combined_robot_hw_tests | controller_interface | controller_manager | controller_manager_msgs | controller_manager_tests | hardware_interface | joint_limits_interface | realtime_tools | transmission_interface

Package Summary

A set of packages that include controller interfaces, controller managers, transmissions and hardware_interfaces.

Overview

ros_control パッケージは単なる PR2 を越えて、すべてのロボットにコントローラーを一般的にするためにpr2_mechanism / japaneseパッケージを書き換えたものです。

ros control 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:

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

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 の開発の手伝いをすることを奨励します!

Wiki: ja/ros_control (last edited 2018-04-05 13:28:21 by TatsuhisaYamaguchi)