1、ROS节点是一个独立的运行实例;
可执行文件:一个节点对应于一个可执行文件,它通过编译ROS软件包得到,通过运行可执行文件启动和管理ROS节点。
main()函数里“ros::init(argc,argv,"hello");”会初始化ros节点,设置ROS系统的参数,并告诉ROS master(ROS主节点)有一个新节点“hello”加入。
CMakeLists.txt文件里 add_executable(hello_vscode_c src/hello_vscode_c.cpp)配置了一个名为“hello_vscode_c”的可执行文件,该文件源代码位于“ src/hello_vscode_c.cpp”。
target_link_libraries(hello_vscode_c ${catkin_LIBRARIES})用于将ROS节点与ROS库(catkin_LIBRARIES)链接在一起。
当你运行/启动一个ROS节点时,实际上是在运行相应的可执行文件(需要在命令行中运行生成的可执行文件(例如,./hello_vscode_c)),这将启动ROS节点并使其能够与其他节点通信。
#include <ros/ros.h>
int main(int argc, char** argv) {
// 初始化ROS节点
ros::init(argc, argv, "my_node");
// 创建ROS节点
ros::NodeHandle nh;
// 执行节点功能...
// 进入ROS循环
ros::spin();
return 0;
}
2、
node ---> 包含的某个节点
- pkg -----> 功能包
- type ----> 被运行的节点文件
- name --> 为节点命名
- output-> 设置日志的输出目标
- 运行 launch 文件
roslaunch 包名 launch文件名
3、启动roslaunch并播放bag之后,终端运行:rqt_gragh,查看节点和话题之间的关系。
椭圆代表节点(main函数里面的),方框代表话题。计算图反映了所有运行的节点(错误),rqt_graph只会显示那些已经进行通信的节点。如果某个节点没有发布或订阅任何消息,它可能不会出现在rqt_graph中。
4、10HZ即每秒10次的频率。
5、CMakeLists.txt文件里find_package(Qt5)是找包配置文件(例如Qt5Config.cmake),这个配置文件里包含了包的具体信息,包括动态库文件的位置,头文件的目录,链接时需要开启的编译选项等等。
安装的包配置文件会自动放到 /usr/lib/cmake/XXX/XXXConfig.cmake 这个路径(其中XXX是包名)。
作用:find_package()把一整个依赖包的头文件包含路径、库路径、库名字、版本号等情况都获取到,后续只管用就好了。
“轻松搞定 CMake”系列之 find_package 用法详解_cmake find_package-CSDN博客
6、catkin_package中添加的包,必须在package.xml中指定依赖。
ROS CMakeLists.txt 中的 catkin_package 与 find_package_find_package 和catkin_package-CSDN博客
7、add_dependencies(free_space_proto ${catkin_EXPORTED_TARGETS})
#为free_space_proto引入依赖,保证free_space_proto在构建之前这些依赖已经被构建.