ROS知识【11-1】:建立用户自己的工作空间、功能包
一、關于功能包 的操作指令
????????圍繞功能包的操作指令,這些指令存在的必要性,就是直接對某個包進行操作,尤其是如果有上百個功能包,直接從linux進行操作是低效的:
二、烏龜案例分析
當ros安裝好后,用下列指令測試:
roscore # 打開主進程 rosrun turtlesim turtlesim_node # 運行turtlesim 包中的turtlesim_node節點臺 rosrun turtlesim turtle_teleop_key # 運行turtlesim 包中的turtle_teleop_key節點,顯然是在功能包turtlesim下有兩個節點turtlesim_node和 turtle_teleop_key節點。
三、圍繞turtlesim包的操作
3.1 roscd指令進入turtlesim元功能包
執行命令:
roscd turtlesim #進入烏龜功能包 rosls #查看包內文件結構 rosnode list #查看包內的節點細節注意:/opt/ros/melodic/share下面的應用包,都是元應用包;其中也有turtlesim,但此包不是用戶開發的包,因此只能看,不能修改。
???
四、用戶自己開發的開端
????????以上小烏龜的控制蘊含了ROS的基本原理,但它是前面的人開發出來發布出來的,如今擺在面前的問題是,我們自己如何能開發一個類似的程序?那么,就從這里開始吧。
????????建立工作空間,其意義在于,每一個工作空間,可以包含多個功能包;換個角度,每一個功能包只能依附在某個工作空間內部。即便我們需要修改別人的ros代碼,也需要生成一個工作空間,再把需要修改的代碼導入該空間,然后修改、編譯、發布。
4.1 建立工作空間
mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src catkin_init_workspace可以看出,上文中建立一個工作空間catkin_ws, 而且通過catkin_init_workspace使得該空間與
/opt/ros/melodic/share/catkin/cmake/toplevels.cmake 相連接;使得本地編譯擴大為全局編譯。 ??
4.2 編譯
編譯整個工作空間。
cd ~/catkin_ws catkin_make編譯后,工作空間多了兩個目錄:build和devel;多出來的空間有:
-
src:代碼空間(Source Space)
-
build:編譯空間(Build Space)
-
devel:開發空間(Development Space)
-
install:安裝空間(Install Space)
4.3 設置環境變量:
source ./devel/setup.bash查看執行后效果:echo $ROS_PACKAGE_PATH
?
4.4 創建功能包
cd ~/catkin_ws/src catkin_create_pkg learning_communication std_msgs rospy roscpp以上代碼在工作空間catkin_ws上定義一個功能包;
注意:功能包不可嵌套,只能平行放置;也就是如果繼續追加功能包,就重復上面操作。
?4.5 編譯并設置環境
cd ~/catkin_ws catkin_make source ./devel/setup.bash以上就是創建功能包的全部過程。
五、將工作空間改造成Eclipse工程
5.1 首先將ros的教程代碼安裝進本地電腦
sudo apt-get install ros- melodic-ros-tutorials查看安裝地點:
rospack find roscpp-tutorials顯示:
/opt/ros/melodic/share/roscpp_tutorials
5.2 改變方式,rosc_tutorials將源碼導入本地catkin_ws中
因為導入的是功能包,和上文建的learning_communication處于平行的路徑上,所以:
cd ~/catkin_ws/src?執行:
git clone https://github.com/ros/ros_tutorials.git將github上的ros_tutorials.git源碼下載解壓到本地,catkin_ws/src下面。
5.3 將本地catkin_ws中內容轉成Eclipe工程
編譯本地
cd ~/catkin_ws catkin_make source ./devel/setup.bash?創建eclipse工程
cd ~/catkin_ws catkin_make --force-cmake -G"Eclipse CDT4 - Unix Makefiles"設置終端環境變量到Eclipse
awk -f $(rospack find mk)/eclipse.awk build/.project > build/.project_with_env && mv build/.project_with_env build/.project注意:如果上部執行不成功,查看
???? echo $ROS_PACKAGE_PATH ? ? ??
用該命令查看是否設置正確。或執行【 source ./devel/setup.bash 】
如果需要調試程序,還需要執行下面命令來設置代碼編譯成debug版本:
cmake ./src -DCMAKE_BUILD_TYPE=Debug?項目的文件在目錄 ~/catkin_ws/build,至此Eclipse工程文件創建完成。
?至此,從Eclipse環境導入現有工程,將catkin_ws導入即可用。注意:小烏龜的案例就在catkin_ws內部,導入Eclipse可以編輯查看修改。
總結
以上是生活随笔為你收集整理的ROS知识【11-1】:建立用户自己的工作空间、功能包的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 华硕笔记本:Ubuntu 18.04安装
- 下一篇: ROS知识【12】:用户的功能包覆盖系统