<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國際加速解決方案。 廣告
                # 6.1 Client Library與roscpp ## 6.1.1 Client Library簡介 ROS為機器人開發者們提供了不同語言的編程接口,比如C++接口叫做roscpp,Python接口叫做rospy,Java接口叫做rosjava。盡管語言不通,但這些接口都可以用來創建topic、service、param,實現ROS的通信功能。Clinet Lirary有點類似開發中的Helper Class,把一些常用的基本功能做了封裝。 目前ROS支持的Clinet Library包括: | Client Library | 介紹 | | :------: | :------: | | roscpp | ROS的C++庫,是目前最廣泛應用的ROS客戶端庫,執行效率高 | | rospy | ROS的Python庫,開發效率高,通常用在對運行時間沒有太大要求的場合,例如配置、初始化等操作 | | roslisp | ROS的LISP庫 | | roscs | Mono/.NET.庫,可用任何Mono/.NET語言,包括C#,Iron Python, Iron Ruby等| | rosgo | ROS Go語言庫| | rosjava | ROS Java語言庫| | rosnodejs | Javascript客戶端庫| | ... | ...| 目前最常用的只有roscpp和rospy,而其余的語言版本基本都還是測試版。 從開發客戶端庫的角度看,一個客戶端庫,至少需要能夠包括master注冊、名稱管理、消息收發等功能。這樣才能給開發者提供對ROS通信架構進行配置的方法。 整個ROS包括的packages如下,你可以看到roscpp、rospy處于什么位置。 ![](https://img.kancloud.cn/cd/c2/cdc2c82381ac7918f15ccba16ac8caf8_1623x1084.png) ## 6.1.2 roscpp roscpp位于`/opt/ros/kinetic`之下,用C++實現了ROS通信。在ROS中,C++的代碼是通過catkin這個編譯系統(擴展的CMake)來進行編譯構建的。所以簡單地理解,你也可以把roscpp就當作為一個C++的庫,我們創建一個CMake工程,在其中include了roscpp等ROS的libraries,這樣就可以在工程中使用ROS提供的函數了。 通常我們要調用ROS的C++接口,首先就需要`#include <ros/ros.h>`。 roscpp的主要部分包括: * ros::init() : 解析傳入的ROS參數,創建node第一步需要用到的函數 * ros::NodeHandle : 和topic、service、param等交互的公共接口 * ros::master : 包含從master查詢信息的函數 * ros::this_node:包含查詢這個進程(node)的函數 * ros::service:包含查詢服務的函數 * ros::param:包含查詢參數服務器的函數,而不需要用到NodeHandle * ros::names:包含處理ROS圖資源名稱的函數 具體可見:http://docs.ros.org/api/roscpp/html/index.html 以上功能可以分為以下幾類: * Initialization and Shutdown 初始與關閉 * Topics 話題 * Services 服務 * Parameter Server 參數服務器 * Timers 定時器 * NodeHandles 節點句柄 * Callbacks and Spinning 回調和自旋(或者翻譯叫輪詢?) * Logging 日志 * Names and Node Information 名稱管理 * Time 時鐘 * Exception 異常 看到這么多接口,千萬別覺得復雜,我們日常開發并不會用到所有的功能,你只需對要有一些印象,掌握幾個比較常見和重要的用法就足夠了。下面我們來介紹關鍵的用法。
                  <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>

                              哎呀哎呀视频在线观看