ROS节点,消息,话题,服务的简述

5人阅读 评论(0) 收藏 举报
分类:

NODE

node几乎是无处不在,这个东西相当于可执行文件,目前我更愿意把它当做cpp文件,通过catkin_make之后生成可执行文件。

Message

不用说了,没有message就是哑巴了。还是这是血液吧,不然传递机制是无法建立起来的

TOPIC

topic就像是QQ群一样,提供一个平台。当有人发了一条消息后,QQ群告诉任何一个加群的人,有没有红包啥的。显然这是一种通过第三方传递的方式,也就是间接传递。发红包的人就是publisher,看群消息的人就是subscriber,然后是MESSAGE传递,这就很简单了,就是水群。

SERVICE

service有点像两人私聊的意思,或者是很多人找一个人私聊。跳过了topic平台,它与topic区别就在于是消息直接传递还是间接传递。水群就是间接传递,多对多传递。私聊就是直接传递,一对一。


ROS节点NODE

roscore是运行ros程序前首先运行的命令

在一个新的终端,使用rosnode显示节点信息
rosnode list  列出当前活动的节点
rosnode info node-name   
rosnode ping node-name 测试节点间连通性

ros_graph 查看节点之间的发布-订阅关系

rosrun 允许你使用包名直接运行一个包内的节点
rosrun[package_name][node_name]
rosrun turtlesim turtlesim_node

rosnode kill node-name
还可以用Ctrl-C命令终止节点。但使用这种方法时可能不会在节点管理器中注销该节点, 因此会导致已终止的节点仍然在 rosnode 列表中。此时可以使用下面的命令将节点从列表中删除 :
rosnode cleanup


话题TOPIC

rostopic 命令工具能让你获取有关ROS话题的信息。
rostopic - h 使用帮助选项查看rostopic的子命令
rostopic list 能够列出所有当前订阅和发布的话题。

rostopic echo可以显示在某个话题上发布的数据。
rostopic echo [topic]
rostopic echo / turtle1 / cmd_vel

rostopic type 命令用来查看所发布话题的消息类型。
rostopic type [topic]  输出结果geometry_msgs/Twist
rosmsg show geometry_msgs/Twist 
输出
geometry_msgs/Vector3 linear
  float64 x
  float64 y
  float64 z
rostopic pub可以把数据发布到当前某个正在广播的话题上。rostopic pub [topic] [msg_type] [args]rostopic pub - 1 / turtle1 / command_velocity turtlesim / Velocity-- 2.0 1.8turtlesim / Velocity是所发布消息的类型。(双破折号)这会告诉命令选项解析器接下来的参数部分都不是命令选项。

服务SERVICE和参数PARAMETER

服务(services)是节点之间通讯的另一种方式
rosservice list         输出可用服务的信息
rosservice type [service]       输出服务类型
rosservice call [service] [args]   调用带参数的服务

rosparam使得我们能够存储并操作ROS 参数服务器上的数据
rosparam list   列出参数名
rosparam set [param_name]
rosparam get [param_name]

rosparam dump[file_name] 将所有的参数写入文件
rosparam load[file_name][namespace]将yaml文件重载入新的命名空间

消息msg和服务srv

msg文件存放在package的msg目录下,srv文件则存放在srv目录下。

msg文件实际上就是每行声明一个数据类型和变量名。可以使用的数据类型如下:

int8, int16, int32, int64 (plus uint*)

srv文件分为请求和响应两部分,由'---'分隔。

int64 A
int64 B
---
int64 Sum
注意,在构建的时候,我们只需要"message_generation"。然而,在运行的时候,我们只需要"message_runtime"。

查看package.xml, 确保它包含以下两条语句: <build_depend>message_generation</build_depend> <run_depend>message_runtime</run_depend>


在 CMakeLists.txt文件中,利用find_packag函数,增加对message_generation的依赖,这样就可以生成消息了。

同样,你需要确保你设置了运行依赖:catkin_package( ... CATKIN_DEPENDS message_runtime ... ...)

add_message_files( FILES Num.msg)

手动添加.msg文件后,我们要确保CMake知道在什么时候重新配置我们的project。 确保添加了如下代码:generate_messages()

以上就是创建消息的所有步骤。


