ros引數動態配置

2021-09-10 07:31:32 字數 3149 閱讀 2000

初始引數設定

有兩種方法設定初始引數:

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檔案內有效。標籤有三種設定引...