ROS作为一款中间件,可以在多台机器上运行
- 提供publish/subscribe,client/server两种通信方式
- 提供Topic回放、录制功能
- 支持强大的调试命令行
- 支持C++、Python两种语言
1.ROS结构
-
Package
-
Node:节点,代码运行的最小单元,一个节点即为一个可执行文件,它可以通过ROS与其它节点进行通信。
-
节点通信的三种方式:
-
Topic:话题,Node通过Topic进行通信,Node可以发布消息到Topic,也可以订阅Topic以接收消息
-
Service:Node间通过Service互相调用服务,Node可以提供或使用某种服务
rospy = python 客户端库
roscpp = c++ 客户端库 -
parameter
- 运行时的参数
- 相当于环境变量
-
-
Rosbag
提供Topic录制和回放功能 -
Command
2.ROS命令
roscore :运行所有ROS程序前首先要运行的命令
rosnode ping node_name:测试能否ping通某个节点
- Node:
- rosnode list : 查看正在运行的Node
- rostopic [package_name] [node_name] : 运行某节点
- rosnode kill nodename:删除节点
- Topic:
- rostopic list:查看所有的Topic
- rostopic echo[topic]:跟踪某个Topic的信息
- rostopic type[topic]:查看Topic类型
- rosrun rqt_graph rqt_graph:查看节点关系图
- rostopic pub [topic] [msg_type] [args]:从命令行发布消息
- rostopic hz [topic]:查看某个topic的频率
- Service:
- rosservice list:查看Service列表
- rosservice call [service] [args] :调用Service
- rosbag:
- rosbag record -a :记录所有Topic
- rosbag info < bagfile_name>:查看bag信息
- rosbag record -O subset < topic1> < topic2>:记录某些Topic
- rosbag play < bagfile_name>:回放bag
- rosbag play < bagfile_name> /topic1:=/topic2 :在运行rosbag节点时,修改要发布的topic
3. 对Topic通信的简单理解
两个node之间通过topic进行通信,message是数据的载体,包含一个节点发送给其他节点的信息数据,其中一个node向topic发布message,另外一个node通过订阅topic来接收message,注意:message的类型由topic决定,且两个message类型必须相同。