• 机器人操作系统入门(三)ROS通信架构


    参考资料:

    https://www.icourse163.org/course/ISCAS-1002580008?tid=1003713012  //中国大学MOOC

    https://www.bilibili.com/video/av23401751  //B站

    《ROS操作系统入门讲义》PDF下载

    链接:https://pan.baidu.com/s/1OCja2WLDRnjYXMrpnZ3-sQ 
    提取码:mziy

    第三章 ROS通信架构(一)

    1. 节点node:ROS世界中最小的进程单元

    • 程序角度:可执行文件被执行,加载至内存,生成node
    • 功能角度:一个node复制机器人的一个单独功能

    注:可执行文件是静态的,节点node是动态

    2. 节点管理器master

    • node首先在master处进行注册,之后master会将该node纳入整个ROS程序中
    • node之间的通信也是先由master进行“牵线”,才能两两的进行点对点通信

    3. 启动master和node

    • roscore  //启动master、rosout和parameter server
    • rosrun pkg_name node_name  //rosrun寻找包pkg_name下名为node_name的可执行程序

    注:rosrun命令的详细用法  rosrun [--prefix cmd] [--debug] pkg_name node_name [ARGS]

    示例:rosrun --prefix 'gdb -ex run --args' pkg_name node_name  //在GDB下运行ros程序

    注:通过 rosnode help 查看命令帮助

    4. launch文件:一次性把多个节点按照预先的配置启动起来

    (1)用法:roslaunch pkg_name file_name.launch  //若master没有启动,那么roslaunch就会首先自动启动master

    (2)写法与格式:xml格式规范

    (3)示例

    • 启动rospy_tutorials软件包中单个节点talker

    • Ros-Academy-for-Beginners 中的 robot_sim_demo:启动gazebo模拟器,导入参数内容,加入机器人模型

    5. 话题topic  //适用于实时性、周期性的消息,如传感器数据

    (1)ROS的四大通信方式

    • Topic 话题  //节点对节点的单向通信异步通信
    • Service 服务  //请求-查询式的双向通信模型;同步通信
    • Parameter Server 参数服务器  //使用数据字典维护全局共享参数
    • Actionlib 动作库  //请求-响应-反馈式双向通信

    (2)话题的建立过程(单向

    1. publisher节点和subscriber节点都要到节点管理器进行注册
    2. publisher会发布topic
    3. subscriber在master的指挥下会订阅该topic,从而建立起sub-pub之间的直接通信

    注:

    • 异步指的是发布者和订阅者不关心对方的状态,各司其职,不存在协同工作
    • topic发送时调用publish()方法,发送完成立即返回,不用等待反馈
    • subscriber通过回调函数的方式来处理消息
    • topic可以同时有多个subscribers,也可以同时有多个publishers;ROS中这样的例子有:/rosout、/tf等等

    (3)topic常用命令

    注:使用 rostopic help rostopic command -h 查看具体用法

    6. Message(.msg)  //topic的数据格式标准,利用 rostopic type topic_name 进行查看

    (1)msg的基本数据类型:bool、int8、int16、int32、int64(以及uint)、float、float64、string、time、duration、header、可变长数组array[ ]、固定长度数组array[C]

    示例:sensor_msgs/msg/image.msg

    注:可以将msg类比为“类”,而每次发布的具体内容为“对象”

    (2)rosmsg的常用命令

  • 相关阅读:
    性能测试理论知识
    接口测试笔试题
    测试计划与测试报告
    java基础面试题
    软件测试人员必备的linux命令
    tomcat各目录(文件)作用
    常见的面试题
    LoadRunner中怎么设置密码参数化与用户名关联
    数据库索引总结(二)
    数据库索引总结(一)
  • 原文地址:https://www.cnblogs.com/hg-love-dfc/p/10396539.html
Copyright © 2020-2023  润新知