对ros中话题,消息,发布订阅,服务,参数服务器的理解

0.哔站奥特学园赵虚左老师讲的真好。(建议先听古月21讲搭框架)
1.发布订阅 和 服务都使用了 话题 和 消息 。
2.消息描述了话题的结构(话题长什么样子)。
3.发布订阅中的消息文件后缀.msg,服务中消息文件后缀.srv
4.在查找问题时,要找哪点的问题就使用相关的命令,例如:
怀疑节点的话题写的不对,就用rosnode命令查找节点的话题。
5.在一个工作空间中编写另一个工作空间的节点要将相关的消息引入程序。
#先使用 rostopic info 命令 查找话题的消息类型:如下

Type :plumbing_pub_sub/ Person

#python引入

from plumbing_pub_sub.msg import Person

上面是发布订阅.msg,如果是服务则为.srv
#C++引入

#include "plumbing_pub_sub/Person"

6.ros节点初始化的名字是这个节点的名字,
如果这个节点是发布者有Publishers:名字
如果这个节点是订阅者则Subscribers:名字
CMakelists.txt中给《一个cpp文件的名字》 对应的那个名字是文件的工程名(使用rosrun命令执行cpp文件时用到(一般设置成和cpp文件名一致))。

7.参数服务器随着roscore的关闭同时关闭,重新打开roscore,参数服务器清零。

8.launch文件

<node pkg="" type=" " name= "" output=""/>
pkg:功能包ming
type:cpp文件对应的工程名(一般和文件名字相同)
name:节点名(不要和话题名混淆)

9.话题名称(例如/turtle1/cmd_vel)
其中turtle1是命名空间(节点名称)注意不是功能包的名称也不是文件的名称

10.系统时间不正确会导致浏览器警告:不安全的访问,和sudo apt-get update失败,并提醒:不安全的访问

11.订阅者的回调函数的参数类型与订阅话题的Type有关。
如果回调函数如下

void doPose(const turtlesim::Pose::Constpty& pose)

则需要如下引入

#include "turtlesim/Pose.h" 

与tf有关的订阅和发布需要引入

#include "tf2_ros/transform_broadcaster.h"
#include "tf2_ros/transform_listener.h
#include "geometry_msgs/TransformStamped.h"
form geometry_msgs.msg import TransformStamped

描述的是两个坐标系的关系

# include "geometry_msgs/PointStamed.h"
from tf2_geometry_msgs import tf2_geometry_msgs

描述的是空间中一点在坐标系中的位置

#include "geometry_msgs/PointStamped.h"
#include "tf2_geometry_msgs/tf2_geometry_msgs.h"

在一个文件中定义PointStamed.h对象

/spawn 属于一个乌龟节点,创建另一只乌龟时它的话题也在第一个节点中。

TF变换有有自己封装好的订阅和发布函数。自动生成的话题是/tf

vs code 中调用的函数,如果没有正确的处理产生的异常就会报错(查看不看了复用)。

《对ros中话题,消息,发布订阅,服务,参数服务器的理解》
python 传入的消息是四个
c++传入的消息是两个
18.URDF中先编写一个在坐标原点的微小几何体,在它的基础上构建连杆。在一个关节上构建新的连杆(子连杆(child_link)的偏移量是其相对于其关节的偏移量,这个关节的偏移量是相对于parent_link的偏移量)

soildworks可以生成urdf文件

快捷键

ctrl+/        批量加注释、解注释
tab     批量后退
Shift   批量前进

静态地图:有高度,宽度(多少个像素点),分辨率(一个像素点映射现实中多少米)
代价地图:静态地图+辅助数据

未完待续

    原文作者:
    原文地址: https://blog.csdn.net/qq_21405333/article/details/122994774
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