机器人操做系统入门(三)ROS通讯架构

参考资料:node

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通讯架构(一)ide

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

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

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

2. 节点管理器masterspa

  • 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、int八、int1六、int3二、int64(以及uint)、float、float6四、string、time、duration、header、可变长数组array[ ]、固定长度数组array[C]

示例:sensor_msgs/msg/image.msg

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

(2)rosmsg的经常使用命令

相关文章
相关标签/搜索