【ROS学习笔记】12.参数的使用与编程方法

基于B站ROS公开课:【古月居】古月·ROS入门21讲
基于Ubuntu 20.04.1、Noetic版本
修正错误,并详述Python版本部署

文章目录

    • 1 概念图
    • 2 创建功能包
    • 3 参数命令行的使用(rosparam)
      • 显示参数列表
      • 显示某个参数值
      • 设定某个参数值
      • 保存参数到文件
      • 从文件读取参数
      • 删除参数
    • 4 使用程序来使用参数(C++)
      • 创建代码
      • 编译
      • 运行
    • 5 使用程序来使用参数(Python)
      • 创建代码
      • 编译
      • 运行

至此我们学习了ROS中的两种核心通信机制:Topic(话题)模式 和 Service(服务)模式。
Topic中的Publisher、Subscriber,Service中的Client、Server,消息类型msg、srv以及它们的自定义数据类型。
这次讲讲参数的使用。
(部分图摘自:b站【古月居】古月·ROS入门21讲)

1 概念图

在ROS Master中,存在一个参数服务器(Parameter Server),它是一个全局字典,即一个全局变量的存储空间,用来保存各个节点的配置参数。各个节点都可以对参数进行全局访问。

【ROS学习笔记】12.参数的使用与编程方法_第1张图片
我们来看看参数服务器的使用方法。

2 创建功能包

本节建立一个新的功能包,命名为 learning_parameter。在src下创建。

cd ~/catkin_ws/src
catkin_create_pkg learning_parameter roscpp rospy std_srvs

3 参数命令行的使用(rosparam)

rosparam命令可以完成参数相关的大部分功能。

在ROS中,参数文件常以YAML文件的格式保存,形式如下:
【ROS学习笔记】12.参数的使用与编程方法_第2张图片常用 rosparam 命令用法:
【ROS学习笔记】12.参数的使用与编程方法_第3张图片
我们打开海龟仿真节点来试一下。

roscore
rosrun turtlesim turtlesim_node

显示参数列表

rosparam list

【ROS学习笔记】12.参数的使用与编程方法_第4张图片

观察一下这些参数,可以看到:
/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 /turtlesim/background_b

【ROS学习笔记】12.参数的使用与编程方法_第5张图片

设定某个参数值

例:

rosparam set /turtlesim/background_b 100

把/turtlesim/background_b的值改成100,再get一下可以看到已经改成了255

【ROS学习笔记】12.参数的使用与编程方法_第6张图片
但是,海龟的背景颜色还没变。我们需要发送一个clear的空内容服务请求:

rosservice call /clear "{}"

可以看到背景以及改过来了。
【ROS学习笔记】12.参数的使用与编程方法_第7张图片

保存参数到文件

例:

rosparam dump param.yaml

将参数导出,保存为param.yaml文件。
默认保存位置为当前工作空间根目录下,我们可以打开看看:
【ROS学习笔记】12.参数的使用与编程方法_第8张图片

从文件读取参数

我们可以直接在这个yaml文件里修改参数,然后导回去。
比如背景色改成 255,255,255(白色)
【ROS学习笔记】12.参数的使用与编程方法_第9张图片
导回去:

rosparam load param.yaml

clear一下,背景就变白色了。
【ROS学习笔记】12.参数的使用与编程方法_第10张图片

删除参数

例:

rosparam delete /turtlesim/background_b

就可以删掉指定的参数。
删掉后可以用rosparam set ...设回来。

4 使用程序来使用参数(C++)

这次我们使用程序来获取和设置参数。
如何获取/设置参数:

  • get函数获取参数
  • set函数设置参数

创建代码

(源码:https://github.com/guyuehome/ros_21_tutorials/tree/master/learning_parameter/src)
【ROS学习笔记】12.参数的使用与编程方法_第11张图片注意这段代码需要修改一下以满足我们当前Noetic版本ROS的要求,背景色的三个参数名前面都要带 /turtlesim,因为Noetic中背景色的参数名称就是这样。修改:
【ROS学习笔记】12.参数的使用与编程方法_第12张图片

完成后将代码拷贝到src文件夹下。

编译

先配置CMakeLists.txt编译规则,规则:

  • 设置需要编译的代码和生成的可执行文件;
  • 设置链接库

将下面代码拷贝到指定位置:

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

然后编译:

cd ~/catkin_ws
catkin_make

运行

默认已经source,接着运行。

roscore
rosrun turtlesim turtlesim_node
rosrun learning_parameter parameter_config

可以看到背景从蓝色变成了白色。
【ROS学习笔记】12.参数的使用与编程方法_第13张图片

5 使用程序来使用参数(Python)

这次我们使用程序来获取和设置参数。
如何获取/设置参数:

  • get函数获取参数
  • set函数设置参数

创建代码

(源码:https://github.com/guyuehome/ros_21_tutorials/tree/master/learning_parameter/scripts)
注意Python3代码格式的修改(绿字)。
【ROS学习笔记】12.参数的使用与编程方法_第14张图片
注意服务名前面补上 /turtlesim,因为Noetic中背景色的参数名称就是这样。

【ROS学习笔记】12.参数的使用与编程方法_第15张图片

将代码拷贝到新建的scripts文件夹下。
右击py文件→属性,打开执行权限。

编译

配置CMakeLists.txt编译规则
加上一个关于parameter_config.py的catkin_install_python方法:
下面代码写到指定位置

【ROS学习笔记】12.参数的使用与编程方法_第16张图片
然后编译:

cd ~/catkin_ws
catkin_make

运行

默认已经source,接着运行。

roscore
rosrun turtlesim turtlesim_node
rosrun learning_parameter parameter_config.py

可以看到背景从蓝色变成了白色。
【ROS学习笔记】12.参数的使用与编程方法_第17张图片

你可能感兴趣的:(ROS学习笔记,自动驾驶,人工智能,硬件)