創建一個ros功能包


 一、創建並配置工作空間(workspace)

  工作空間是存放工程開發相關文件的文件夾,現在較新版本的ROS默認使用catkin編譯系統,該編譯系統的空間比較特殊,所以需要特殊的方式創建。

  1、創建工作空間

    mkdir -p ~/catkin_ws/src                   #在home目錄下創建兩級目錄,先創建catkin目錄,再創建src目錄,必須使用-p選項

    cd ~/catkin_ws/src                      #切換到src目錄

    catkin_init_workspace                     #初始化工作空間

  2、編譯工作空間,此時工作空間為空,經過編譯會生成很多文件,嚴格來說是遷移來很多文件

    cd ~/catkin_ws/

    catkin_make                        #catkin自己的編譯命令

  3、初始化環境變量,使環境變量生效

    source devel/setup.bash                    #其實就是運行編譯生成的devel目錄下的setup.bash文件

  4、驗證環境變量是否有效

    echo $ROS_PACKAGE_PATH                  #打印當前工作空間的路徑,結果如下:,包括剛剛創建的工作空間的目錄就對了,否則,要好好找找原因了。

municationk@developk:~/catkin_ws$ echo $ROS_PACKAGE_PATH
/home/municationk/catkin_ws/src:/opt/ros/melodic/share

 

  二、在工作空間創建功能包,ROS系統的實現主要靠功能包實現各個功能

  功能包中包含了許多文件和配置信息及編譯信息等,現在較新版本的ROS默認使用catkin編譯系統,該編譯系統對功能包要求比較特殊,所以需要特殊的方式創建。

  1、創建功能包,應用catkin_create_pkg命令

    cd ~/catkin_ws/src                      #切換到代碼空間,也就是工作空間的src目錄

   catkin_create_pkg learning_com std_msgs rospy roscpp    #創建功能包,並指定有三個功能包依賴

  2、再次編譯工作空間,並設置環境變量

    cd ~/catkin_ws/

    catkin_make                        #編譯

    source devel/setup.bash                   #設置環境變量

  三、在工作空間創建功能包,實現一個簡單的發布、訂閱程序:主要是添加兩個cpp源碼talker.cpp和listener.cpp,修改一個編譯配置文件CMakeList.txt,修改一個功能包配置文件package.xml文件

  1、talker.cpp在工作空間的代碼空間的功能包的代碼空間中,本文中為:~/catkin_ws/src/learning_com/src/目錄

  2、listener.cpp在工作空間的代碼空間的功能包的代碼空間中,本文中為:~/catkin_ws/src/learning_com/src/目錄中

  3、CMakeList.txt在工作空間的代碼空間的功能包的代碼空間中,本文中為:~/catkin_ws/src/learning_com/目錄中

  4、package.xml在工作空間的代碼空間的功能包的代碼空間中,本文中為:~/catkin_ws/src/learning_com/目錄中

  5、編譯功能包,並設置環境變量

    cd ~/catkin_ws/

    catkin_make                        #編譯

    source devel/setup.bash                   #設置環境變量

  測試,打開三個終端,在第一終端輸入:roscore,第二個終端輸入:rosrun learning_com talker 第三個終端輸入:rosrun learning_com listener

  在第一終端輸入:roscore,第二個終端輸入:rosrun  learning_com talker,第三個終端輸入:rosrun  learning_com listener,當在第二個終端中使用ctrl+c將程序中talker的publisher退出,第三個終端中的lisenter的subscriber也無法接受數據

 

參考博客:https://www.cnblogs.com/guochaoxxl/p/11303128.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM