創建ROS功能包


1 創建文件,初始化工作空間

 mkdir -p -/catkin_ws/src
 cd -/catkin_ws/src
 catkin_init_workspace		# src下出現CMakeList

2 編譯

cd ...
caktin_make		# catkin_ws下出現build和devel

3 創建功能包

cd src
#創建指令         #包名(文件夾名字)       #依賴的功能包
catkin_create_pkg XXXXXX std_msgs rospy roscpp

此時,新創建的包文件夾下會有include、src、CMakeList.txt、package.xml

“CMake是一種跨平台編譯工具,CMake主要是編寫CMakeLists.txt文件,然后用cmake命令將MakeLists.txt文件轉化為make所需要的makefile文件,最后用make命令編譯源碼生成可執行程序或共享庫。”
“package.xml 也是一個catkin的package必備文件, 它是這個軟件包的描述文件, 用於描述pacakge的基本信息。rospack find 、 rosdep 等命令之所以能快速定位和分析出package的依賴項信息, 就是直接讀取了每一個pacakge中的 package.xml 文件。”

在src下編輯文件seg.cpp,添加到CMakeList:

		# 可執行文件名 源文件名
add_executable(seg src/seg.cpp)
			# 可執行文件名 添加可執行文件的依賴
target_link_libraries(seg ${catkin_LIBRARIES})

注意添加CMakeList時,順序不要亂了,遇到過生成的可執行文件出現在build而不是在devel中:

CMakeList中聲明順序有問題,要先聲明catkin_package(),再聲明add_executable()

4 創建新的話題

在當前功能包新建msg文件夾,存放msg文件(由於話題名自帶包名,所以yolo錄的話題都是darknet_ros_msgs/開頭的,用的時候新建的話題也得是darknet_ros_msgs/打頭,我這里干脆新創建同名包darknet_ros_msgs,專門存話題了)

package.xml下添加:
<build_depend>message_generation</build_depend>
<run_depend>message_runtime</run_depend>  # 或者<exec_depend>message_runtime</exec_depend>
CMakeList添加
find_package(message_generation)  # 話題用到的依賴,比如pcl庫等
add_message_files(BoundingBox.msg BoundingBoxes.msg)  # 話題文件
catkin_package(message_runtime)

catkin_make 后在catkin_ws/devel/include/darknet_ros_msgs``下生成話題.h文件; 在程序中#include <darknet_ros_msgs/BoundingBox.h>進來就好;
如果是在單獨的功能包中創建的的話題,還需要在CMakeList中find_package(darknet_ros_msgs)
launch文件

<launch>
    <!-- 兩種參數讀入方式 -->
    <!-- 1、從yaml文件中 -->
    <rosparam file="$(find segmentation)/config/params.yaml" command="load" />
    <!-- 2、直接從launch文件中 -->
    <param name="center_x" value="381.91"/>
     <!-- pkg:包名  type:可執行文件名  name:節點名  -->
<node pkg="segmentation" type="seg" name="seg" output="screen" respawn="true" />
<node name="rviz" pkg="rviz" type="rviz" output="log" args="-d $(find segmentation)/launch/rviz.rviz" />
</launch>


免責聲明!

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



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