Note: This tutorial assumes that you have completed the previous tutorials: Writing a realtime joint controller.
(!) Please ask about problems and questions regarding this tutorial on answers.ros.org. Don't forget to include in your question the link to this page, the versions of your OS & ROS, and also add appropriate tags.

Running a realtime joint controller

Description: このチュートリアルはあなたに既存のJoint空間コントローラーのコンフィギュレーションを設定して、実行する方法を教えます

Tutorial Level: BEGINNER

Next Tutorial: Communicating with a realtime joint controller

Introduction

このチュートリアルで我々は前のチュートリアルで作られたコントローラーを動かすでしょう。

このチュートリアルは以下を使います:

  1. コントローラーを動かすgazeboシミュレータ環境。もしあなたが一度もgazeboについて聞いたことがないなら、このチュートリアルを最初にチェックアウトします。

  2. Parameter Serverコントローラーの初期化/コンフィギュレーションで使われるパラメータをストアするために使います。

  3. コントローラーの実行をコントロールするpr2_controller_manager

Starting the pr2 in Gazebo

そしたら,最初に gazebo を走らせましょう

$ rosmake pr2_gazebo
$ roslaunch gazebo_worlds empty_world.launch

あなたは空のgazebo世界が見られるでしょう。 gazebo_empty.png

今この世界の中にpr2ロボットを作成しましょう:

$ roslaunch pr2_gazebo pr2.launch

そしてあなたのシミュレーション世界はこのように見えるべきです。 gazebo_pr2.png

Running the Controller

controllers_3.png 今あなたはシステムについてフィードバックを手に入れるためにrxconsoleをスタートするべきです。これはあなたのコントローラーがなぜロードし損ねるかもしれないかを見るために有用です。良い習慣として、あなたがroboと共に働いているとき、あなたは常にrxconsoleあるいはpr2_dashboardを動かすべきです:

$ rxconsole

Configuring the Controller

コントローラーを動かすことへの第一歩はパラメータサーバーでそのコンフィギュレーションを並べ広げることです。

  • すべてのコントローラーが必要とする1つのパラメータ:コントローラータイプがあります;これは我々がコントローラーを登録するために使った名前、一般にclassnameと同じです。それで、もし我々が我々のコントローラーmy_tutorial_controllerを呼び出すなら、我々が設定する必要があるパラメータは次のmy_tutorial_controller/typeです:

    $ rosparam set my_controller_name/type my_controller_pkg/MyControllerPlugin
  • 我々のコントローラーは我々が、joint_nameと呼ばれて指定する必要がある1つの内部のパラメータを持っています。利用可能なJoint、タイプのリストを受けとるために次をタイプします:

    $ rosrun pr2_controller_manager pr2_controller_manager list-joints

このチュートリアルについて、我々は右肩パンJointを使うでしょう:

  • $ rosparam set my_controller_name/joint_name r_shoulder_pan_joint

我々がただ設定したすべてのパラメータをリストするために次をタイプします:

$ rosparam get -p my_controller_name

Checking status of other controllers

我々のコントローラーをスタートする前に、ほかに何がシステム上で動作しているか見ることはおそらく良い考えです。システムが立ち上がるとき、いくつかのコントローラーは自動的にスタートされることができます。同じリソースを使う2つのコントローラーを走らせて、つまり、同じJointをコントロールしようとしてください、それはダメな結果を導くでしょう。何が起こったか見るために次をタイプします:

$ rosrun pr2_controller_manager pr2_controller_manager list

もしあなたがコンフリクトについて心配しているなら、あなたは異なったJointを使うことに決めるかもしれません、あるいは他のコントローラーをストップすることができます。コントローラをストップするために次をタイプします:

$ rosrun pr2_controller_manager pr2_controller_manager stop CONTROLLER_NAME

Loading and Starting the Controller

最終的に、我々はcontroller managerに我々のコントローラーが登録されたかどうか調べる必要があります。登録されたコントローラーのリストを得るために次をタイプします:

$ rosrun pr2_controller_manager pr2_controller_manager list-types

アウトプットの中で我々のコントローラーMyControllerPluginを見つけてください。もしそれがそこにあるなら、あなたはロードして、そしてそれでスタートする準備ができています。

Load

しすべてが良さそうに見えるなら、我々のコントローラーをロードしましょう:

$ rosrun pr2_controller_manager pr2_controller_manager load my_controller_name
  • "Loaded my_controller_name"が見えるはずです.

我々はコントローラーが下記でロードされることを確認することができます:

$ rosrun pr2_controller_manager pr2_controller_manager list

Start

あなたは、我々のコントローラーがロードされると気付くでしょう、けれどもそれはまだ止まっていて、そしてロボットはまだ動いていません。我々が今、それをするために必要とするすべてのことは我々のコントローラーをスタートすることです:

$ rosrun pr2_controller_manager pr2_controller_manager start my_controller_name

pr2の右のアームは動いてスタートします

gazebo_moving.png

我々はコントローラーが稼働していることを下記で確認することができます:

$ rosrun pr2_controller_manager pr2_controller_manager list

Stop

コントローラーをストップする非常にわかりやすいコマンド:

$ rosrun pr2_controller_manager pr2_controller_manager stop my_controller_name

あなたはストップした後、あなたは再びスタートして、再びストップするなどすることができました。

Unload

我々のコントローラーをcontroller managerからすっかり取り除くために、次をタイプしてください: To totally remove our controller from the controller manager type:

$ rosrun pr2_controller_manager pr2_controller_manager unload my_controller_name

コントローラーが止められるとき、unloadがただ作動するだけであることに注意を払ってください。コントローラーがなくなっていることを確認するために、次をタイプしてください:

$ rosrun pr2_controller_manager pr2_controller_manager list

Making things easier

Yaml configuration

コントローラーを動かす上の方法は多くのタイピングを必要としました。まあ、あなたは、すべてのコンフィギュレーションをyamlファイルの中にストアすることによって、ずっとより容易にすることができます。ただmy_controller.yamlと呼ばれるファイルを作成して、そしてパラメータをコピーしてください:

  my_controller_name:
    type: my_controller_pkg/MyControllerPlugin
    joint_name: r_shoulder_pan_joint

今あなたは下記によってパラメータをロードすることができます:

$ rosparam load my_controller.yaml

すぐにコントローラーをロードして、それでスタートするために、あなたはspawnオプションを使うことができます:

$ rosrun pr2_controller_manager pr2_controller_manager spawn my_controller_name

コントローラーをアンロードして、そしてストップするために、1つのコールのkillオプションを使ってください:

$ rosrun pr2_controller_manager pr2_controller_manager kill my_controller_name

Launch file

ことをさらにより容易にするために、launchファイルとspawnerツールを使って(もっと多くのコントローラーとやり取りするツールに関する詳細についてはcontroller manager参照)、'''launch'''ファイルからあなたのコントローラーを走らせます。単にmy_controller.launchと呼ばれるファイルを作ってください:

<launch>
   <rosparam file="$(find my_controller_pkg)/my_controller.yaml" command="load" />

   <node pkg="pr2_controller_manager" type="spawner" args="my_controller_name" name="my_controller_spawner" />
</launch>

そして、実行します:

$ roslaunch my_controller.launch

そしてストップするためには、ただCtrl-cを押してください。 今あなたは次のコントローラーのための用意ができていて、方法communicate with a realtime joint controllerを学びます

Wiki: ja/pr2_mechanism/Tutorials/Running a realtime joint controller (last edited 2016-08-14 03:47:39 by Crescent)