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 開機...