ROS

ROS 工程 由1~N个软件包组成,软件包可以是独立的package,也可以是综合的metapackage.

metapackage 是由多个package组成的,软件包是由多个package组成的 。

一个node 就是一个进程,就是一个程序,包含有一个main 函数。

Master是ROS提供给我们的节点(Node)的管理器,在整个网络通信构架中相当于管理中心,管理着各个Node。

node首先在master处进行注册,之后master会将node纳入整个ROS程序中。node之间的通信也是由master进行牵线,

才能实现通信。当ROS程序启动时,第一步先启动master,由节点管理器处理依次启动Node。

一个node 内部包含:

 Action

Cfg

Launch

Msg

Srv

include

src

如下图所示:CmaketLists.txt是配置文件

ROS节点的运行方法

1.打开ROS  ,输入如下命令

roscore

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

2.运行节点

rosrun   packagename   nodename

或者

roslaunch packagename launchname

两者的区别是rosrun每一次只能运行一个节点,roslaunch可以自动的打开ROS master,可以运行多个节点。

例子:小乌龟

    1. 在Terminal中运行以下命令: 
      $ roscore
    2. 新开一个terminal,运行以下命令,打开小乌龟窗口: 
      $ rosrun turtlesim turtlesim_node
    3. 新开一个terminal,运行以下命令,打开乌龟控制窗口,可使用方向键控制乌龟运动: 
      $ rosrun turtlesim turtle_teleop_key
    4. 选中控制窗口,按方向键,可看到小乌龟窗口中乌龟在运动。
    5. 新开一个terminal,运行以下命令,可以看到ROS的图形化界面,展示结点的关系: 
      $rqt_graph

椭圆表示节点,共有两个节点,一个是键盘节点,一个是显示节点。中间是用CMD——vel连接在一起。

咋样查看节点的话题类型和消息类型?

 ROS4种通信方式

1.topic 主题

topic 是一种点到点的单向通信方式,适用于实时性、周期性的消息传输。首先publisher 和 subsciber 节点到master 进行注册,然后publish 发布topic,

subscriver 订阅topic,从而建立通信。

1.rostopic list    //列出当前所有的topic
2.rostopic echo topic_name    //显示某个topic内容
3.rostopic info topic_name   //显示某个topic属性信息
4.rostopic pub topic_name  //向某个topic 发布内容
5.rostopic hz topic_name   //查看某个topic 的频率
6.rostopic type topic_name   //查看某个topic的类型

2.Service服务

3.Parameter Server 参数服务器

4.Actionlib服务器

用指令发布topic消息msg

 rostopic pub -1 turtle1/cmd_vel geometry_msgs/Twist -- '[1,0,0]' '[0,0,0]'
//按 1hz 发送指令,让小乌龟画圆
rostopic pub -r 1 turtle1/cmd_vel geometry_msgs/Twist -- '[5,5,0]' '[0,0,3.14]'

监视里面的消息

rostopic echo turtle1/cmd_vel

rqt图形化工具包

1.rqt_graph  

2.rqt_msg

3.rqt_topic

4.rqt_publisher

5.rqt_plot

6.rqt_rviz

7.rqt_reconfigure

8.rqt_bag

原文地址:https://www.cnblogs.com/fuhang/p/9547452.html