初始引數設定
有兩種方法設定初始引數:
roslaunch aruco_ros single.launch markerid:=26 markersize:=0.08 eye:="right"
引數動態配置
動態重配置引數:就是動態地調整、設定正在執行的節點的引數值(它們允許使用者不僅在啟動時修改變數,還能在執行過程中修改變數。我們已經建立了乙個檔案中指定的變數可動態重新配置伺服器。),通過動態重配置,可以更加高效地開發和測試節點,特別是機械人硬體除錯的時候,使用動態重配置引數是乙個很不錯的選擇.
1.向功能包新增動態重配置檔案(.cfg)
#本文中pakeage是test
roscd test
mkdir cfg &&
cd cfg
gedit tutorials.cfg
輸入如下的內容:
#!/usr/bin/env python
package =
"dynamic_reconfigure"
from dynamic_reconfigure.parameter_generator_catkin import
* gen =parametergenerator(
)#建立乙個引數生成器物件
#gen.add(引數名稱,引數型別,位掩碼,引數描述,預設值,最小值,最大值)
gen.add(
"int_param"
, int_t,0,
"an integer parameter",50
,0,100
) gen.add(
"double_param"
, double_t,0,
"a double parameter",.5
,0,1
) gen.add(
"str_param"
, str_t,0,
"a string parameter"
,"hello world"
) gen.add(
"bool_param"
, bool_t,0,
"a boolean parameter"
,true
) size_enum = gen.enum(
[ gen.const(
"small"
, int_t,0,
"a small constant"
), gen.const(
"medium"
, int_t,1,
"a medium constant"),
gen.const(
"large"
, int_t,2,
"a large constant"
), gen.const(
"extralarge"
, int_t,3,
"an extra large constant")]
,"an enum to set size"
)gen.add(
"size"
, int_t,0,
"a size parameter which is edited via an enum",1
,0,3
, edit_method=size_enum)
exit(gen.generate(package,
"test"
,"tutorials"))
#first parameter is namespace's name
#second parameter is node's name
#third parameter is the current file's name
2.修改cmakelists.txt檔案
cmake_minimum_required(version 2.8.3)
project(test)
find_package(catkin required
components roscpp std_msgs dynamic_reconfigure
) generate_dynamic_reconfigure_options( cfg/tutorials.cfg )
catkin_package( libraries custom_dynamic_reconfigure
catkin_depends roscpp std_msgs dynamic_reconfigure
) include_directories($)
add_dependencies(_node $_gencfg) #新增依賴性也很關鍵,否則找不到生成的*config.**件
3.修改package.xml檔案增加
dynamic_reconfigure
4.修改cfg檔案的許可權
chmod a+x tutorials.cfg(或 chmod 777 tutorials.cfg)
5.編輯cpp檔案
服務端
#include "ros/ros.h"
#include #include void callback(test::tutorials &config, uint32_t level)
int main(int argc, char **ar**)
客戶端
#include "ros/ros.h"
#include #include int main(int argc, char **ar**)
}
rosrun rqt_reconfigure rqt_reconfigure
執行後會有乙個新視窗,可以動態重配置節點的引數
參考:《ros機械人高效程式設計》(原書第3版)
ROS 讀取引數配置檔案
首先在launc 件中進行配置 可以看到,此處定義了兩個string型別的引數 config file vins folder 然後在相應的cpp裡,按照模板定義乙個讀取引數的程式。template t readparam ros nodehandle n,std string name else ...
ROS動態鏈結庫的配置
最近的乙個專案,客戶的需求是把ros庫拷到電腦上直接能執行,而電腦無法聯網,恰好我們的程式依賴了幾個動態庫,無法通過apt get直接安裝。而客戶操作能力有限,最好把編譯好的檔案拷過去可以直接執行。上網查閱了一下,程式執行時的動態庫查詢位置位於 ld library path這個目錄下面。echo了...
ROS 引數訪問
ros主要有三種訪問引數的方式 命令列 rosparam set rosparam get launch file 標籤用於直接設定引數,也可以從檔案中讀取引數。標籤用於從yaml檔案中讀取並設定引數。標籤給launch檔案內部設定引數 通過標籤設定的引數僅在launch檔案內有效。標籤有三種設定引...