ROS 引數伺服器

2021-08-07 12:07:33 字數 2520 閱讀 2999

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 get

launch檔案:

param / rosparam

api: roscpp: ros::param::set / ros::param::get   rospy: set_param / get_param

roscpp獲取引數

方法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...