一、創建並配置工作空間(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
