ros中提供了的引數伺服器機制,使用者可以將引數以
yaml
檔案格式儲存在本地,程式執行(
執行launch檔案
)時動態載入,修改引數並不需要重新編譯。而且,ros中更為人性化的一點就是支援程式執行時動態修改引數,實時的觀測引數對執行結果的影響,極大地方便了引數除錯。
ros通過
launch
檔案載入引數,載入完成後可以通過
rosparam list在命令列中檢視。
通過param
標籤載入引數:
該方法適用於少量引數的載入,格式為:
重新執行launch檔案,引數就會更新。
通過rosparam
標籤匯入.yam檔案載入引數:
該方法適用於大量載入引數,格式為:
例如:在**的例項中,檢視fake_pi_arbotix.launch檔案可以找到。
fake_pi_arbotix.yaml檔案內容
port: /dev/ttyusb0
baud: 115200
rate: 20
sync_write: true
sync_read: true
read_rate: 20
write_rate: 20
joints: ,
arm_shoulder_lift_joint: ,
arm_elbow_flex_joint: ,
arm_wrist_flex_joint: ,
gripper_joint: ,
head_pan_joint: ,
head_tilt_joint: }
controllers:
}
引數的訪問有三種方式:
命令列:rosparam set / rosparam getroscpp獲取引數launch檔案:
param / rosparam
api: roscpp: ros::param::set / ros::param::get rospy: set_param / get_param
方法1:
ros::nodehandle::getparam():
ros::nodehandle nh;
std::string global_name, relative_name, default_param;
if (nh.getparam("/global_name", global_name))
// default value version
nh.param("default_param", default_param, "default_value");
第乙個引數為引數名,第二個引數為接收引數值的變數名。如果獲得引數值失敗,則返回false。
nh.param()
函式可以設定乙個預設值,如果獲取失敗,則設定為預設值。這種方式下如果想要獲得私有引數,則需要宣告乙個私有
nodehandle
。(如:
ros::nodehandle nh(~)
)方法2:
ros::param::get()
std::string global_name, relative_name, default_param;
if (ros::param::get("/global_name", global_name))
// default value version
ros::param::param("default_param", default_param, "default_value");
用法和用第一種相同。如果想獲得私有引數則需要在引數名前面加上」~
」。(例如:
ros::param::get(
「~private_name
」, param);
)parameter的命名使用正常的
ros命名傳統,這個意味著引數可以是乙個分級的,他和和
ros topic,ros node
是一致的。層級可以很好保護引數的名稱衝突,另外對於相關的引數的表示也是有幫助的。
/camera/left/name: leftcamera
/camera/left/exposure: 1
/camera/right/name: rightcamera
/camera/right/exposure: 1.1
ROS引數伺服器
ros引數伺服器像是乙個共享記憶體,我們通過節點內的 終端命令,launc 件,任何程序都可以讀取,寫入或者更改引數伺服器上的引數值。例如我們通過執行 以下命令啟動乙個launc 件 roslaunch packgname filenamelaunc 件的內容為 load file find cus...
ROS學習 cpp引數伺服器
wiki 鏈結 ros的引數伺服器可以儲存字串,整型,浮點型,布林型,列表,字典,iso8601資料,64基編碼資料.字典資料要有字串鍵.roscpp的引數api支援所有這些,儘管在使用中常使用strings,integers,floats,booleans.xmlrpc xmlrpcvalue類實...
ROS引數伺服器(引數使用詳細介紹)
引數伺服器是可通過網路訪問的共享的多變數字典。它是節點儲存引數的地方 用於配置引數 全域性共享引數。引數伺服器使用網際網路傳輸,在節點管理器中執行,實現整個通訊過程。它使用xmlrpc資料型別為引數賦值,包括以下型別 32位整數 布林值 字串 雙精度浮點 iso 8601日期 列表 list 基於6...