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


<<:  IT 铁人赛 k8s 入门30天 -- day12 Persisting Data in K8s with Volumes

>>:  25. Redux 的用途 & 入门实作 (上)

2021 — 找工作 (上)

原本是计画要2020换工作,结果因为疫情的关系打算延後了一年在开始投履历跟面试~ 时间线 2021 ...

Day 1 - 什麽是 HomeLab 及网路

网路,是我们生活圈不可缺少的一部分。 每天一早,不少人都会打开手机查看新的讯息、新闻或影片。 由此可...

课堂笔记 - 深度学习 Deep Learning (14)

了解计算的公式後要来学习如何校正logistic regression: Error Measure...

汇入大量资料到 docker 上的资料库:mysql-client

前言 想透过 phpMyAdmin 把正式机资料拉下来,汇入本机 docker 上的资料库做开发;但...

Day24 - 关於共识演算法与容错机制

这几篇文章可能都会比较偏技术一些,会尽量解释简单,让大家容易理解,我们就继续看下去。 常见的共识演算...