ROS2学习笔记6--认识ros2参数parameters

Posted 鸿_H

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ROS2学习笔记6--认识ros2参数parameters相关的知识,希望对你有一定的参考价值。

概要:这篇主要认识ros2参数parameters

环境:ubuntu20.04,ros2-foxy,vscode

2.1.6认识ros2参数parameters(原文:https://docs.ros.org/en/foxy/Tutorials/Parameters/Understanding-ROS2-Parameters.html

>>教程>>认识ros2参数parameters

你正阅读的是ros2较老版本(Foxy),但仍然支持的说明文档.想查看最新版本的信息,请看galactic版本链接( https://docs.ros.org/en/galactic/Tutorials.html

认识ros2参数parameters

目标:学习如何获取,设置,保存和加载ros2参数

课程等级:初级

时长:5min

目录

1.背景
2.预备知识
3.步骤
3.1设置
3.2 ros2 param list
3.3 ros2 param get
3.4 ros2 param set
3.5 ros2 param dump
3.6 Load parameter file
4.总结
5.下一步

1.背景

参数是节点的配置数值.你可以认为参数(设计)就是节点的设置.节点保存的参数可以是整数,浮点型,布尔型,字符串型和列表型.在ros2里面,每个节点都有自己的参数.所有的参数都是可动态重置的,并且由ros2服务来实现.

2.预备知识

这课程使用turtlesim小乌龟包

老规矩,别忘记在新打开终端source一下配置文件(环境变量)(个人,如果ros2的环境变量写到启动脚本.bashrc里面,没必要再source一次了).

3.步骤

3.1设置

打开两个终端,分别运行turtlesim的两个节点/turtlesim/teleop_turtle

ros2 run turtlesim turtlesim_node
ros2 run turtlesim turtle_teleop_key

3.2 ros2 param list

为了查看节点的参数,新开一个终端并输入如下指令:

ros2 param list

你会看见节点命名空间,/teleop_turtle/turtlesim,后面就是每个节点拥有的参数:

/teleop_turtle:
  scale_angular
  scale_linear
  use_sim_time
/turtlesim:
  background_b
  background_g
  background_r
  use_sim_time

每个节点都有参数use_sim_time,其并不单纯属于节点turtlesim

通过这些参数名字,似乎节点/turtlesim的参数利用rgb颜色数值决定小乌龟仿真窗口的背景颜色.

你可以使用指令ros2 param get去获取参数的类型

3.3 ros2 param get

为了展示参数的类型以及量值,使用如下指令:

ros2 param get <node_name> <parameter_name>

让我们看看节点/turtlesim的参数background_g的当前量值:

ros2 param get /turtlesim background_g

终端返回:

Integer value is: 86

现在你可以知道参数background_g是一个整型的量值

如果你对background_rbackground_b运行相同的指令,可分别获取数值69255

3.4 ros2 param set

运行时改变参数的量值,可以使用指令:

ros2 param set <node_name> <parameter_name> <value>

让我们改变一下/turtlesim的背景颜色:

ros2 param set /turtlesim background_r 150

终端会返回:

Set parameter successful

你的小乌龟仿真窗口背景颜色会改变:
图片.png
使用set指令改变参数量值只是当前生效,并不是永久的.然而,你可以保存你的配置,下次启动节点时再加载.

3.5 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

如果以后你还想加载这些节点使用相同的参数,就手动转存这些参数吧.

3.6 Load parameter file

启动节点使用保存的参数量值,可使用:

ros2 run <package_name> <executable_name> --ros-args --params-file <file_name>

这是和你一开始小乌龟仿真时候的指令一样,这里增加了--ros-args--params-file标签来加载所需的文件.

退出turtlesim节点,重启该节点并加载保存的参数,可以使用指令:

ros2 run turtlesim turtlesim_node --ros-args --params-file ./turtlesim.yaml

小乌龟仿真窗口正常出现,但紫色背景是之前设置的.

4.总结

节点使用参数来定义默认的配置值.你可以通过命令行使用get(获取)和set(设置)参数值.你也可以把参数设置保存成文件,以后可以重新加载.

5.下一步

跳转到ros2通信方法,下一课程学习动作actions

其他

参数parameter是节点node的配置值.(个人理解,参数就是一个节点的属性具体体现)

个人认为重点:

ros2 param get <node_name> <parameter_name> #获取节点参数

ros2 param set <node_name> <parameter_name> <value> #设置参数的量值

ros2 param dump <node_name> #将节点的配置参数保存成文件

ros2 run <package_name> <executable_name> --ros-args --params-file <file_name>#启动执行文件并加载保存的参数文件

这课程是在等毕业证那十几天搞的,室友问,现在在线翻译这么强大,为啥还在这里瞎折腾呢?我说,我的目地是好好认真看一下,了解一下,自己折腾,目前是我想到最好的办法来获得最佳效果,即使这翻译有点别扭,哈哈哈.

#####################
不积硅步,无以至千里
好记性不如烂笔头
感觉有点收获的话,麻烦大大们点赞收藏哈

以上是关于ROS2学习笔记6--认识ros2参数parameters的主要内容,如果未能解决你的问题,请参考以下文章

ROS2学习笔记5--认识ros2服务services

ROS2学习笔记7--认识ros2动作actions

ROS2学习笔记4--认识ros2话题topic

ROS2学习笔记17--在类中使用参数(C++)

ROS2学习笔记0--ROS2:Foxy学习目录

ROS2学习笔记1--配置ros2环境