project()
程序包的名称
find_package()
编译依赖的程序包
add_message_files(), add_service_files(), add_action_files()
添加消息、服务或响应文件
generate_messages()
生成消息、服务或响应文件
catkin_package()
catkin程序包
add_library()/add_executable()/target_link_libraries()
添加库文件,可执行文件,链接库文件
catkin_add_gtest()
添加测试单元
install()
安装


建立catkin工作空间

创建
cd ~/ catkin_ws / src
catkin_create_pkg beginner_tutorials std_msgs rospy roscpp
编译
source / opt / ros / groovy / setup.bash
cd ~/ catkin_ws /
catkin_make





查看评论

ROS节点,消息,话题,服务的介绍

整理结合机器人操作系统(ros)浅析和网址http://wiki.ros.org/cnNODEnode几乎是无处不在,这个东西相当于可执行文件,目前我更愿意把它当做cpp文件,通过catkin_mak...
  • qq_37193603
  • qq_37193603
  • 2017-06-07 16:57:08
  • 1770

节点,话题,消息,服务

一个节点代表一个应用程序,节点与节点之间的通信有两种方式: 一; 通过话题进行通信。一个节点发布消息在一个话题上,另一个节点订阅同一个话题接收消息。       例:        一个终端输入 ...
  • liujiakuino1
  • liujiakuino1
  • 2016-11-29 11:18:45
  • 615

ROS节点、消息、服务、主题的关系

1.ROS计算图级ROS 会创建一个连接到所有进程的网络。在系统中的任何节点都可以访问此网络,并通过该网络与其他节点交互,获取其他节点发布的信息,并将自身数据发布到网络上。 如图 在这一层级中最基...
  • ktigerhero3
  • ktigerhero3
  • 2017-03-25 14:19:15
  • 2448

ROS学习--(六)理解ROS节点和话题

ROS系统包括多个独立的节点,每个节点通过一个发布/订阅的消息范式与其他节点联系 !如下图中,publisher和subscriber都可以是节点(node) (http://img.blog.c...
  • BenjaminYoung29
  • BenjaminYoung29
  • 2015-07-26 22:14:01
  • 2818

ros同时接收多话题并发布

ros同时接收多话题并发布主题
  • cyliujc
  • cyliujc
  • 2017-12-04 11:03:59
  • 395

我的ROS入门(五):总算搞通ROS的服务节点订阅发布消息话题了

总算搞通ROS的服务节点订阅发布消息主题了。可以实习那几个东西。 记录一下吧,首先要一个工作空间。 在当前系统用户的home目录下的.bashrc文件中添加source /opt/ros/jade/s...
  • liulj95
  • liulj95
  • 2015-08-15 11:47:04
  • 11876

ros学习笔记--如何看可视化的话题与节点

输入 rosrun rqt_graph rqt_graph 可以打开一个界面观察节点与话题的关系 绿色和蓝色的是节点 红色的是话题...
  • Qin_xian_shen
  • Qin_xian_shen
  • 2017-11-14 11:56:20
  • 390

【ROS学习】(六)ROS多线程订阅消息

对于一些只订阅一个话题的简单节点来说,我们使用ros::spin()进入接收循环,每当有订阅的话题发布时,进入回调函数接收和处理消息数据。但是更多的时候,一个节点往往要接收和处理不同来源的数据,并且这...
  • wengge987
  • wengge987
  • 2016-02-01 17:36:53
  • 4461

如何在ROS下编写自己的节点来订阅话题(C++)

本文暂定为记录,目前写了一个订阅话题的节点 –2015.10.13一、首先建一个包我的工作空间catkin_ws事先建好了,路径是/home/siat/catkin_ws 然后运行以下命令在src...
  • u013453604
  • u013453604
  • 2015-10-15 17:33:08
  • 5549

ROS:三个节点相互传递消息,每个节点都可以同时发布和订阅主题

在前文中http://blog.csdn.net/ding977921830/article/details/70168877定义了两个节点相互订阅和发布主题,本文在上文的基础上研究三个节点发布订阅主...
  • ding977921830
  • ding977921830
  • 2017-04-14 13:39:50
  • 962
    个人资料
    持之以恒
    等级:
    访问量: 5301
    积分: 334
    排名: 23万+