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
Contents
コンパイル
依存関係を取得し、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");