从turtlesim学习ROS2参数
前言
学习ROS2的路,并不能通过学习ROS1代替,因为ROS2的“内核”不同于ROS1,必须认认真真从头开始重新学习。
Ubuntu版本:20.04
ROS版本:Foxy
学习笔记回顾
- ROS2学习笔记(一)获取文档
- ubuntu20.04 安装ROS2和ROS1共存
- ROS2学习笔记(二)从turtlesim学习ROS2节点
- ROS2学习笔记(三)从turtlesim学习ROS2主题
- ROS2学习笔记(四)从turtlesim学习ROS2服务
1.ROS2 param
不管是ROS1还是ROS2,参数都是很重要的知识点,其主要是对节点功能的配置,在ROS2中每个节点都有自己的参数。
2.首先启动小海龟模拟器
$ ros2 run turtlesim turtlesim_node
$ ros2 run turtlesim turtle_teleop_key
3.ros2 param list
该命令可以用来查看当前节点所有的参数,在新终端中输入以下命令:
$ ros2 param list
----
/teleop_turtle:
qos_overrides./parameter_events.publisher.depth
qos_overrides./parameter_events.publisher.durability
qos_overrides./parameter_events.publisher.history
qos_overrides./parameter_events.publisher.reliability
scale_angular
scale_linear
use_sim_time
/turtlesim:
background_b
background_g
background_r
qos_overrides./parameter_events.publisher.depth
qos_overrides./parameter_events.publisher.durability
qos_overrides./parameter_events.publisher.history
qos_overrides./parameter_events.publisher.reliability
use_sim_time
因为我们开了两个节点,所以可以看到节点/teleop_turtle
和/turtlesim
,后面是每个节点所有的参数。
每个节点都有use_sim_time
参数。
4.ros2 param get
该命令可以获取参数的类型和当前值,命令格式:
$ ros2 param get <node_name> <parameter_name>
我们通过获取background_g
参数来获取背景颜色中的绿色值。
$ ros2 param get /turtlesim background_g
----
Integer value is: 86
可以看到返回的类型是整数,值为86。
当然,获取background_r
和background_b
都是同理。
5.ros2 param set
改命令可以更改运行的参数,命令格式如下:
$ ros2 param set <node_name> <parameter_name> <value>
这时,我们可以尝试更改小海龟模拟器的背景颜色red的值:
$ ros2 param set /turtlesim background_r 150
----
Set parameter successful
返回看到successful说明参数设置成功,效果如下所示:
set
命令并不能永久更改参数值,只能在当前进程中保存。
6.ros2 param dump
该命令就能保存参数并且在下次启动节点后重新加载保存好的参数,命令格式如下:
$ ros2 param dump <node_name>
尝试保存上面设置好的/turtlesim
的背景色参数,命令如下所示:
$ ros2 param dump /turtlesim
----
Saving to: ./turtlesim.yaml
配置文件会保存到当前运行目录,可以双击打开查看,文件内容如下所示:
/turtlesim:
ros__parameters:
background_b: 255
background_g: 86
background_r: 150
use_sim_time: false
7.加载参数文件
可以使用如下命令格式将参数文件加载到当前运行的节点中去:
$ ros2 param load <node_name> <parameter_file>
将./turtlesim.yaml
加入到/turtlesim
节点中去,使用如下指令:
$ ros2 param load /turtlesim ./turtlesim.yaml
----
Set parameter background_b successful
Set parameter background_g successful
Set parameter background_r successful
Set parameter use_sim_time successful
启动成功后,此时模拟器的背景和上面手动修改的一模一样的颜色。
总结
这就是ROS2中的参数,我们可以通过命令行get或set参数值,还可以利用文件保存和加载参数。
Reference:
https://docs.ros.org/en/foxy/Tutorials/Parameters/Understanding-ROS2-Parameters.html
结语
本文也是基于笔者的学习和使用经验总结的,主观性较强,如果有哪些不对的地方或者不明白的地方,欢迎评论区留言交流~
为了能和读者进一步讨论问题,建立了一个微信群,方便给大家解答问题,也可以一起讨论问题。
加群链接