3. param 在launch中的表現
4. rosparam load
imu_node
ros::nodehandle n;
ros::nodehandle nh("~");//相對網域名稱, 相對於在啟動起來的節點node網域名稱下
引數的網域名稱只能由nodehandle來控制管理, 節點程式中引數定義只由名稱決定。全域性nodehandle n下帶不帶「/」開頭都可以;相對nodehandle nh下不要帶「/」開頭,帶了會有問題;
ros::nodehandle n;
n.param("serial_port_name", serial_port_name_, "/dev/ttyusb0");
n.param("/imu_topic", imu_topic_, "/imu");
ros::nodehandle nh("~");
nh.param("publish_rate", publish_rate_, 200);
nh.param("debug_raw_data", debug_raw_data_, false);
ros::init(argc, ar**, "imu_node");
每個節點是乙個程序, 初始化的時候會指定乙個預設的節點名稱「imu_node」
yhzhao@yhzhao:~/ys_design/ysimu_ws$ rosrun imu_node imu_node
yhzhao@yhzhao:~/ys_design/ysimu_ws$ rosparam list
/rosdistro
/roslaunch/uris/host_localhost__43741
/rosversion
/run_id
yhzhao@yhzhao:~/ys_design/ysimu_ws$ rosnode list
/imu_node
/rosout
引數服務沒被呼叫,命令rosparam list看不到相應的引數列表, 只要呼叫過 rosparam set 才會可見引數; 並且該引數的生存週期同引數伺服器的週期一致,也就是roscore的週期一致;
yhzhao@yhzhao:~/ys_design/ysimu_ws$ rosparam set /imu_frame /imu_frame1
yhzhao@yhzhao:~/ys_design/ysimu_ws$ rosparam list
/imu_frame
/rosdistro
/roslaunch/uris/host_localhost__45945
/rosversion
/run_id
yhzhao@yhzhao:~/ys_design/ysimu_ws$ rosparam get /imu_frame
/imu_frame1
yhzhao@yhzhao:~/ys_design/ysimu_ws$ roslaunch imu_node imu.launch
yhzhao@yhzhao:~/ys_design/ysimu_ws$ rosnode list
/imu_node_xx
/rosout
launch中param的name不要以「/」開頭,完全以xml的格式控制其網域名稱的相對性;launch的param name="imu_frame"有沒有「/」開頭都可以, 那就不要了;
ros::nodehandle n;//絕對網域名稱
ros::nodehandle nh("~");//相對網域名稱
n.param("serial_port_name", serial_port_name_, "/dev/ttyusb0");
n.param("imu_topic", imu_topic_, "/imu");
n.param("imu_frame", imu_frame_, "/imu_frame");
nh.param("publish_rate", publish_rate_, 200);
引數依據nodehandle的命名空間確定; serial_port_name_ imu_topic_ imu_frame_ 對應絕對網域名稱下; publish_rate_為相對網域名稱下; 其中相對網域名稱「~」為節點對應的網域名稱,如果節點名稱發生變化,網域名稱也會變化;
依據launc**件修改對應的節點引數;絕對引數放外面,相對引數放節點node裡面; 也可以寫全相對網域名稱引數在node外設定;
pkg=
"imu_node"
type
="imu_node"
name
="imu_node_xx"
output
="screen"
>
node
>
yhzhao@yhzhao:~/ys_design/ysimu_ws$ roslaunch imu_node imu.launch
yhzhao@yhzhao:~/ys_design/ysimu_ws$ rosnode list
/imu_node_xx
/rosout
yhzhao@yhzhao:~/ys_design/ysimu_ws$ rosparam list
/imu_frame
/imu_node_xx/publish_rate
/imu_topic
/rosdistro
/roslaunch/uris/host_localhost__45587
/rosversion
/run_id
/serial_port_name
對應的yaml檔案 :前面的為一層網域名稱; : 後面具體值為引數對應的值; 格式對齊對應網域名稱作用域
imu_port_name: /dev/ttyusb0
publish_tf: true
cmd_time_out: 1000 #ms
global_planner_params.yaml
globalplanner:
use_dijkstra: false
use_quadratic: true
use_grid_path: false
cost_factor: 5.0
引數會在外層套上網域名稱ns對應的global_costmap
global_planner_params.yaml
use_dijkstra: false
use_quadratic: true
use_grid_path: false
cost_factor: 5.0
rosparam簡單使用
我主要是想知道程式如何獲取yaml檔案的引數,於是簡單記錄了一下學習過程。寫乙個簡單的yaml檔案,比如kinect.yaml,檔案的名字其實沒有什麼影響,載入進去的還是引數的名字!kincet2 11 儲存好了之後就可以載入了 roscore rosparam load src learning ...
ROS使用教程 關於rosparam
launch時roslaunch首先檢查roscore是否已經啟動,如果沒有則啟動roscore。roscore會做三件事 啟動master節點,該節點是隱藏的,用於通過訊息名查詢目標節點,實現訊息 服務在各個節點之間的連線 啟動parameter server,用於設定與查詢引數 啟動日誌節點,記...
網域名稱收斂與網域名稱發散
dns 通常 internet 主機網域名稱的一般結構為 主機名.網域名稱.二級網域名稱.頂級網域名稱。tables scheme 值 含義scheme 定義英特網服務的型別 通常為http host 定義域主機 http的主機為www domain 定義網際網路網域名稱,比如 w3school.c...