<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 4.3 Parameter server ## 4.3.1 簡介 前文介紹了ROS中常見的兩種通信方式——主題和服務,這節介紹另外一種通信方式——參數服務器(parameter server)。與前兩種通信方式不同,參數服務器也可以說是特殊的“通信方式”。特殊點在于參數服務器是節點存儲參數的地方、用于配置參數,全局共享參數。參數服務器使用互聯網傳輸,在節點管理器中運行,實現整個通信過程。 參數服務器,作為ROS中另外一種數據傳輸方式,有別于topic和service,它更加的靜態。參數服務器維護著一個數據字典,字典里存儲著各種參數和配置。 ### 字典簡介 何為字典,其實就是一個個的鍵值對,我們小時候學習語文的時候,常常都會有一本字典,當遇到不認識的字了我們可以查部首查到這個字,獲取這個字的讀音、意義等等,而這里的字典可以對比理解記憶。鍵值kay可以理解為語文里的“部首”這個概念,每一個key都是唯一的,參照下圖: ![](../pics/dictionaries _kay.png) 每一個key不重復,且每一個key對應著一個value。也可以說字典就是一種映射關系,在實際的項目應用中,因為字典的這種靜態的映射特點,我們往往將一些不常用到的參數和配置放入參數服務器里的字典里,這樣對這些數據進行讀寫都將方便高效。 ### 維護方式 參數服務器的維護方式非常的簡單靈活,總的來講有三種方式: * 命令行維護 * launch文件內讀寫 * node源碼 下面我們來一一介紹這三種維護方式。 ## 4.3.2 命令行維護 使用命令行來維護參數服務器,主要使用`rosparam`語句來進行操作的各種命令,如下表: | rosparam 命令 | 作用 | | :------: | :------: | | `rosparam set param_key param_value` | 設置參數| | `rosparam get param_key` | 顯示參數 | | `rosparam load file_name ` | 從文件加載參數| | `rosparam dump file_name ` | 保存參數到文件| |`rosparam delete` | 刪除參數| |`rosparam list`|列出參數名稱| ### load&&dump文件 load和dump文件需要遵守YAML格式,YAML格式具體示例如下: name:'Zhangsan' age:20 gender:'M' score{Chinese:80,Math:90} score_history:[85,82,88,90] 簡明解釋。就是“名稱+:+值”這樣一種常用的解釋方式。一般格式如下: key : value 遵循格式進行定義參數。其實就可以把YAML文件的內容理解為字典,因為它也是鍵值對的形式。 ## 4.3.3 launch文件內讀寫 launch文件中有很多標簽,而與參數服務器相關的標簽只有兩個,一個是`<param>`,另一個是`<rosparam>`。這兩個標簽功能比較相近,但`<param>`一般只設置一個參數,請看下例: <launch> <!--讀取機器人參數模型--> (1)<param name="robot_description" command="$(find xacro)/xacro.py $(find robot_sim_demo)/urdf/robot.xacro" /> <!--在Gazebo中啟動機器人模型--> <node name="urdf_spawner" pkg="gazebo_ros" type="spawn_model" respawn="false" output="screen" args="-urdf -x $(arg x) -y $(arg y) -z $(arg z) -Y $(arg yaw) -model xbot2 -param robot_description"/> <!--把關節控制的配置信息讀到參數服務器--> (2)<rosparam file="$(find robot_sim_demo)/config/xbot2_control.yaml" command="load"/> <!--啟動關節控制器--> <node name="spawner" pkg="controller_manager" type="spawner" respawn="false" output="screen" ns="/xbot2" args="joint_state_controller yaw_platform_position_controller pitch_platform_position_controller "/> <!--mobile_base_controller--> <!-- 將關節狀態轉換為TF變--> <node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" ns="/xbot2" respawn="false" output="screen"> (3)<param name="publish_frequency" value="100.0"/> </node--> </launch> 觀察上例比如序號3的param就定義了一個key和一個value,交給了參數服務器維護。而序號1的param只給出了key,沒有直接給出value,這里的value是由后沒的腳本運行結果作為value進行定義的。序號(2)就是rosparam的典型用法,先指定一個YAML文件,然后施加command,其效果等于`rosparam load file_name ` 。 ## 4.3.4 node源碼 除了上述最常用的兩種讀寫參數服務器的方法,還有一種就是修改ROS的源碼,也就是利用API來對參數服務器進行操作。具體內容我們學習完后面章節再進行介紹。 ## 4.3.5 操作實例 1. 首先依然是打開我們教材的模擬場景`roslaunch robot_sim_demo robot_spawn.launch`。 2. 輸入`rosparam list`查看參數服務器上的param。 3. 查詢參數信息,例如查詢豎直方向重力參數。輸入`rosparam get /gazebo/gravity_z`回車得到參數值value=-9.8。 4. 嘗試保存一個參數到文件輸入`rosparam dump param.yaml `之后就可以在當前路徑看到該文件,也就能打開去查看到相關的參數信息。 5. 參數服務器的其他命令操作方式大致相同,我們可以多多練習,鞏固對參數服務器的理解和應用。 ### 參數類型 ROS參數服務器為參數值使用XMLRPC數據類型,其中包括:strings, integers, floats, booleans, lists, dictionaries, iso8601 dates, and base64-encoded data。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看