一、整体框架结构
二、关系描述
1、ROS.cpp
里面初始化了一个ROS节点,注意我的源文件里面只初始化了一个节点
// ROS.cpp
#include "ros/ros.h"
int main(int argc, char **argv)
{
ros::init(argc, argv, "node_name"); // 指定节点名称为 "node_name"
ros::NodeHandle n;
// 节点的功能实现
// ...
ros::spin(); // 保持节点运行
return 0;
}
2、CMakeLists.txt
CMakeLists.txt文件定义了如何构建 ROS 包中的节点。这包括设置编译器标志、包含头文件目录以及链接库文件等。
节点的可执行文件名不需要和节点名相同,上面我的源代码里面只初始化了一个节点,所以节点的可执行文件名可以随便取。
eg. CMakeLists.tx
cmake_minimum_required(VERSION 3.0.2)
project(ROS_package1)
find_package(catkin REQUIRED COMPONENTS
roscpp
std_msgs
)
catkin_package(
INCLUDE_DIRS include
LIBRARIES ROS_package1
CATKIN_DEPENDS roscpp std_msgs
)
include_directories(
include
${catkin_INCLUDE_DIRS}
)
add_executable(node_executable src/ROS.cpp)
target_link_libraries(node_executable
${catkin_LIBRARIES}
)
project(ROS_package1)
声明包的名称,这个名称与package.xml
中的包名相同。find_package(catkin REQUIRED COMPONENTS ...)
查找并加载包所需的依赖项。add_executable(node_executable src/ROS.cpp)
定义一个名为node_executable
的可执行文件,它的源文件是src/ROS.cpp
。target_link_libraries(node_executable ${catkin_LIBRARIES})
将catkin
库链接到可执行文件node_executable
上,以确保其依赖项正确链接。
3、Package.xml
Package.xml是 ROS 包的元数据文件,主要用于描述包的信息,如包名、版本、依赖关系等。在这个文件中,包名ROS_package1通过<name> 标签指定。 <name>ROS_package1</name>
4、运行节点指令
rosrun 包名 节点可执行文件名
rosrun ROS_package1 node_executable