一、CMakeLists.txt,rosrun相关问题解释

文章目录

  • 1. CMakeLists.txt相关问题
    • 1.1 CMakeLists.txt的作用
    • 1.2 哪里有CMakeLists.txt文件
    • 1.3 CMakeLists.txt中的一些命令解释
  • 2. rosrun 包名 可执行文件名
  • 3. 节点名,话题名,可执行文件名之间的关系

1. CMakeLists.txt相关问题

1.1 CMakeLists.txt的作用

CMakeLists.txt文件规定了编译的时候的规则

1.2 哪里有CMakeLists.txt文件

通常,在工作空间下的src文件(mkdir -p ws/src)目录下有一个CMakeLists.txt文件,该文件一般不需要进行修改。此外,在每一个功能包下也有一个CMakeLists.txt文件以及一个package.xml文件,该文件规定了该功能包的一些编译运行规则,需要进行修改,重点了解。
一、CMakeLists.txt,rosrun相关问题解释_第1张图片

1.3 CMakeLists.txt中的一些命令解释

# 规定cmake的最小版本
cmake_minimum_required(VERSION 3.0.2)
# 该项目的名称,即功能包的名称
project(topic)
#添加功能包依赖,使用catkin_creat_pkg topic rospy roscpp std_msgs时会自动添加
find_package(catkin REQUIRED COMPONENTS
  roscpp
  rospy
  std_msgs
)
 # 生成可执行文件,rosrun topic pub中的pub就是在此刻生成的
 # 生成的可执行文件被保存在devel对应的功能包下面,可以直接运行
add_executable(pub src/topic_pub.cpp)
add_executable(sub src/topic_sub.cpp)
# 为可执行文件链接依赖包
target_link_libraries(pub
  ${catkin_LIBRARIES}
)
target_link_libraries(sub
  ${catkin_LIBRARIES}
)

一、CMakeLists.txt,rosrun相关问题解释_第2张图片

2. rosrun 包名 可执行文件名

此处的节点名,实在CMakeLists.txt中通过add_executable(pub src/topic_pub.cpp)进行生成的可执行文件,所以rosrun本质上执行的是一个可执行文件,这和通过ros::init(argc, argv, "talker")进行明明的节点名是不同的。前者是一个可执行文件的名称,后者是一个在rosmaster中的名称,二者具有一一对应关系,名称可以相同,也可以不同。
rqt_graph:
一、CMakeLists.txt,rosrun相关问题解释_第3张图片

3. 节点名,话题名,可执行文件名之间的关系

节点名指的是在rosmaster中的节点名称(在ros::init()中初始化),可执行文件名(在CMakeLists.txt中初始化)与之对应。话题名在创建发布对象的时候进行初始化ros::Publisher pub = nh.advertise("chatter",10);

你可能感兴趣的:(#,ROS进阶,c++,linux,前端,ros)