亚洲欧洲国产欧美一区精品,激情五月亚洲色五月,最新精品国偷自产在线婷婷,欧美婷婷丁香五月天社区

      考試首頁 | 考試用書 | 培訓課程 | 模擬考場 | 考試論壇  
        當前位置:Linux認證 > 綜合輔導 > 文章內容
        

      Linux教程:機器人操作系統(tǒng)ROS學習教程

      來源:robotos.net [ 2016年2月14日 ] 【

      描述:這篇教程借助于rosservice和rosparam命令工具介紹ROS系統(tǒng)中的服務及參數。

      假設你上一個教程中練習的turtlesim_node還在運行,我們看一下turtlesim節(jié)點都提供有哪些服務。

      1.        ROS服務

      服務是節(jié)點之間通信的另一種方式,通過服務節(jié)點可以發(fā)送請求并接收反饋;

      2.        rosservice的用法

      rosservice可以很容易的依附到ROS客戶端/服務端的框架中,rosservice具有很多參數用于話題,如下:

      用法:
      rosservice list        print information about active services
      rosservice call        call the service with the provided args
      rosservice type        print service type
      rosservice find        find services by service type
      rosservice uri          print service ROSRPC uri

      2.1 rosservice list

      $ rosservice list

      這個list指令展示出turtlesim節(jié)點提供9個服務:reset, clear, spawn, kill,turtle1/set_pen, /turtle1/teleport_absolute, /turtle1/teleport_relative, turtlesim/get_loggers, 和turtlesim/set_logger_level.還有兩個與rosout節(jié)點相關的服務:/rosout/get_loggers and /rosout/set_logger_level.

      •        /clear
      •        /kill
      •        /reset
      •        /rosout/get_loggers
      •        /rosout/set_logger_level
      •        /spawn
      •        /teleop_turtle/get_loggers
      •        /teleop_turtle/set_logger_level
      •        /turtle1/set_pen
      •        /turtle1/teleport_absolute
      •        /turtle1/teleport_relative
      •        /turtlesim/get_loggers
      •        /turtlesim/set_logger_level

      我們用rosservice type查看一下clear這個服務:

      2.2 rosservice type

      用法:
      rosservice type [service]

      我們查明clear服務是什么類型的:

      $ rosservice type clear

      •        std_srvs/Empty

      這個服務是空的,意味著調用這個服務時不用任何參數(亦即,發(fā)送請求或接收反饋時不用借助于任何參數),我們用rosservice call來調用這個服務:

      2.3 rosservice call

      用法:
      rosservice call [service] [args]

      這里我們調用時沒帶任何參數,因為這個服務為空類型的:

      $ rosservice call clear

      正如我們所料,它清空了turtlesim_node節(jié)點的背景。
      •       

      機器人操作系統(tǒng)ROS學習教程

      我們查看一下帶參數的服務spawn:

      $ rosservice type spawn| rossrv show

      •        float32 x
      •        float32 y
      •        float32 theta
      •        string name
      •        ---
      •        string name

      這個服務讓我們在指定的位置生成一個新的海龜。name區(qū)域是可選的(可以不設置),我們不用指定名字產生一個海龜;

      $ rosservice call spawn 2 2 0.2 ""

      這個調用會返回新產生的海龜的名字:
      •        name: turtle2

      執(zhí)行結果會如下圖所示:
      •       

      機器人操作系統(tǒng)ROS學習教程

      3.        rosparam的用法

      rosparam 允許我們操作并保存ROS系統(tǒng)中參數服務中的數據。參數服務可以存儲integer,float,boolean,dictionaries及 lists。rosparam采用YAML標記語言,簡單的講,YAML看起來非常自然:1 is an integer, 1.0 is a float, one is a string, true is a boolean, [1, 2, 3] is a list of integers, and {a: b, c: d} is a dictionary. rosparam具有很多命令用于操作參數,如下所示:

      用法:
      rosparam set            set parameter
      rosparam get            get parameter
      rosparam load          load parameters from file
      rosparam dump          dump parameters to file
      rosparam delete        delete parameter
      rosparam list          list parameter names

      我們查看一下當前參數服務中都有什么參數:

      3.1 rosparam list

      $ rosparam list

      我們看到turtlesim節(jié)點有三個有關背景色的參數保存在參數服務中:
      •        /background_b
      •        /background_g
      •        /background_r
      •        /roslaunch/uris/aqy:51932
      •        /run_id

      我們用rosparam set改變其中一個參數:

      3.2 rosparam set and rosparam get

      用法:
      rosparam set [param_name]
      rosparam get [param_name]

      這里我們改變背景色的紅色部分:

      $ rosparam set background_r 150

      上述命令改變了參數的值,我們必須調用clear服務才能使改變的參數生效:

      $ rosservice call clear

      執(zhí)行結果如下所示:
      •       

      機器人操作系統(tǒng)ROS學習教程

      我們查看參數服務中的其它參數值,看一下背景色中的綠色部分數值:

      $ rosparam get background_g

      •        86

      我們也可以通過rosparam get/ 命令獲取參數服務中所有參數的數值:

      $ rosparam get /

      •        background_b: 255
      •        background_g: 86
      •        background_r: 150
      •        roslaunch:
      •          uris: {'aqy:51932': '//aqy:51932/'}
      •        run_id: e07ea71e-98df-11de-8875-001b21201aa8

      你也許想把參數保存到文件中,以便下一次可以調用。采用rosparam命令是非常方便的:

      3.3 rosparam dump and rosparam load

      用法:
      rosparam dump [file_name]
      rosparam load [file_name] [namespace]

      我們保存所有參數到一個名字為params.yaml的文件中:

      $ rosparam dump params.yaml

      你可以加載這些yaml文件到新的命名空間,比如copy:

      $ rosparam load params.yaml copy
      $ rosparam get copy/background_b

      •        255

      將考試網添加到收藏夾 | 每次上網自動訪問考試網 | 復制本頁地址,傳給QQ/MSN上的好友 | 申請鏈接 | 意見留言 TOP
      關于本站  網站聲明  廣告服務  聯(lián)系方式  站內導航  考試論壇
      Copyright © 2007-2013 中華考試網(Examw.com) All Rights Reserved