自动驾驶(六十五)---------ROS学习笔记(1)

      ROS是面向机器人的开源的元操作系统,它能够提供类似传统操作系统的诸多功能,如硬件抽象、底层设备控制、常用功能实现、进程间消息传递和程序包管理等。此外,它还提供相关工具和库,用于获取、编译、编辑代码以及在多个计算机之间运行程序完成分布式计算。在自动驾驶中ROS被广泛的应用,所以研究自动驾驶ROS是绕不过去的弯.下面整理了我学习的资料.

1. 安装介绍

       ROS不能再详细的安装教程16.04+kinetic:http://www.cnblogs.com/liu-fa/p/5779206.htmlu
       通道:ROS提供了一种发布-订阅式的通信框架用以简单、快速地构建分布式计算系。
       工具:ROS提供了大量的工具组合用以配置、启动、自检、调试、可视化、登录、测试、终止分布式计算系统。
       强大的库:ROS提供了广泛的库文件实现以机动性、操作控制、感知为主的机器人功能。
       生态系统:ROS的支持与发展依托着一个强大的社区。ros.org尤其关注兼容性和支持文档,提供了一套“一站式”的方案使得用户得以搜索并学习来自全球开发者数以千计的ROS程序包。

2. 基本概念

       工作空间(workspace)是ROS里面最小环境配置单位,可以把workspace看成是一个有结构的文件夹,它包含多个package以及一些结构性质文件。一次将一个workspace配置进环境变量里面,才能使用ROS命令执行与这个workspace里面的package相关的操作。
       功能包(package)是ROS应用程序代码的组织单元,每个软件包都可以包含程序库、可执行文件、脚本或者其它手动创建的东西。 创建了相应的软件包才能实现相应的功能。
       清单(Manifest)是对于功能包相关信息的描述,用于定义软件包相关元信息之间的依赖关系,这些信息包括版本、维护者和许可协议等。 也就是 package.xml文件。
       CMakeLists.txt  是一个Cmake的脚本文件,Cmake是一个符合工业标准的跨平台编译系统。这个文件包含了一系列的编译指令,包括应该生成哪种可执行文件,需要哪些源文件,以及在哪里可以找到所需的头文件和链接库。
       节点(Node)是 ROS 功能包中的一个可执行文件,节点之间可以通过 ROS 客户端库(如roscpp 、 rospy )相互通信。一个机器人控制系统由许多节点组成,这些节点各司其职,如,一个节点控制激光距离传感器,一个节点控制轮子的马达,一个节点执行定位,一个节点执行路径规划,一个节点提供系统的整个视图等。也就是能够执行特定工作任务的工作单元。
       节点管理器(Master)是 ROS 名称服务,能够帮助节点找到彼此。节点通过与节点管理器通信来报告他们的注册信息。值得注意的是,当这些节点和节点管理器通信时,它们可以接受其他注册节点的信息,并能保持通信正常。当这些注册信息改变时,节点管理器也会回调这些节点。所以,没有节点管理器,节点将不能相互找到,也不能进行消息交换或者调用服务。
       参数管理器( Parameter Server )是节点管理器的一部分,是一个可通过网络访问的共享的多变量字典。节点使用此服务器来存储和检索运行时参数。
       消息(Message)是一种ROS数据类型。一个节点向特定主题发布消息,从而将数据发送到另一个节点。消息具有一定的类型和数据结构,包括ROS提供的标准类型和用户自定义类型。消息与话题(发布 / 订阅模式)是紧密联系在一起的,msg文件实质上就是一个从结构上描述ROS中所使用消息类型的简单文本,描述的是消息的数据类型。
       话题 ( Topic )是节点间用来传输数据的总线,通过主题进行消息路由不需要节点之间直接连接。节点可以发布消息到话题,也可以订阅话题以接收消息。一个话题可能对应有许多节点作为话题发布者和话题订阅者。当然,一个节点可以发布和订阅许多话题。一个节点对某一类型的数据感兴趣,它只需订阅相关话题即可。一般来说。话题发布者和话题订阅者不知道对方的存在。发布者将信息发布在一个全局的工作区内,当订阅者发现该信息是它所订阅的,就可以接收到这个信息。
       消息 当需要直接与节点通信并获得应答时,将无法通过话题来实现,而需要服务(Service)。我们可以看出,发布 / 订阅模式是一种多对多的传输方式,显然这种传输方式不适用于请求 / 回复的交互方式。请求 / 回复交互方式经常被用于分布式系统中。请求服务通过 Service 来进行,Service 被定义为一对消息结构:一个用于请求,一个用于回复。一个客户通过发送请求信息并等待响应来使用服务( ROS中的请求 / 回复交互方式类似于一个远程函数调用,srv文件类似于函数参数和返回值的定义)。
       消息记录包(Bag)是一种用于保存和回放 ROS 消息数据的格式。消息记录包是检索传感器数据的重要机制,这些数据虽然很难收集,但是对于发展和测试算法很有必要。

3. ros shell 命令

       roscd 移动到指定的ROS软件包目录, 无需再使用cd一层层到查找.
       rosls 显示ROS软件包的文件与目录.
       rosed 编辑ROS软件包的文件, 用于编辑功能包中的特定文件,优点也是快捷,修改容易。
       roscp 复制ROS软件包的文件.
       rospd 添加目录至ROS目录索引.
       rosd 显示ROS目录索引中的目录.
       roscore 开启Master(ROS名称服务) 运行主节点,主节点管理节点之间的消息通信中的连接信息。
       rosrun 运行单个节点, 执行指定的功能包中的一个节点的命令.
       roslaunch 运行多个节点及设置运行选项, 类似dat批命令,是运行指定功能包中一个或设置执行选项的命令。
       rosclean 检查或删除ROS日志文件. 
       rostopic 查看ROS话题信息, 
       rosservice 查看ROS服务信息
       rosnode 查看ROS节点信息
       rosparam 确认和修改ROS参数信息
       rosbag 记录和回放ROS消息
       rosmsg 显示ROS消息类型
       rossrv 显示ROS服务类型
       rosversion 显示ROS功能包的版本信息
       roswtf 检查ROS系统
       rospack [选项] [功能包名称] - 查看与ROS功能包相关的信息(可以使用find, list, depend-on, depends和profile等选项)。
       rosinstall - 安装ROS附加功能包。
       rosdep [选项] - 安装该功能包的依赖性文件(check, install, init, update)。
       roslocate [选项] [功能包名称] - ROS功能包信息相关命令(可用的选项是info, vcs, type, uri和repo等)。

4. catkin命令

       catkin_create_pkg - 自动生成功能包(示例命令:catkin_create_pkg [功能包名称] [依赖性功能包1] ….)。
       catkin_make - 基于catkin构建系统的构建 (示例:catkin_make –pkg [包名] 只构建一部分功能包)。
       catkin_eclipse - 对于用catkin构建系统生成的功能包进行修改,使其能在Eclipse环境中使用。
       catkin_prepare_release - 在发布时用到的日志整理和版本标记。
       catkin_generate_changelog - 在发布时生成或更新CHANGLOG.rst文件。
       catkin_init_workspace - 初始化catkin构建系统的工作目录。
       catkin_find - 搜素catkin,找到并显示工作空间。

扫描二维码关注公众号,回复: 9435814 查看本文章

     

发布了66 篇原创文章 · 获赞 115 · 访问量 82万+

猜你喜欢

转载自blog.csdn.net/zhouyy858/article/details/104518096