首頁>技術>

引數伺服器

可透過網路訪問的共享的多變數字典。它是節點儲存引數的地方、用於配置引數、全域性共享引數。引數伺服器使用網際網路傳輸,在節點管理器中執行,實現整個通訊過程。它使用XML-RPC(RPC:遠端過程呼叫)資料型別為引數賦值,包括以下型別:32位整數、布林值、字串、雙精度浮點、ISO 8601日期、列表(List)、基於64位編碼的二進位制資料。

XML-RPC is among the simplest and most foolproof web service approaches that makes it easy for computers to call procedures on other computers.XML-RPC是最簡單、最萬無一失的web服務方法之一,它使計算機能夠輕鬆地在其他計算機上呼叫過程。

引數伺服器的配置方式非常的簡單靈活,總的來講有三種方式:

命令列維護(ros命令)launch檔案內讀寫node原始碼(通俗講就是編寫程式碼)

之前講解的話題和服務,與此文講解的引數進行對比理解:

用最直白的話:

話題和服務是:節點A傳送資料,節點B接收資料(A:將糧食從家送到B的家門口,B直接在家門口取糧食)

引數是: 節點A和節點B都去同一個“引數伺服器”中設定或獲取資料(A:將糧食從家送到穀倉,B去穀倉取糧食帶回家)

⚫ 列出當前的引數$ rosparam list⚫ 顯示某個引數值$ rosparam get param_key⚫ 設定某個引數值$ rosparam set param_key param_value⚫ 儲存引數到檔案$ rosparam dump file_name⚫ 從檔案讀取引數$ rosparam load file_name⚫ 刪除引數$ rosparam delete param_key

YAML引數檔案:包含具體的引數值

程式碼:

如何獲取/設定引數

• 初始化ROS節點;• get函式獲取引數;• set函式設定引數;
//doubi.cpp/** * 該例程設定/讀取海龜例程中的引數 */#include <string>#include <ros/ros.h>#include <std_srvs/Empty.h>int main(int argc, char **argv){	int red, green, blue;    // ROS節點初始化    ros::init(argc, argv, "parameter_config");    // 建立節點控制代碼    ros::NodeHandle node;    // 讀取背景顏色引數	ros::param::get("/background_r", red);	ros::param::get("/background_g", green);	ros::param::get("/background_b", blue);	ROS_INFO("Get Backgroud Color[%d, %d, %d]", red, green, blue);	// 設定背景顏色引數	ros::param::set("/background_r", 0);	ros::param::set("/background_g", 255);	ros::param::set("/background_b", 0);	ROS_INFO("Set Backgroud Color[0, 255,0]");    // 讀取背景顏色引數	ros::param::get("/background_r", red);	ros::param::get("/background_g", green);	ros::param::get("/background_b", blue);	ROS_INFO("Re-get Backgroud Color[%d, %d, %d]", red, green, blue);	// 呼叫服務,重新整理背景顏色	ros::service::waitForService("/clear");	ros::ServiceClient clear_background = node.serviceClient<std_srvs::Empty>("/clear");	std_srvs::Empty srv;	clear_background.call(srv);		sleep(1);    return 0;}

備註:建立功能包:catkin_create_pkg roscpp rospy std_srvs

新增依賴:

add_executable(doubixiaohanhan         src/doubi.cpp)target_link_libraries(doubixiaohanhan   ${catkin_LIBRARIES})

編譯及測試:

$ cd ~/catkin_ws$ catkin_make$ source devel/setup.bash$ roscore$ rosrun turtlesim turtlesim_node$ rosrun parameter doubixiaohanhan

15
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 年輕人誰還用Docker?