<> <> == Overview == ros_control パッケージは単なる PR2 を越えて、すべてのロボットにコントローラーを一般的にするために[[pr2_mechanism]] / [[ja/pr2_mechanism|japanese]]パッケージを書き換えたものです。 {{attachment:gazebo_ros_control.png|ros control|width="780"}} ~-''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''という題目で話されています。([[http://roscon.ros.org/2014/wp-content/uploads/2014/07/ros_control_an_overview.pdf|slides]], [[https://vimeo.com/107507546|video]]). 追加のドキュメンテーションは [[https://github.com/ros-controls/ros_control/wiki|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は入力と出力の間で一定であることを見ることができます。補足的には[[http://en.wikipedia.org/wiki/Bond_graph|Wikipedia link]] (最初の部分で十分でしょう). === Transmission URDF Format === [[http://ros.org/wiki/urdf/XML/Transmission|URDF Transmissions]]を参照. === 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 === [[https://github.com/ros-controls/ros_control/wiki/transmission_interface|こちら]]を参照 == 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 === [[https://github.com/ros-controls/ros_control/wiki/joint_limits_interface|こちら]]を参照 == Examples == * Barrett WAM controllers at Johns Hopkins University: [[https://github.com/jhu-lcsr/barrett_control|barrett_control on Github]] * RRBot in Gazebo: [[http://gazebosim.org/tutorials/?tut=ros_control|ros_control with Gazebo tutorial]] * Rethink Baxter hardware as used at the University of Colorado Boulder: [[https://github.com/davetcoleman/baxter_cpp/blob/hydro-devel/baxter_control/src/baxter_hardware_interface.cpp|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/Ideas|ページ]] は ros_control により良くいっそう複雑な制御機構を乗せ、現在の実装の欠点に対処することを見込む議論と提案される解決策を含んでいます。 ros_control の課題と機能を議論することに対して、[[http://www.ros.org/wiki/sig/RobotControl|ROS Control SIG]] がメーリングリストと共に存在します。あなたも参加して、ros_control の開発の手伝いをすることを奨励します!