[ROS学习] 12.参数的使用与编程方法
笔记参考:【ROS学习笔记】12.参数的使用与编程方法
内容参考:基于B站ROS公开课:【古月居】古月·ROS入门21讲
更多详情: http://wiki.ros.org/Parameter%20Server
本节说明
至此我们学习了ROS中的两种核心通信机制:Topic(话题)模式 和 Service(服务)模式。
Topic中的Publisher、Subscriber,Service中的Client、Server,消息类型msg、srv以及它们的自定义数据类型。
这次讲讲参数的使用。
1 概念图
在ROS Master中,存在一个参数服务器(Parameter Server),它是一个全局字典,即一个全局变量的存储空间,用来保存各个节点的配置参数。各个节点都可以对参数进行全局访问。
2 创建功能包
本节建立一个新的功能包,命名为 learning_parameter。在src下创建。
cd ~/catkin_ws/src
catkin_create_pkg learning_parameter roscpp rospy std_srvs
3 参数命令行的使用(rosparam)
rosparam命令可以完成参数相关的大部分功能。
在ROS中,参数文件常以YAML文件的格式保存,形式如下:
我们打开海龟仿真节点来试一下。
roscore
rosrun turtlesim turtlesim_node
显示参数及其列表
rosparam
rosparam list
观察一下这些参数,可以看到:
/turtlesim/background_b
/turtlesim/background_g
/turtlesim/background_r
分别代表了小海龟的背景RGB颜色,目前是蓝色。
/rosdistro 为ros的版本代号
/roslaunch/uris/host_ck_vpc__35381
/rosversion 当前ros的版本
/run_id 进程的id号
显示某个参数值rosparam get ...
rosparam get /turtlesim/background_g
设定某个参数值rosparam set ...
rosparam set /turtlesim/background_g 200
把/turtlesim/background_b的值改成200,再get一下可以看到已经改成了200.
但是,海龟的背景颜色还没变。我们需要发送一个clear的空内容service请求:
颜色就会变掉。
rosservice call /clear "{}"
保存参数到文件rosparam dump xxx.yaml
将参数导出,保存为param.yaml文件。
默认保存位置为当前工作目录下,我们可以打开看看:
从文件读取参数rosparam load xxx.yaml
我们可以直接在这个yaml文件里修改参数,然后导回去。
比如背景色改成 255,255,255(白色)
导回去:
rosparam load param.yaml
传service请求后,可以看到背景颜色变成了白色:
rosservice call /clear "{}"
删除参数rosparam delete ...
rosparam delete /turtlesim/background_b
就可以删掉指定的参数。
删掉后可以用rosparam set ...
设回来。
4 使用程序来使用参数(C++)
这次我们使用程序来获取和设置参数。
如何获取/设置参数:
- get函数获取参数
- set函数设置参数
创建代码
注意这段代码需要修改一下以满足我们当前Noetic版本ROS的要求,背景色的三个参数名前面都要带 /turtlesim,因为Noetic中背景色的参数名称就是这样(这可以用 rosparam list 看到)。修改:
完成后将代码拷贝到src文件夹下。
编译
先配置CMakeLists.txt编译规则,规则:
- 设置需要编译的代码和生成的可执行文件;
- 设置链接库
add_executable(parameter_config src/parameter_config.cpp)
target_link_libraries(parameter_config ${catkin_LIBRARIES})
然后编译:
cd ~/catkin_ws
catkin_make
运行
roscore
rosrun turtlesim turtlesim_node
rosrun learning_parameter parameter_config
可以看到背景从蓝色变成了白色。
5 使用程序来使用参数(Python)
这次我们使用程序来获取和设置参数。
如何获取/设置参数:
- get函数获取参数
- set函数设置参数
创建代码 并 打开权限
运行
roscore
rosrun turtlesim turtlesim_node
rosrun learning_parameter parameter_config
同样颜色设置成功!!!