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,可以运行多个节点。
例子:小乌龟
- 在Terminal中运行以下命令:
$ roscore
- 新开一个terminal,运行以下命令,打开小乌龟窗口:
$ rosrun turtlesim turtlesim_node
- 新开一个terminal,运行以下命令,打开乌龟控制窗口,可使用方向键控制乌龟运动:
$ rosrun turtlesim turtle_teleop_key
- 选中控制窗口,按方向键,可看到小乌龟窗口中乌龟在运动。
- 新开一个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