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會同時開始移動

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM