用ROS来做无人测试平台系列之ROS学习-1-基础知识
/*以下皆为个人在学习过程中的一些见解,写在这里一方面是为了复习每周所学的一些知识,另一方面是留作笔记用;我所用的环境配置为Ubuntu16.04+Kinetic版本的ROS+catkin管理工具+C++IDE之ClionC+PythonIDE之pycharm*/
强烈推荐的书籍:R.Patrick Goebel的ROS By Example
ROS简介:ROS是一个基于网络的去中心化的框架,各个节点之间独立运行,可以通过消息来互相传递信息。在学习的过程中可以掌握C++、Python编程,cmake的相关使用,以及有关机器人的相关知识。
基础知识(基础知识的掌握看ROS的官方教程即可):http://wiki.ros.org/ROS/Tutorials
一、ROS的文件系统级
1、package:功能包,通过catkin_create_pkg <package>来建立,建完之后一定包括package.xml,cmakelist.txt,一般都要修改这两个文件。Cmake比较好的教程:
2、消息与服务:ROS帮我们简化了此过程,我们只需要建一个.msg和.srv文件,roscpp即可帮我们自动生成所需的头文件。所谓的消息与服务就是指由客户端发出的消息,服务器提供相应的服务(处理机制)来对待服务。便于分布式处理。
3、消息与服务的进阶版-actionlib:客户端发送的为goal,服务增加了相应的feedback,results。http://wiki.ros.org/actionlib
二、ROS的计算图级
1、节点:一个可执行的程序。分布式模块化的最好体现。最好一个节点实现一个单一的功能。
2、参数服务器:通过参数配置节点。
3、消息:用于节点之间的通信。
4、主题:节点之间传递消息的媒介(对消息进行路由和消息管理的数据总线)
5、服务:也可以理解为一个用于处理数据的的节点,他与主题最大的不同就是主题只是消息的转发站,而服务可以做出相应的处理。