# パラメータサーバー 動作中にさまざまなパラメータを格納するために使用されます - 構成パラメータなどの静的データ --- コマンド `rosparam` の使用 ```bash # すべてのパラメータをプリント rosparam list # パラメータ値を出力 rosparam get <パラメータ名> # パラメータ値の設定 rosparam set <パラメータ名> <新値> ``` https://wiki.ros.org/rosparam https://wiki.ros.org/ja/ROS/Tutorials/UnderstandingServicesParams --- ## パラメータ値 パラメータの定義方法 - 直接launchファイル内 - `<param>`タグを使用 - 特別なファイル(yaml形式) - launchファイルから読み取るためには `<rosparam>`タグを使用 yamlファイルの例(*config.yaml*) ```yaml camera: left: name: left_camera exposure: 1 right: name: right_camera exposure: 1.1 ``` 使用例(*package.launch*) ```xml <launch> <node name="name" pkg="package" type="node_type"> <rosparam command="load" file="$(find package)/config/config.yaml" /> </node> </launch> ``` --- ## パラメータを操作するためのAPI パラメータの取得 ```python 変数名 = rospy.get_param(パラメータ名) ``` 例 ```python try: param = rospy.get_param('param') except KeyError: rospy.logerr("Parameter param does not exist!") ``` https://wiki.ros.org/roscpp/Overview/Parameter%20Server --- # アドレス指定について ROSのノード、トピック、サービス、パラメータの名前の指定方法がいくつかあります。 - グローバルアドレス指定 - 名前が「/」で始まる - 例: `rospy.get_param("/ns1/camera/left/exposure")` - 相対アドレス指定(ノードの名前空間以下) - 名前の初めに「/」がない  - 例: `rospy.get_param("camera/left/exposure")` 詳細はこちらを参考: https://wiki.ros.org/ja/Names --- # 複数台のロボットの使用 --- ## 名前の重複の問題 - 複数のロボット(シミュレーション内または実際のロボット)、または複数のセンサなどのリソースを使用する場合は、名前の重複に注意する必要があります。 - ノード名はユニークである必要があります。2つ目の同じ名前のノードを実行しようとすると、最初のノードが停止されます。 ```bash # 確認したいなら・・・ roscore # 一つ目のノード rosrun turtlesim turtlesim_node # 2つ目の同じ名前のノード rosrun turtlesim turtlesim_node ``` --- ## 名前空間(ネームスペース) この問題を避けるためには、各ロボット/リソースに別の名前空間を割り当てます。 以下の例のように、launchファイルの`group`タグを使えば、名前空間を簡単に設定できます。 ```xml <launch> <group ns="sim1"> <node name="turtle" pkg="turtlesim" type="turtlesim_node"/> <node name="controller" pkg="turtlesim" type="draw_square"/> </group> <group ns="sim2"> <node name="turtle" pkg="turtlesim" type="turtlesim_node"/> <node name="controller" pkg="turtlesim" type="draw_square"/> </group> </launch> ``` 個々のロボットのすべてのトピック、パラメーターなどは、そのロボットの名前空間下に移動されます(`/sim1/...`など)。 --- → [実習その2](v4_2.html) ↑ [ホームページ](index.html)