原文链接:http://blog.exbot.net/archives/2966
摘要:
1、ROS和安卓一样是开源的。可以提供硬件抽象,底层设备控制,常用功能实现,进程间消息以及数据包管理。
2、ROS是分布式处理框架。不同节点的进程能接收、发布各种信息(如传感,控制、状态,规划等等)
3、什么是ROS?ROS是一个适用于机器人的开源的元操作系统,它不是一个真正的操作系统,但它提供了操作系统应用的服务,包括硬件抽象,底层设备控制,常用函数的实现,进程间消息传递,以及包管理。采用的是松耦合点对点进程网络
4、ROS的四大优点:1、松散耦合的机制方便机器人软件框架的组织;
2、最丰富的机器人功能库,方便快速搭建原型;
3、非常便利的数据记录、分析、仿真工具,方便调试;
4、学界和产业界的标准,方便学习和交流。
5、2009年ROS发布的“ROS: an open source Robot Operating System” 论文,目前已经被引用了2871次
6、ROS的学习顺序:1、基础结构,这些通讯的机制是如何实现的。
2、工具:包括仿真工具、调试工具等等
3、体现他功能的Package
4、社区:如何去上面发布代码,和其他人交流
7、入门的话,首先要了解这四点:设计思想,核心概念,核心模块,核心工具。
8、设计思想包括:分布式架构,将机器人的功能和软件,做成一个个的节点,然后每个节点通过topic进行沟通。值得注意的是这些节点可以布置在同一台机器上也可以部署在不同的机器上,还可以部署在网上
9、核心概念:节点(Nodes):节点是各自独立的可执行文件,能够通过话题、服务或者参数与服务器或者其他节点通信。ROS通过节点的方式将代码和功能解耦。
提高了系统的容错能力和维护性。同时节点允许ROS系统能够布置在任意多个机器上并同时运行。值得注意的是:节点必须拥有唯一
的名称。节点可以通过不同的库编写。
10、节点之间通过topic机制进行通信,topic机制是一个一对多的Publish/Subscribe 模式
11、核心概念:功能包(Package) ,ROS中软件组织的基本形式,用于创建ROS程序。功能包包含源代码和功能包清单(Manifest) 。功能包清单提供关于功能包、许可信息、依赖关系、编译标志等的信息。功能包清单是一个manifests.xml文件,通过这个文件能够实现对功能包的管理。
12、ROS常用命令工具包括rostopic (Topics)、rosservice (ServiCES)、rosnode (Nodes)、rosparam (Parameters)、rosmsg (Messages)、rossrv (Services)和roswtf (General debugging)
13、值得关注的网站:http://wiki.ros.org/ROS/Installation
http://wiki.ros/org/ROS/Tutorials
14、仿真环境:Turtlesim,ArbotiX,Gazebo.
Turtlesim是一个QT开发的2D轨迹显示界面,只能显示运动轨迹;ArbotiX是含有一个差速驱动机器人的rviz模拟器,机器人运动及topic数据的3D显示,但不包含物理学引擎;Gazebo是功能齐全的3D物理模拟器,不过缺点是非常重,对内存和显卡要求高,慎入!
15、ROS的版本:Groovy,Hydro,Indigo,Jade,Kinetic,推荐Indigo
16、Ubantu14.04.1 LTS与ROS Indigo匹配
17、IDEs:http://wiki.ros.org/IDEs 其中RoboWare Studio值得关注
18、中文Linux学习:http://songjinshan.com/akabook/zh/index.html