ROS学习笔记一——通信构架

 

1、Node节点

 ROS中最小的进程单元就是节点(Node),一个软件包里可以有多个可执行文件,可执行文件在运行之后就成了一个进程(process),这个进程在ROS中就叫做节点。 从程序角度来说,node就是一个可执行文件(通常为C++编译生成的可执行文件、Python脚本);从功能角度来说,通常一个node负责者机器人的某一个单独的功能。由于机器人的功能模块非常复杂,我们往往不会把所有功能都集中到一个node上,而会采用分布式的方式。例如有一个node来控制底盘轮子的运动,有一个node驱动摄像头获取图像,有一个node驱动激光雷达,有一个node根据传感器信息进行路径规划……


2、Master

   Master是ROS提供给我们的节点(Node)的管理器,在整个网络通信构架中相当于管理中心,管理着各个Node。node首先在master处进行注册,之后master会将node纳入整个ROS程序中。node之间的通信也是由master进行牵线,才能实现通信。当ROS程序启动时,第一步先启动master,由节点管理器处理依次启动Node。master和node关系如下:

3、启动master和node

  启动ROS,首先输入命令:

roscore

   ROS master启动,同时启动的有rosout和parameter server,其中rosout是负责日志输出的一个节点,其作用是告知用户当前系统的状态,包括输出系统的error、warning等并且将log 记录在日志文件中;paremeter server 参数服务器,它并不是一个节点,而是一个储存参数配置的一个服务器。

启动master后,可启动具体的节点,输入命令:

rosrun pkg_name node_name

4、rosrun命令

rosrun将会寻找PACKAGE下的名为EXECUTABLE的可执行程序,将可选参数ARGS传入。例如在GDB下运行ros程序:

rosrun [--prefix cmd] [--debug] pkg_name node_name [ARGS]

5、rosnode命令

 

 

 

 

 

 

6、launch文件

可以同时启动多个Node,输入命令:

rosrun pkg_name file_name.launch

写法与格式遵循xml格式规范,是一种标签文本,包括以下标签:

<launch> <!--根标签-->
<node> <!--需要启动的node及其参数-->
<include> <!--包含其他launch-->
<machine> <!--指定运行的机器-->
<env-loader> <!--设置环境变量-->
<param> <!--定义参数到参数服务器-->
<rosparam> <!--启动yaml文件参数到参数服务器-->
<arg> <!--定义变量-->
<remap> <!--设定参数映射-->
<group> <!--设定命名空间-->
</launch> <!--根标签-->

ROS通信方式有4种:

  • Topic主题
  • Service服务
  • Parameter Server 参数服务器
  • Actionlib服务器

Topic

topic是一种点对点(node之间)的单向通信方式,适用于实时性、周期性的消息传输。首先publisher和subsciber节点到master进行注册,然后publisher 发布topic,subscriber订阅该topic,从而建立通信。整个过程是单向的:

关于topic的一些命令:

 

命令作用
rostopic list列出当前所有的topic
rostopic info topic_name显示某个topic的属性信息
rostopic echo topic_name显示某个topic的内容
rostopic pub topic_name ...向某个topic发布内容
rostopic bw topic_name查看某个topic的带宽
rostopic hz topic_name查看某个topic的频率
rostopic find topic_type查找某个类型的topic
rostopic type topic_name查看某个topic的类型(msg)


 

  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值