ROS使用教程 關於rosparam

2021-07-22 11:56:13 字數 3554 閱讀 3990

launch時roslaunch首先檢查roscore是否已經啟動,如果沒有則啟動roscore。

roscore會做三件事:

- 啟動master節點,該節點是隱藏的,用於通過訊息名查詢目標節點,實現訊息、服務在各個節點之間的連線

- 啟動parameter server,用於設定與查詢引數

- 啟動日誌節點,記錄所有訊息收發和stdout、stderr, 目前roscore暫不會加入其他功能。

其中啟動的任務(節點)列表

任務名稱

任務功能

特性master

通過訊息名查詢目標節點,實現訊息、服務在各個節點之間的連線

隱藏parameter server

設定與查詢引數

-日誌節點

記錄所有訊息收發和stdout、stderr

-引數的訪問有三種方式:

- 命令列:rosparam set / rosparam get

- launch檔案:param / rosparam

- api:

roscpp: ros::param::set / ros::param::get

rospy: set_param / get_param

其中parameter server引數伺服器,可以方便地通過設定引數來改變節點的行為。引數伺服器內的引數是以key,value的形式互動。 其中key可以加字首作為命名空間構成多級引數。

引數的訪問有三種方式:

- 命令列:rosparam set / rosparam get

- launch檔案:param / rosparam

- api:

- roscpp: ros::param::set / ros::param::get

- rospy: set_param / get_param

the parameter server使用 xmlrpc資料型別作為引數值包括

- 32-bit integers

- booleans

- strings

- doubles

- iso8601 dates

- lists

- base64-encoded binary data

parameter的命名使用正常的ros命名傳統,這個意味著引數可以是乙個分級的,他和和ros topic,ros node是一致的。層級可以很好保護引數的名稱衝突,另外對於相關的引數的表示也是有幫助的。

/camera/left/name: leftcamera

/camera/left/exposure: 1

/camera/right/name: rightcamera

/camera/right/exposure: 1.1

roscpp中的api上述資料型別,對於其他的資料型別需要使用xmlrpc::xmlrpcvalue class 功能

函式名command-line tool

getting parameters

ros::nodehandle::getparam(),ros::param::get()

rosparam get get parameter

setting parameters

ros::nodehandle::setparam(),ros::param::set()

rosparam set set parameter

checking parameter existence

ros::nodehandle::hasparam(),ros::param::has()

-deleting parameters

ros::nodehandle::deleteparam(),ros::param::del()

rosparam delete delete parameter

searching for parameter keys

ros::nodehandle::searchparam()

-retrieving lists

-rosparam list list parameter names

load form file

-rosparam load load parameters from file

dump to file

-rosparam dump dump parameters to file

ros中,param特指在引數伺服器parameter server中儲存的引數

roslaunch發現和標籤後會呼叫rosparam包來實現設定

使用引數

描述command=」load

dump

file=」$(find pkg-name)/path/foo.yaml」 (load or dump commands)

name of rosparam file.

param=」param-name」

name of parameter.

ns=」namespace」 (optional)

scope the parameters to the specified namespace.

subst_value=true

false (optional)

command="load"

file="$(find rosparam)/example.yaml" />

command="delete"

param="my/param" /

標籤給launch檔案內部設定引數,通過標籤設定的引數僅在launch檔案內有效.

標籤有三種設定引數的方式:

- 直接用此標籤設定

- 用此標籤宣告,用roslaunch命令確定其值

- 用此標籤宣告,在include本launch檔案的父launch檔案中確定其值

只有一種使用方式:通過launch檔案內部的substitution args來使用:$(arg foo)

arg的整個設定到解析僅在roslaunch解析launch檔案過程中使用

完成整個啟動過程後即刻失效

標籤用於設定環境變數,此處「環境變數」是指linux系統的程序環境變數,設定了的node對應的程序可觀察到此環境變數。可以通過getenv函式讀取, ros也提供了跨平台函式ros::get_environment_variable來讀取環境變數。需要注意的是此法設定的環境變數是程序的環境變數,在執行roslaunch的shell上是echo不出來的。 可以先rosnode info檢視節點程序的pid,例如是12345,再cat /proc/12345/evniron | tr 『\0』 『\n』來檢視程序的環境變數。

注意:launch檔案的substitution args: $(env environment_variable)用於查詢當前shell環境變數

是無法查詢設定的程序環境變數的。故無法改變launch的行為,只能通過getenv或ros::get_environment_variable來改變節點的行為

launch檔案中的param、rosparam、arg、env

ROS 安裝教程

關於ros robot os 機械人作業系統 估計看這個博文的大兄弟之前已經都知道是啥了,我就不咋呼了 對於ros的安裝,在它的官方 中也有詳細說明。但是對於像博主這樣先天英語發育不全的人來說,直接看官網還是有點困難的。所以博主痛定思痛,經過一番嘔心瀝血與含辛茹苦的調研後 其實就是看了幾篇相關部落格...

ROS安裝教程

sudo sh c etc lsb release echo deb distrib codename main etc apt sources.list.d ros latest.list 3 設定金鑰 sudo apt key adv keyserver hkp recv key 421c365...

Ros安裝教程

ros安裝教程 這裡 24是24位掩碼與255.255.255.0一樣 4 輸入完ip後,按兩次x退出,現在可以可以ping通192.168.0.254了,也可用winbox在圖形介面下訪問路由了。5 關機,插上另一張網絡卡,這個是接外網的,即wan,現在可以去掉軟路由電腦的顯示器和鍵盤了。6 開機...