ros 学习笔记 (一):ros入门

ros基础知识

ROS 的结构
设计思想、核心概念、核心模块、核心工具

  1. 设计思路
    分布式架构,将机器人的功能和软件做成一个个节点,然后每个节点通过 topic 进行沟通,这些节点可以部署在同一台机器上,也可以部署在不同机器上,还可以部署在互联网上。
  2. 核心概念
    节点和用于节点间通信的话题与服务。管理器 Master 管理节点与话题之间通信的过程,并且还提供一个参数服务用于全局参数的配置。ROS 通过功能包集stack 和功能包 package 来组织代码。
  3. 核心模块
    通信结构基础、机器人特性功能、工具集。
    (1)通信结构基础主要是消息传递、记录回放消息、远程过程调用、分布式参数系统;
    (2)机器人特性功能主要是标准机器人消息、机器人几何库、机器人描述语言、抢占式远程过程调用、诊断、位置估计、定位导航;工具集主要是命令式工具、可视化工具、图形化接口。
    (3)核心工具很丰富,ROS 常用命令工具是 rostopic、rosservice、rosnode、rosparam、rosmsg、rossrv、roswtf;ROS 常用可视化工具是 rqt、rviz;ROS 用于存储与回放数据的工具rosbag;ROS 的 log 系统记录软件运行的相关信息;ROS 还拥有强大的第三方工具支持:三维仿真环境 Gazebo、计算机视觉库 OpenCV、点云库 PCL、机械臂控制库 MoveIt、工业应用库 Industrial、机器人编程工具箱 MRPT、实时控制库 Orocos;

ROS 的学习资源

官网: www.ros.org
源码: github.com
Wiki: wiki.ros.org
问答: answers.ros.org

ROS的系统框架

  1. 文件系统级
    一个 ROS 程序的不同组件要被放在不同的文件夹下,这些文件夹是根据不同的功能来对文件进行组织的,如下图 :
    系统文件夹

ros功能包工具:

rospack:用于获取信息或在系统中查找工作空间。
catkin_create_pkg:用于在工作空间的 src 源空间下创建一个新的功能包。
catkin_make:用于编译工作空间中的功能包。
rosdep:用于安装功能包的系统依赖项。
rqt_dep:用于查看功能包的依赖关系图。

  1. 计算图级理解 ROS 架构
    在这里插入图片描述
    特点:
    (1)、图中的 node1、node2、node3 等都是节点(node)。
    节点都是各自独立的可执行文件,能够通过主题(topic)、服务(server)或参数服务器(parameter server)与其他节点通信。
    (2)、ROS 通过使用节点将代码和功能解耦,提高了系统的容错力和可维护性。所以你最好让每一个节点都具有特定的单一的功能,而不是创建一个包罗万象的大节点。
    注意事项:
    节点如果用 c++进行编写,需要用到 ROS 提供的库 roscpp;节点如果用python 进行编写,需要用到 ROS 提供的库 rospy。
    (3)节点:

ROS 提供了处理节点的工具

用于节点信息、状态、可用性等的查询操作,例如可以用下面的命令对正在运行的节点进行操作。
rosnode info <node_name>:用于输出当前节点信息。
rosnode kill <node_name>:用于杀死正在运行节点进程来结束节点的运行。
rosnode list:用于列出当前活动的节点。
rosnode machine :用于列出指定计算机上运行的节点。
rosnode ping <node_name>:用于测试节点间的网络连通性。
rosnode cleanup:用于将无法访问节点的注册信息清除。
(4)消息
节点通过消息(message)完成彼此的沟通。消息包含一个节点发送给其他节点的信息数据。

ROS 提供了获取消息相关信息的命令工具,

rosmsg show <message_type>:用于显示一条消息的字段。
rosmsg list:用于列出所有消息。
rosmsg package :用于列出功能包的所有消息。
rosmsg packages:用于列出所有具有该消息的功能包。
rosmsg users <message_type>:用于搜索使用该消息类型的代码文件。
rosmsg md5 <message_type>:用于显示一条消息的 MD5 求和结果。
(5)主题
每个消息都必须发布到相应的主题(topic),通过主题来实现在 ROS 计算图网络中的路由转发。当一个节点发送数据时,我们就说该节点正在向主题发布消息;节点可以通过订阅某个主题,接收来自其他节点的消息。通过主题进行消息路由不需要节点之间直接连接,这就意味着发布者节点和订阅者节点之间不需要知道彼此是否存在,这样就保证了发布者节点与订阅者节点之间的解耦合。同一个主题可以有多个订阅者也可以有多个发布者,不过要
注意必须使用不同的节点发布同一个主题。每个主题都是强类型的,不管是发布消息到主题还是从主题中订阅消息,发布者和订阅者定义的消息类型必须与主题的消息类型相匹配。

