iT邦幫忙

2021 iThome 鐵人賽

DAY 11
0
Arm Platforms

ROS with Deep learning 開發與實戰系列 第 11

Day 11 ROS Cpp Parameter Server

嚴格來說 Parameter Server 其實不太可以說是一種通訊方式,而是靜態儲存變數的一種方法。ROS Cpp 提供了兩個方法來讓我們調用。

  • ros::param
  • ros::NodeHandle

兩個的使用方法是一樣的,就單純看個人喜好來做使用了~

param_demo.cpp

Get

我們在拿 Param 參數有三種方法

//Get Param 的三種方法
//① ros::param::get() 拿到參數 “param1”的 值 ,存到 parameter1 中
bool ifget1 = ros::param::get("param1", parameter1);

//② ros::NodeHandle::getParam()拿到參數,跟上面一樣的功能
bool ifget2 = nh.getParam("param2",parameter2);

//③ ros::NodeHandle::param() 跟上面一樣的功能
//但如果拿不到指定的參數,它可以给參數指定一個初始值 (像是 5201314)
nh.param("param3", parameter3, 5201314);

Set

Set Param 有兩種方法

//Set Param 的兩種方法
// ros::param::set() 設置參數
parameter4 = 4;
ros::param::set("param4", parameter4);

// ros::NodeHandle::setParam() 設置參數
parameter5 = 5;
nh.setParam("param5",parameter5);

Check

檢查參數的兩種方法

//Check Param 的兩種方法
//ros::NodeHandle::hasParam()
bool ifparam5 = nh.hasParam("param5");

//ros::param::has()
bool ifparam6 = ros::param::has("param6");

Delete

刪除參數的兩種方法

//Delete Param 的兩種方法
//ros::NodeHandle::deleteParam()
bool ifdeleted5 = nh.deleteParam("param5");

//ros::param::del()
bool ifdeleted6 = ros::param::del("param6");

以上便是所有 cpp 的基礎寫法,接下來來看看 launch

launch

這邊是 Parameter Server 的 launch 寫法,他依樣有兩種方式, param、 rosparam

這邊要注意的是,使用 rosparam 寫法會將參數轉成 YAML 格式來載入,注意 param 前面必須為空格,不能用Tab,否則YAML 會解析錯誤

<launch>
	<!--param 參數設定-->
	<param name="param1" value="1" />
	<param name="param2" value="2" />
	<!--param name="table_description" command="$(find xacro)/xacro.py $(find gazebo_worlds)/objects/table.urdf.xacro" /-->

	<!--rosparam 參數設定-->
	<rosparam>   
        param3: 3
        param4: 4
        param5: 5
    </rosparam>
	
    <!--以上寫法將參數轉成 YAML 格式來載入,注意 param 前面必須為空格,不能用Tab,否則YAML 會解析錯誤-->
	<!--rosparam file="$(find robot_sim_demo)/config/xbot-u_control.yaml" command="load" /-->
	<node pkg="param_demo" type="param_demo" name="param_demo" output="screen" />

	

</launch>

以上便是 Parameter Server 的載入方法,明天將會帶來 ROS Cpp 的最後一個章節 Time and Log


上一篇
Day 10 ROS Cpp Service
系列文
ROS with Deep learning 開發與實戰11

尚未有邦友留言

立即登入留言