1. ROS认识
摘自http://www.gaitech.net/news_detail.asp?id=113&classid=66
背景:
阻碍一个新行业普及:一是硬件没有标准化,二是软件没有操作系统。
ROS的出现,解决的是 二是软件没有操作系统。
ROS是什么:
按照ROS官网的定义,ROS是一个灵活的机器人软件框架,由工具、库和约定组成,旨在简化在各种各样的机器人平台上创建复杂和健壮的机器人行为的任务。
ROS特征:
ROS之所以发展和普及这么迅速,是由于它具有很多特征,这些特征可以简化和方便机器人应用的开发。
为了使大家对ROS有个进一步的了解,我们分三个方面对ROS的特征进行介绍。
正是这些特征,才使得ROS受到了越来越多机器人爱好者、研究者和开发者的青睐。
1.ROS通信架构
2.机器人具体特征
3.ROS工具
如何学ROS:
1. 熟悉Ubuntu基本命令和基本操作
要学习好ROS,首先要打好基础,而这个基础就是Ubuntu系统。
对于没有接触过Ubuntu的ROS学习者,建议花几周时间熟悉一下Ubuntu这个操作系统,尤其是一些基本的Linux命令和一些基本的操作。
2. 掌握ROS的基本概念和基本操作
对于ROS初学者,首先要掌握ROS的一些基本概念(如工作空间、功能包、标题,服务,节点等)和一些基本操作,如工作空间和功能包的创建、节点的编写、
多个节点之间传递信息、标题的发布、服务的提供等。只有首先牢固掌握了这些基本概念和基本操作,才有可能进行后续深入的学习和开发。
3.掌握一门面向对象的程序设计语言
要使用ROS控制和操作机器人或者传感器,必须要编写自己的节点(相当于应用程序),这就需要至少掌握一门面向对象程序设计语言,C++或Python均可,最好是两者都熟悉。
如果你尚未使用过C++和Python,请参照《C++ Primer》或者《Python基础教程》学习和掌握它们。
4.拥有一台属于自己的ROS机器人
ROS提供了强大的模拟和仿真工具,即使没有机器人也可以学习和测试ROS。但如果一直模拟和仿真,时间久了难免枯燥,所以最好能有一台支持ROS的机器人。
大部分支持ROS的机器人价格昂贵,动辄几十万上百万的价格,往往非个人所能承受。
这里给大家推荐两款性价比高的ROS机器人,一款是TurtleBot3(或TurtleBot2),另一款是硅步机器人自主研发的无人机Gapter EDU。
这两款机器人的价格低廉,且配套有完整的ROS教学资源,是入门者学习ROS的不二选择。
5.实践、实践、再实践
机器人操作系统(ROS)浅析
rospack 软件包命令
rospack list 查看软件包列表和定位软件包
每个程序包由一个清单文件(文件名为 package.xml)定义。该文件定义关于包的一些细节,包括其名称、版本、维护者和依赖关系。包含 package.xml 文件的目录被称为软件包目录(其实,这也是 ROS 软件包的定义:任何 ROS 能找到且包含 package.xml文件的目录就是软件包目录。)。这个目录存储所在软件包的大部分文件。
要找到一个软件包的目录,使用 rospack find 命令: rospack find package-name
查看软件包 : 要查看软件包目录下的文件,使用如下命令: rosls package-name
如果想“访问”某软件包目录,可以将当前目录切换至此软件包目录,使用如下命令: roscd package-name
启动节点 启动节点(也称运行ROS程序)的基本命令是rosrun:
rosrun package-name executable-name
可以看到,rosrun 命令有两个参数,其中第一个参数是功能包的名称,这在 2.4 节中已经讨论过;第二个参数是该软件包中的可执行文件的名称。
查看节点列表ROS rosnode list
查看节点 要获得特定节点的信息,使用如下命令: rosnode info node-name
ROS 系统中查看节点之间的发布-订阅关系的最简单方式就是在终端输入如下命令: rqt_graph
话题列表
rostopic
为了获取当前活跃的话题: rostopic list
打印消息内容: rostopic echo topic-name
测量发布频率: rostopic hz topic-name
查看话题: rostopic info topic-name
查看消息类型: rosmsg show message-type-name
用命令行发布消息: rostopic pub –r rate-in-hz topic-name message-type message-content rostopic pub /turtle1/cmd_vel geometry_msgs/Twist -r 1 -- '[2,0,0]' '[0,0,1.8]'
roswtf : roswtf is a tool for verifying a ROS installation and running system. Checks provided launchfile if provided, else current stack or package.
创建工作区
创建功能包 catkin_create_pkg package-name