学习ros推荐看官方教程,现在里面大部分都有翻译成中文的版本,多看看绝对没错
1. 数据的实时性
要保证从节点获取的数据是最新的,就必须设置Publisher的queue_size和Subscriber的queue_size都为1,如果数据过大还需要设置buff_size
具体参考博客ROS订阅最新的消息及queue_size和buff_size的理解
2. 名称
我们往往将节点名和执行文件命名相同,但要注意节点名并不一定与对应可执行文件名称相同
包内可执行程序名由包内CMakeLists.txt控制生成
add_executable( exe_name xxx.cpp)
在每个可执行程序的main里都会有定义节点的语句,这里的节点名字只是用于代码编译,和launch文件的节点名不是一回事
明确一下与节点相关术语的含义:
Nodes:节点,一个节点即为一个可执行程序,它可以通过ROS与其他节点通信,另外,一个catkin程序包里可以有很多节点
Messages:消息,消息是一种ROS数据类型,用于订阅或发布到一个话题,是一个载体。
Topics:话题,节点可以向话题发布消息或可以向话题订阅消息,像通信中转站一样。
Master:节点管理器,ROS名称服务。
rosout:话题‘总管’,相当于std::cout
所有的节点发布都向话题/rosout 发布消息,该话题由同名的/rosout 节点订阅。这个话题的作用是用来生成各个节点的文本日志消息
roscore:是在运行所有ROS程序前首