<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>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # 2.3 Package軟件包 在1.6節我們曾對package軟件包進行了分類,分別介紹了二進制包和源代碼包。而ROS中的package的定義更加具體,它不僅是Linux上的軟件包,更是catkin編譯的基本單元,我們調用`catkin_make`編譯的對象就是一個個ROS的package,也就是說任何ROS程序只有組織成package才能編譯。所以package也是ROS源代碼存放的地方,任何ROS的代碼無論是C++還是Python都要放到package中,這樣才能正常的編譯和運行。 一個package可以編譯出來多個目標文件(ROS可執行程序、動態靜態庫、頭文件等等)。 ## 2.3.1 package結構 一個package下常見的文件、路徑有: ``` ├── CMakeLists.txt #package的編譯規則(必須) ├── package.xml #package的描述信息(必須) ├── src/ #源代碼文件 ├── include/ #C++頭文件 ├── scripts/ #可執行腳本 ├── msg/ #自定義消息 ├── srv/ #自定義服務 ├── models/ #3D模型文件 ├── urdf/ #urdf文件 ├── launch/ #launch文件 ``` 其中定義package的是`CMakeLists.txt`和`package.xml`,這兩個文件是package中必不可少的。catkin編譯系統在編譯前,首先就要解析這兩個文件。這兩個文件就定義了一個package。 * CMakeLists.txt: 定義package的包名、依賴、源文件、目標文件等編譯規則,是package不可少的成分 * package.xml: 描述package的包名、版本號、作者、依賴等信息,是package不可少的成分 * src/: 存放ROS的源代碼,包括C++的源碼和\(.cpp\)以及Python的module\(.py\) * include/: 存放C++源碼對應的頭文件 * scripts/: 存放可執行腳本,例如shell腳本\(.sh\)、Python腳本\(.py\) * msg/: 存放自定義格式的消息\(.msg\) * srv/: 存放自定義格式的服務\(.srv\) * models/: 存放機器人或仿真場景的3D模型\(.sda, .stl, .dae等\) * urdf/: 存放機器人的模型描述\(.urdf或.xacro\) * launch/: 存放launch文件\(.launch或.xml\) 通常ROS文件組織都是按照以上的形式,這是約定俗成的命名習慣,建議遵守。以上路徑中,只有`CMakeLists.txt`和`package.xml`是必須的,其余路徑根據軟件包是否需要來決定。 ## 2.3.2 package的創建 創建一個package需要在`catkin_ws/src`下,用到`catkin_create_pkg`命令,用法是: `catkin_create_pkg package depends` 其中package是包名,depends是依賴的包名,可以依賴多個軟件包。 例如,新建一個package叫做`test_pkg`,依賴roscpp、rospy、std\_msgs\(常用依賴\)。 ```bash $ catkin_create_pkg test_pkg roscpp rospy std_msgs ``` 這樣就會在當前路徑下新建`test_pkg`軟件包,包括: ``` ├── CMakeLists.txt ├── include │ └── test_pkg ├── package.xml └── src ``` `catkin_create_pkg`幫你完成了軟件包的初始化,填充好了`CMakeLists.txt`和`package.xml`,并且將依賴項填進了這兩個文件中。 ## 2.3.3 package相關命令 ### rospack rospack是對package管理的工具,命令的用法如下: | rostopic命令 | 作用 | | :---: | :---: | | `rospack help` | 顯示rospack的用法 | | `rospack list` | 列出本機所有package | | `rospack depends [package]` | 顯示package的依賴包 | | `rospack find [package]` | 定位某個package | | `rospack profile` | 刷新所有package的位置記錄 | 以上命令如果package缺省,則默認為當前目錄\(如果當前目錄包含package.xml\) ### roscd `roscd`命令類似與Linux系統的`cd`,改進之處在于`roscd`可以直接`cd`到ROS的軟件包。 | rostopic命令 | 作用 | | :---: | :---: | | `roscd [pacakge]` | cd到ROS package所在路徑 | ### rosls `rosls`也可以視為Linux指令`ls`的改進版,可以直接`ls`ROS軟件包的內容。 | rosls命令 | 作用 | | :---: | :---: | | `rosls [pacakge]` | 列出pacakge下的文件 | ### rosdep `rosdep`是用于管理ROS package依賴項的命令行工具,用法如下: | rosdep命令 | 作用 | | :---: | :---: | | `rosdep check [pacakge]` | 檢查package的依賴是否滿足 | | `rosdep install [pacakge]` | 安裝pacakge的依賴 | | `rosdep db` | 生成和顯示依賴數據庫 | | `rosdep init` | 初始化/etc/ros/rosdep中的源 | | `rosdep keys` | 檢查package的依賴是否滿足 | | `rosdep update` | 更新本地的rosdep數據庫 | 一個較常使用的命令是`rosdep install --from-paths src --ignore-src --rosdistro=kinetic -y`,用于安裝工作空間中`src`路徑下所有package的依賴項(由pacakge.xml文件指定)。
                  <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>

                              哎呀哎呀视频在线观看