zoukankan      html  css  js  c++  java
  • ROS参数服务器(Parameter Server)

    操作演示,对参数服务器的理解:点击打开链接

    rosparam使得我们能够存储并操作ROS 参数服务器(Parameter Server)上的数据。参数服务器能够存储整型、浮点、布尔、字符串、字典和列表等数据类型。rosparam使用YAML标记语言的语法。一般而言,YAML的表述很自然:1 是整型, 1.0 是浮点型, one是字符串, true是布尔, [1, 2, 3]是整型列表, {a: b, c: d}是字典.

    1. 使用 rosparam 

    1.1 rosparam list

    启动 master,开启终端,输入 roscore,运行 turtle 节点,rosrun turtlesim turtlesim_node,新开启一个终端,输入

    rosparam list
     

    看到如下结果:

    发现其中有三个参数是修改背景颜色的。

    1.2 rosparam 设置 and rosparam 获取

    在终端中输入:

    rosparam set background_r 150
     

    然后继续输入:

    rosservice call clear


    发现背景颜色由

    变为

    获取背景绿色通道的值

    rosparam get background_g
     

    利用

    rosparam get /
     

    获取所有参数的值

    1.3 rosparam dump

    将所有的参数写入 params.yaml 文件

    在终端输入:

    rosparam dump params.yaml
     

    将yaml文件重载入新的命名空间,比如说copy空间:

    rosparam load params.yaml copy
    
    rosparam get copy/

    运行结果:

    2.  使用 rqt_console 和 roslaunch

    2.1 使用 rqt_console

    先运行:

    sudo apt-get install ros-<distro>-rqt ros-<distro>-rqt-common-plugins ros-<distro>-turtlesim
     

    确保已经安装了所需要的包。

    rqt_console 属于ROS日志框架(logging framework)的一部分,用来显示节点的输出信息。rqt_logger_level 允许修改节点运行时输出信息的日志等级(logger levels)(包括 DEBUG、WARN、INFO和ERROR)。

    继续运行小乌龟节点,输入:

    rosrun rqt_console rqt_console 
     

    得到:

    新开一个终端:输入:

    rosrun rqt_console rqt_console 

    得到:

    再次启动:

    rosrun turtlesim turtlesim_node 

    然后 refresh 一下 rqt_logger_level 窗口 并将日志等级修改为 warn

    再开启一个终端,运行:

    rostopic pub /turtle1/cmd_vel geometry_msgs/Twist -r 1 -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, 0.0]'
     

    可见:

     

    2.2  日志等级说明

    Fatal是最高优先级,Debug 是最低优先级。通过设置日志等级可以获取该等级及其以上优先等级的所有日志消息。比如,将日志等级设为Warn时,会得到 Warn、Error和 Fatal 这三个等级的所有日志消息

    2.3 使用roslaunch

    关闭 turtlesim 节点。

    进入

    cd ~/catkin_ws/src/beginner_tutorials/
    
    mkdir launch
    
    cd launch/
    
    vim turtlemimic.launch

    将以下代码写入:

     <launch>
    
          <group ns="turtlesim1">
            <node pkg="turtlesim" name="sim" type="turtlesim_node"/>
          </group>
    
          <group ns="turtlesim2">
            <node pkg="turtlesim" name="sim" type="turtlesim_node"/>
          </group>
    
          <node pkg="turtlesim" name="mimic" type="mimic">
            <remap from="input" to="turtlesim1/turtle1"/>
            <remap from="output" to="turtlesim2/turtle1"/>
          </node>
    
        </launch>
     

    运行:

    roslaunch beginner_tutorials 
     

    下面对 launch 文件进行介绍:

    <launch>

    以launch标签开头以表明这是一个launch文件

    <group ns="turtlesim1">
            <node pkg="turtlesim" name="sim" type="turtlesim_node"/>
          </group>
    
          <group ns="turtlesim2">
            <node pkg="turtlesim" name="sim" type="turtlesim_node"/>
          </group>

    创建了两个节点分组并以'命名空间(namespace)'标签来区分,其中一个名为turtulesim1,另一个名为turtlesim2,两个组里面都使用相同的turtlesim节点并命名为'sim'。这样可以同时启动两个turtlesim模拟器而不会产生命名冲突

    <node pkg="turtlesim" name="mimic" type="mimic">
            <remap from="input" to="turtlesim1/turtle1"/>
            <remap from="output" to="turtlesim2/turtle1"/>
          </node>

    在这里启动模仿节点,并将所有话题的输入和输出分别重命名为turtlesim1和turtlesim2,这样就会使turtlesim2模仿turtlesim1

    </launch>

    结束标签

    在一个新终端中输入:

    rostopic pub /turtlesim1/turtle1/cmd_vel geometry_msgs/Twist -r 1 -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, -1.8]'

    虽然发布命令只是给turtlesim1发送了速度设定消息,会看到两个turtlesims会同时开始移动

  • 相关阅读:
    关于DISCUZ!NT发布的问题整理!
    javascript 文字滚动显示[zhuan ]
    Bot Framework Emulator应用与调试
    Bot Framework的简单实现
    命名空间在扩展方法中的妙用
    Error:Execution failed for task ':app:transformClassesWithDexForDebug"
    C#中WebApi接口传参不再困惑:传参详解
    贝塞尔曲线
    从枚举值获取对应的文本描述
    常用正则表达式收集
  • 原文地址:https://www.cnblogs.com/NikkiNikita/p/9450737.html
Copyright © 2011-2022 走看看