[Documentation] [TitleIndex] [WordIndex

Note: This tutorial assumes that you have completed the previous tutorials: How to use Hokuyo laser scanners with the hokuyo_node, How to dynamically reconfigure the hokuyo_node using reconfigure_gui.
(!) 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.

コマンドラインかコードからどのようにしてhokuyo_nodeを動的に再設定を行うか。

Description: このチュートリアルを終えると、コマンドラインかコードからhokuyo_nodeのパラメータを再設定できるようになるでしょう。

Keywords: reconfigure, Hokuyo, parameters, laser driver, laser, laser scanner, laser scan

Tutorial Level: INTERMEDIATE

コンパイル

依存関係を取得し、dynamic_reconfigureをコンパイルすることから始める。

$ rosdep install dynamic_reconfigure 
$ rosmake dynamic_reconfigure 

コマンドラインからdynamic_reconfigure

以下の実行によって、コマンドラインからdynamic_reconfigureを呼び出すことでhokuyo_nodeを再設定することができます。:

rosrun dynamic_reconfigure dynparam set /<node_name> <param> <value>

例えば、もし、nodeがhokuyo_nodeと呼ばれて、パラメータがmin_angであるなら、呼び出し方は以下のようになります。:

rosrun dynamic_reconfigure dynparam set /hokuyo_node min_ang -1.0

hokuyo_nodeのパラメータで試してみください。 パラメータをセットしたことによる結果を見ることができます。 rvizレーザスキャンを可視化する.

dynparamをlaunchファイルから使う

launchファイルからすでに実行されているnodeのパラメータをset_from_parameterコマンドをdynparamと使うことでセットすることが可能です。

例えば、hokuyoのスキャン範囲をセットするときは、以下のlaunchファイルを使うことができます。:

<launch>
  <node name="$(anon dynparam)" pkg="dynamic_reconfigure" type="dynparam" args="set_from_parameters hokuyo_node">
    <param name="min_ang" type="double" value="-1.0" />
    <param name="max_ang" type="double" value="1.0" />
  </node>
</launch>

Pythonのコードからdynamic_reconfigureを使う

以下をインポートすることで、Pythonのスクリプトからhokuyo_nodeのパラメータを変えることもできます。:

import dynamic_reconfigure.client

以下ののnodeを作成し、

rospy.init_node('myconfig_py', anonymous=True)

クライアントのインスタンスを作成します。(node_to_reconfigureは、再設定するnodeの名前を入れます。ここでは'hokuyo_node'を入れたりするということです。)

client = dynamic_reconfigure.client.Client(<node_to_reconfigure>)

そしたら、変更を行いたいパラメータの辞書式配列と渡し、update_configurationを呼びます:

params = { 'my_string_parameter' : 'value', 'my_int_parameter' : 5 }
config = client.update_configuration(params)

上記のconfig変数はパラメータのアップデート後に、nodeのすべての設定を持ちます。

C++のコードからdynparamを使う

まだ、実装されていません。systemを現在を使用してください。例えば、以下を呼び出すと、narrow stereo camera がテクスチャイメージを生産するように変更します。:

   system("rosrun dynamic_reconfigure dynparam set_from_parameters camera_synchronizer_node narrow_stereo_trig_mode 3");


2019-11-16 12:54