<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      【ROS教程】ROS文件系統和基礎架構

      @


      1.工作空間目錄

      在這里插入圖片描述

      WorkSpace --- 自定義的工作空間
      
          |--- build:編譯空間,用于存放CMake和catkin的緩存信息、配置信息和其他中間文件。
      
          |--- devel:開發空間,用于存放編譯后生成的目標文件,包括頭文件、動態&靜態鏈接庫、可執行文件等。
      
          |--- src:源碼
      
              |-- package:功能包(ROS基本單元)包含多個節點、庫與配置文件,包名所有字母小寫,只能由字母、數字與下劃線組成
      
                  |-- CMakeLists.txt:配置編譯規則,比如源文件、依賴項、目標文件
      
                  |-- package.xml:包信息,比如:包名、版本、作者、依賴項...(以前版本是 manifest.xml)
      
                  |-- scripts:存儲python文件
      
                  |-- src:存儲C++源文件
      
                  |-- include:頭文件
      
                  |-- msg:消息通信格式文件
      
                  |-- srv:服務通信格式文件
      
                  |-- action:動作格式文件
      
                  |-- launch:可一次性運行多個節點 
      
                  |-- config:配置信息
      
                  |-- CMakeLists.txt:編譯的基本配置
      
      

      1.1 package.xml

      • 固定格式
      <?xml version="1.0"?>
      <!-- 格式: 以前是 1,推薦使用格式 2 -->
      <package format="2">
        <!-- 包名 -->
        <name><the name of package></name>
        <!-- 版本 -->
        <version>0.0.0</version>
        <!-- 描述信息 -->
        <description>The <the name of package> package</description>
      
        <!-- One maintainer tag required, multiple allowed, one person per tag -->
        <!-- Example:  -->
        <!-- <maintainer email="jane.doe@example.com">Jane Doe</maintainer> -->
        <!-- 維護人員 -->
        <maintainer email="*">XXX</maintainer>
      
      
        <!-- One license tag required, multiple allowed, one license per tag -->
        <!-- Commonly used license strings: -->
        <!--   BSD, MIT, Boost Software License, GPLv2, GPLv3, LGPLv2.1, LGPLv3 -->
        <!-- 許可證信息,ROS核心組件默認 BSD -->
        <license>TODO</license>
      
      
        <!-- Url tags are optional, but multiple are allowed, one per tag -->
        <!-- Optional attribute type can be: website, bugtracker, or repository -->
        <!-- Example: -->
        <!-- <url type="website">http://wiki.ros.org/demo01_hello_vscode</url> -->
      
      
        <!-- Author tags are optional, multiple are allowed, one per tag -->
        <!-- Authors do not have to be maintainers, but could be -->
        <!-- Example: -->
        <!-- <author email="jane.doe@example.com">Jane Doe</author> -->
      
      
        <!-- The *depend tags are used to specify dependencies -->
        <!-- Dependencies can be catkin packages or system dependencies -->
        <!-- Examples: -->
        <!-- Use depend as a shortcut for packages that are both build and exec dependencies -->
        <!--   <depend>roscpp</depend> -->
        <!--   Note that this is equivalent to the following: -->
        <!--   <build_depend>roscpp</build_depend> -->
        <!--   <exec_depend>roscpp</exec_depend> -->
        <!-- Use build_depend for packages you need at compile time: -->
        <!--   <build_depend>message_generation</build_depend> -->
        <!-- Use build_export_depend for packages you need in order to build against this package: -->
        <!--   <build_export_depend>message_generation</build_export_depend> -->
        <!-- Use buildtool_depend for build tool packages: -->
        <!--   <buildtool_depend>catkin</buildtool_depend> -->
        <!-- Use exec_depend for packages you need at runtime: -->
        <!--   <exec_depend>message_runtime</exec_depend> -->
        <!-- Use test_depend for packages you need only for testing: -->
        <!--   <test_depend>gtest</test_depend> -->
        <!-- Use doc_depend for packages you need only for building documentation: -->
        <!--   <doc_depend>doxygen</doc_depend> -->
        <!-- 依賴的構建工具,這是必須的 -->
        <buildtool_depend>catkin</buildtool_depend>
      
        <!-- 指定構建此軟件包所需的軟件包 -->
        <build_depend>roscpp</build_depend>
        <build_depend>rospy</build_depend>
        <build_depend>std_msgs</build_depend>
      
        <!-- 指定根據這個包構建庫所需要的包 -->
        <build_export_depend>roscpp</build_export_depend>
        <build_export_depend>rospy</build_export_depend>
        <build_export_depend>std_msgs</build_export_depend>
      
        <!-- 運行該程序包中的代碼所需的程序包 -->  
        <exec_depend>roscpp</exec_depend>
        <exec_depend>rospy</exec_depend>
        <exec_depend>std_msgs</exec_depend>
      
      
        <!-- The export tag contains other, unspecified, tags -->
        <export>
          <!-- Other tools can request additional information be placed here -->
      
        </export>
      </package>
      
      

      2.啟動節點的方式

      2.1 一次啟動一個

      rosrun <the name of package> <the name of executable file>
      
      • executable file:對于C語言,這個文件就是CMakeLists.txt中用add_executable生成的可執行文件;對于python,這個文件就是CMakeLists.txt中用catkin_install_python指向的文件

      對應語法:

      add_executable(<the name of executable file>
                     src/<the name of the source>.cpp
                    )
      catkin_install_python(PROGRAMS scripts/<the name of the source>.py
                            DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
                           )
      

      2.2 一次啟動多個

      如果想要一次性啟動一個包里的多個節點,而不是一行行地輸入rosrun指令...

      • 我們需要一個launch文件,它的固定格式是這樣的:
      <launch>
          <node pkg="helloworld" type="demo_hello" name="hello" output="screen" />
          <node pkg="turtlesim" type="turtlesim_node" name="t1"/>
          <node pkg="turtlesim" type="turtle_teleop_key" name="key1" />
      </launch>
      
      • node:包含的某個節點
      • pkg:功能包
      • type:被運行的節點文件
      • name:為節點命名
      • output:設置日志的輸出目標

      然后,在終端輸入:

      roslaunch <the name of package> <the name of launch file>
      

      3.ROS常用命令

      3.1 增

      創建新的ROS功能包:

      catkin_create_pkg 自定義包名 依賴包
      

      3.2 查

      列出所有功能包:

      rospack list
      

      查找某個功能包是否存在,如果存在返回安裝路徑:

      rospack find 包名
      

      3.3 執行

      3.3.1 加載環境變量

      先進入工作目錄,然后:

      source ./devel/setup.bash
      

      3.3.2 運行節點

      roscore:ROS的系統先決條件節點和程序的集合,必須運行 roscore 才能使 ROS 節點進行通信。新開一個終端并輸入

      roscore #用法一
      roscore -p xxxx #用法二,指定端口號
      

      roscore 將啟動:

      • ros master
      • ros 參數服務器
      • rosout 日志節點

      3.4 查看計算圖

      在節點正在運行的情況下,終端輸入:

      rosrun rqt_graph rqt_graph
      

      在這里插入圖片描述

      4.創建功能包

      4.1 選擇工作目錄

      首先,選擇一個路徑作為工作目錄。這里我選擇了如下路徑作為工作目錄
      在這里插入圖片描述

      4.2 創建功能包目錄

      mkdir src
      

      然后,在工作空間目錄下

      catkin_make
      

      src目錄下會多出一個鎖定的CMakeLists.txt文件,不用管它。

      4.3 建立功能包

      先進入src目錄

      cd src
      

      然后使用ROS提供的指令直接創建功能包即可:

      catkin_create_pkg <the name of your package> roscpp rospy std_msgs message_generatio
      

      roscpp、rospy、std_msgs、message_generatio是你所需要的依賴,你可以自由決定想要哪些依賴

      本文由博客一文多發平臺 OpenWrite 發布!

      posted @ 2024-08-28 13:41  UnderTurrets  閱讀(171)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 亚洲一区二区三区啪啪| 无码欧亚熟妇人妻AV在线外遇| 人人澡人人妻人人爽人人蜜桃| 美女又黄又免费的视频| 四虎成人精品在永久在线| 亚洲VA久久久噜噜噜久久无码| 一区二区三区不卡国产| 污污网站18禁在线永久免费观看| 亚洲国产美国产综合一区| 欧洲性开放老太大| 国产精品综合一区二区三区| 亚洲av熟女国产一二三| 久久精品伊人狠狠大香网| 91福利视频一区二区| 国产自产对白一区| 午夜福利在线观看成人| 日韩中文字幕av有码| 亚洲国产成人精品av区按摩| 日本久久99成人网站| 日韩 高清 无码 人妻| 一区天堂中文最新版在线| 亚洲欧美人成电影在线观看| 艳妇乳肉豪妇荡乳xxx| 色综合天天综合网天天看片| 国产精品中文第一字幕| 农民人伦一区二区三区| 一区二区三区久久精品国产| 不卡国产一区二区三区| 国产大学生粉嫩无套流白浆 | 亚洲肥老太bbw中国熟女| 国产私拍福利精品视频| 116美女极品a级毛片| 免费人成年激情视频在线观看| 久久精品道一区二区三区| 福利一区二区1000| 盘锦市| 国产精品自产在线观看一| 欧美性猛交xxxx乱大交极品| 日韩精品一区二区三区蜜臀| 正在播放肥臀熟妇在线视频| 亚洲 中文 欧美 日韩 在线|