日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ROS学习--第3篇:ROS基础---创建工作空间和软件包

發(fā)布時間:2025/4/16 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ROS学习--第3篇:ROS基础---创建工作空间和软件包 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1.創(chuàng)建工作空間 catkin_ws

創(chuàng)建src文件,放置功能包源碼:

mkdir -p ~/catkin_ws/src
進入src文件夾:

cd ~/catkin_ws/src
初始化文件夾:

catkin_init_workspace
這樣就在src文件中創(chuàng)建了一個 CMakeLists.txt 的文件,目的是告訴系統(tǒng),這個是ROS的工作空間。

2.編譯工作空間 catkin_make

所有編譯工作都要在catkin_ws文件夾下編譯:

cd ~/catkin_ws/
編譯,編譯完成后,會發(fā)現(xiàn)catkin_ws中多了兩個文件 build 和 devel

catkin_make

3.設置環(huán)境變量

在第1篇中,我們介紹了設置環(huán)境變量,那個是將整個ros系統(tǒng)的環(huán)境變量設置到bash腳本中,現(xiàn)在我們需要把我們工作空間的環(huán)境變量設置到bash中。

echo “source ~/catkin_ws/devel/setup.bash” >> ~/.bashrc
讓上面的配置在當前的終端生效:

source ~/.bashrc
我們用 vi 編輯器打開 ~/.bashrc 文件,就可以看到最后兩行,第一行是我們第1篇添加的ros系統(tǒng)的環(huán)境變量,第2行是我們創(chuàng)建的catkin_ws工作空間的環(huán)境變量:

如果想要查看環(huán)境變量:

echo $ROS_PACKAGE_PATH
終端會輸出:

/home/wdd/catkin_ws/src : /opt/ros/kinetic/share 第一個是我們剛才創(chuàng)建的catkin_ws的,第二個是ros系統(tǒng)的。

4.創(chuàng)建功能包

在src中創(chuàng)建:

cd ~/catkin_ws/src/
功能包格式:

catkin_create_pkg package_name depend1 depend2 depend2
package_name:功能表名稱

depend1、2、3:依賴項

創(chuàng)建功能包:

catkin_create_pkg learning_communication std_msgs roscpp rospy
std_msgs:包含常見消息類型

roscpp:使用C++實現(xiàn)ROS各種功能

rospy:使用python實現(xiàn)ROS各種功能

5. catkin工作空間中的軟件包

開發(fā)catkin軟件包的推薦方法是使用catkin工作空間,但是你也可以單獨開發(fā)catkin軟件包。一個簡單的工作空間如下所示:

workspace_folder/ – WORKSPACE:工作空間
src/ – SOURCE SPACE:代碼空間
CMakeLists.txt – ‘Toplevel’ CMake file, provided by catkin:最頂層CMake文件,由catkin提供
package_1/
CMakeLists.txt – CMakeLists.txt file for package_1
package.xml – Package manifest for package_1

package_n/
CMakeLists.txt – CMakeLists.txt file for package_n
package.xml – Package manifest for package_n

6. 軟件包依賴關系

6.1 一級依賴

使用catkin_create_pkg命令時提供了幾個軟件包作為依賴關系,現(xiàn)在可以使用rospack命令工具查看這些一級依賴包。

rospack depends1 beginner_tutorials
返回的結果:
std_msgs
rospy
roscpp

rospack列出了在運行catkin_create_package命令時作為參數(shù)的依賴包,這些依賴包存儲在package.xml文件中。

6.2 間接依賴

在很多種情況下,一個依賴包還會有它自己的依賴關系,比如,rospy就有其他依賴包關系

kandi@ubuntu:~/catkin_ws/src/study$ rospack depends rospy
catkin
genmsg
genpy
cpp_common
rostime
roscpp_traits
roscpp_serialization
message_runtime
gencpp
geneus
gennodejs
genlisp
message_generation
rosbuild
rosconsole
std_msgs
rosgraph_msgs
xmlrpcpp
roscpp
rosgraph
ros_environment
rospack
roslib
kandi@u

7.編譯功能包

cd ~/catkin_ws
catkin_make
這行這邊后,工作空間構建完成,在devel子目錄下創(chuàng)建一個與你通常在/opt/ros/$ROSDISTRO_NAME下看到的目錄結構類似的結構,比如我們下載的是noetic版本,其目錄結構如下:

工作空間目錄說明如下:

要將這個工作空間添加到ROS環(huán)境中,你需要source 一下生成的配置文件:

$ . ~/catkin_ws/devel/setup.bash

顯示如下說明編譯成功:


[ 0%] Built target nav_msgs_generate_messages_eus
[ 0%] Built target nodelet_generate_messages_lisp
[ 33%] Built target slam_gmapping_nodelet
[ 44%] Linking CXX executable /home/kandi/catkin_ws/devel/lib/gmapping/slam_gmapping_replay
[ 55%] Linking CXX executable /home/kandi/catkin_ws/devel/lib/gmapping/slam_gmapping
[ 77%] Built target slam_gmapping
[100%] Built target slam_gmapping_replay

在工作空間根目錄下(比如/home/kandi/catkin_ws)編譯生成可執(zhí)行文件slam_gmapping和slam_gmapping_replay位于/home/kandi/catkin_ws/devel/lib/gmapping/目錄下。

8.執(zhí)行可執(zhí)行文件

命令行終端先運行roscore啟動master階段,再在另一個終端執(zhí)行可執(zhí)行文件。

kandi@ubuntu:~/catkin_ws$ cd /home/kandi/catkin_ws/devel/lib/gmapping/
kandi@ubuntu:~/catkin_ws/devel/lib/gmapping$ ./slam_gmapping

標準的做法:

$ rosrun [package_name] [node_name]

這里的包名package_name通過軟件包文件catkin_ws\src\slam_gmapping\gmapping\package.xml

gmapping
中name知道package_name為gmapping.

節(jié)點名node_name通過

add_executable(slam_gmapping src/slam_gmapping.cpp src/main.cpp)
target_link_libraries(slam_gmapping ${Boost_LIBRARIES} ${catkin_LIBRARIES})
if(catkin_EXPORTED_TARGETS)
add_dependencies(slam_gmapping ${catkin_EXPORTED_TARGETS})
endif()

set(LOCAL_DEPENDENCIES gmapping-rtest ${PROJECT_NAME}_basic_localization_stage_indexed.bag
${PROJECT_NAME}_test_replay_crash.bag
${PROJECT_NAME}_test_turtlebot.bag
${PROJECT_NAME}_test_upside_down.bag
${PROJECT_NAME}_hallway_slow_2011-03-04-21-41-33.bag
${PROJECT_NAME}_basic_localization_stage_groundtruth.pgm
slam_gmapping
slam_gmapping_replay
)

通過

add_executable(slam_gmapping src/slam_gmapping.cpp src/main.cpp)

add_executable()使用指定的源文件來生成目標可執(zhí)行文件slam_gmapping,slam_gmapping也就是上面的節(jié)點名node_name。

catkin_create_pkg命令生成的CMakeLists.txt文件也非常重要,詳見wiki的鏈接:
添加鏈接描述

總結

以上是生活随笔為你收集整理的ROS学习--第3篇:ROS基础---创建工作空间和软件包的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。