• 【ros学习笔记】-9 ros基本概念


    ros 基本概念

    1 节点管理器

    节点都需要在节点管理器上进行注册才能使用
    启动节点管理器:roscore

    2 节点

    具体的执行单元
    不同的节点可以使用不同的语言编写
    节点在系统中的名字要唯一

    3 通信方式

    3.1 话题(topic)

    发布者(publisher):发布话题,向话题中传输数据(注:发布者可以创建话题,也可以向已有话题传输数据
    订阅者(subscriber):订阅话题,从话题中读取数据
    传输方向:单方向
    传输的数据类型:消息(文件类型 .msg)
    话题有缓冲区(发布和订阅的速度不匹配时,会将数据缓存起来)
    一个话题,可以有多个发布者发布这个话题,也可以有多个订阅者订阅该话题

    图1在这里插入图片描述
    上面第一个图中,pub就是定义的发布者,方框中的是话题(消息类型、话题名),10就是最多缓存10个数据。
    方框中的话题若存在,就向这个话题传递数据;若不存在,相当于创建了一个名为topic_pub_name_cpp 的话题。
    图2中,发布者发布的消息会到topic_pub_name_cpp 话题中。
    由以上可知,让发布者发布话题只需要两行关键代码
    在这里插入图片描述在这里插入图片描述由上可知,订阅者订阅话题,只需要一行关键代码,和一个回调函数;回调函数是对 订阅到的话题 的具体操作。
    msg文件:

    在这里插入图片描述

    3.2 服务(service)

    服务器(server):服务向服务器发出请求,服务器返回应答
    客户端(client):客户端向服务发出请求,服务返回应答
    传输方向:双向传输
    传输数据类型:.srv
    无缓冲区
    一个服务只能有一个服务器,但可以有多个客户端
    在这里插入图片描述在这里插入图片描述
    客户端需要向连接服务,之后向服务发出请求;在客户端中,只修改request中的数值
    在这里插入图片描述
    在这里插入图片描述
    服务器定义时会创建一个服务,服务的消息类型在回调函数中确定;服务器仅仅对response的数据进行修改。
    这里说明一下,服务本质就是一个双向传输,给两个方向传输的数据称为request、response;在服务器中虽然也可以修改request中的数据,但request本质就是客户端向服务器传输的数据,对其进行修改也不会影响客户端。
    因此,在非特殊情况下,服务器仅修改response(应答)中的数据(response才是服务器发出的数据)
    srv 文件:
    在这里插入图片描述
    上面是请求的消息类型,下面是应答的消息类型

    4 参数

    全局共享字典
    所有节点都可以访问到参数
    多用于存储静态数据(参数的数据发生修改,若调用该参数的节点没有重新调用,则在这个节点中,参数的值不会发生改动)
    在这里插入图片描述

    5 功能包文件

    在这里插入图片描述
    launch文件、python文件不需要配置
    c++文件、msg文件、srv 文件 需要配置
    运行launch文件:

    roslaunch launch_pkg launch文件.launch
    
    • 1

    运行python、c++可执行文件
    c++

    rosrun 包名 可执行文件
    
    • 1

    python

    rosrun 包名 文件名.py
    
    • 1
  • 相关阅读:
    前端快速学习记录:实现一个原神时钟(简易版)
    C++标准模板(STL)- 输入/输出操纵符-(std::setbase,std::setfill)
    深度神经网络压缩与加速技术
    stp基本介绍
    数据分析及治理工程师
    好市多(Costco)验厂要求合集
    C++_红黑树
    Redis为什么要使用SDS作为基本数据结构
    go开发调试之Delve的使用
    activiti-bpmn-converter
  • 原文地址:https://blog.csdn.net/qq_43657247/article/details/126403208