<source : unsplash>

一、前言

依據 ROS wiki,Parameter Server (參數伺服器)是一個可透過網路API使用之共享、多變量的字典型態。執行中的節點,可以使用這個 Parameter Server 去儲存和獲得參數。高效能並非Parameter Server的設計目的,最合適的地方適用於像是設定黨參數般靜態、非二位元檔案。這也表示,Parameter Server可被以全域方式檢視,所以系統設定狀態可以很容易地用工具來檢視與修改。

簡言之,ROS中的設定資訊通常會存在Parameter server中。參數伺服器蒐集了許多設定值,可透過terminal、節點或launch檔取得。參數可用靜態變數或全域變數來規劃,如整數、浮點數、字串或布林值。

二、探索 PARAMETERS (參數)

(一)、來自 Terminal 的參數

透過 rosparam 指令,參數可以直接從 terminal 中被檢視與修改。輸入以下指令可查看目前被啟動的參數 :
rosparam list


透過執行Husky gazebo的模擬,接下來內容將以 rosparam 清單的輸出作為例子,讓我們知道最適合參數伺服器的參數值形式

以下指令可決定參數值 :
rosparam get

舉例而言,當在執行 ROS kinetic的環境中,我們可以在 gazebo 中,看到 Z 軸方向的重力被設定為 -9.8。

若要改變值,可輸入以下指令 :
rosparam set

假設我們想在月球上模擬驅動 Husky ,可以透過以下指令,輕易在 gazebo中修改重力值 :
rosparam set /gazebo/gravit_z -1.6

(二)、從  Node (節點) 取得參數

讓節點在啟動時從參數伺服器取得設定資訊是常見的事。可透過 C++、Python輕鬆設定參數,寫法如下 :

C++
void:ros::param::set(parameter_name, input_value)

Python
rospy.param_set(parameter_name, input_value)


從參數伺服器取得參數值
C++
void:ros::param::get(parameter_name)

Python
rospy.param_get(parameter_name)

(三)、從  Launch檔 取得參數


在 Launch 檔中設定參數是一個在啟動時初始化參數的常見方式。寫法如下 :
<param name="param-name" value="param-value" />

也可使用具有參數標籤的YMAL 格式,1行1行地呈現各種參數設定,讓閱讀更加容易。如下所示 :
string: 'foo'
integer: 1234
float: 1234.5
boolean: true
list: [1.0, mixed list]
dictionary: {a: b, c: d}

---
參考資料 :


#rosparam #node # launch #YAML 


0 留言