ROS 提供了操作主题的命令工具

rostopic bw </topic_name>:用于显示主题所使用的带宽。
rostopic echo </topic_name>:用于将主题中的消息数据输出到屏幕。
rostopic find <message_type>:用于按照消息类型查找主题。
rostopic hz </topic_name>:用于显示主题的发布频率。
rostopic info </topic_name>:用于输出活动主题、发布的主题、主题订阅者和服务的信息。
rostopic list:用于列出当前活动主题的列表。
rostopic pub </topic_name> <message_type> :用于通过命令行将数据发布到主题。
rostopic type </topic_name>:用于输出主题中发布的消息类型。

(5)服务
在一些特殊的场合,节点间需要点对点的高效率通信并及时获取应答,这个时候就需要用服务的方式进行交互。提供服务的节点叫服务端,向服务端发起请求并等待响应的节点叫客户端,客户端发起一次请求并得到服务端的一次响应,这样就完成了一次服务通信过程,例如图 6 中,node1 向 node3 发起一次请求,并得到 node3 返回给 node1 的响应。服务通信过程中服务的数据类型需要用户自己定义,与消息不同,节点并不提供标准服务类型。服
务类型的定义文件都是以*.srv 为扩展名,并且被放在功能包的 srv/文件夹下。

ROS 提供了操作服务的命令工具

rosservice call </service_name> :用于通过命令行参数调用服务。
rosservice find <service_type>:用于根据服务类型查询服务。
rosservice info </service_name>:用于输出服务信息。
rosservice list:用于列出活动服务清单。
rosservice type </service_name>:用于输出服务类型。
rosservice uri </service_name>:用于输出服务的 ROSRPC URI。
(6)节点管理器
节点管理器(master)用于节点的名称注册和查找等,也负责设置节点间的通信。如果在你的整个 ROS 系统中没有节点管理器,就不会有节点、消息、服务之间的通信。由于 ROS本身就是一个分布式的网络系统,所以你可以在某台计算机上运行节点管理器,在这台计算机和其他台计算机上运行节点。
ROS 中提供了跟节点管理器相关的命令行工具,就是 roscre。
roscore:用于启动节点管理器,这个命令会加载 ROS 节点管理器和其他 ROS 核心组件。
(7)参数服务器
参数服务器(parameter server)能够使数据通过关键词存储在一个系统的核心位置。通过使用参数,就能够在节点运行时动态配置节点或改变节点的工作任务。参数服务器是可通过网络访问的共享的多变量字典,节点使用此服务器来存储和检索运行时的参数。
ROS 中关于参数服务器的命令行工具,请看下面的常用命令。
rosparam list:用于列出参数服务器中的所有参数。
rosparam get <parameter_name>:用于获取参数服务器中的参数值。
rosparam set <parameter_name> :用于设置参数服务器中参数的值。
rosparam delete <parameter_name>:用于将参数从参数服务器中删除。
rosparam dump :用于将参数服务器的参数保存到一个文件。
rosparam load :用于从文件将参数加载到参数服务器。
(8)消息记录包
消息记录包(bag)是一种用于保存和回放 ROS 消息数据的文件格式。消息记录包是一种用于存储数据的重要机制,它可以帮助记录一些难以收集的传感器数据,然后通过反复回放数据进行算法的性能开发和测试。ROS 创建的消息记录包文件以*.bag 为扩展名,通过播放、停止、后退操作该文件,可以像实时会话一样在 ROS 中再现情景,便于算法的反复调试。
ROS 提供消息记录包相关的命令行工具,请看下面的常用命令。
rosbag :用来录制、播放和执行操作。

  1. 从开源社区级理解 ROS 架构
    在这里插入图片描述
    全文参考来自:ROS入门——2.ROS系统整体架构
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值