最近开始做ROS相关的项目,之前也没有任何经验,因此通过写博客的方式在此做一下记录,以期有所裨益。一开始无从下手,百度博客就是最好的老师,这里记录整理了一下所查阅的文档。
一、ROS是什么?
1、一个操作系统。
2、一种跨平台模块化软件通讯机制。ROS用节点(Node)的概念表示一个应用程序,不同node之间通过事先定义好格式的消息(Topic),服务(Service),动作(Action),参数(param)来实现连接。
3、一系列开源工具,可以大大提高我们开发的效率。
rqt_plot:可以实时绘制当前任意Topic的数值曲线;
rqt_graph:可以绘制出各节点之间的连接状态,和正在使用的Topic等;
TF:TF是Transform的简写,利用它,我们可以实时知道各连杆坐标系的位姿,也可以求出两个坐标系的相对位置。
Rviz:超强大的3D可视化工具,可以显示机器人模型、3D电影、各种文字图标、也可以很方便二次开发;
4、一系列最先进的算法:
OpenCV:大名鼎鼎的机器视觉开源项目,ROS提供了cv_bridge,可以将OpenCV的图片与ROS的图片格式相互转换。
OMPL:现在最著名的运动规划开源项目,已经成了MoveIt的一部分。
Visp:一个开源视觉伺服项目,已经跟ROS完美整合。
二、为什么使用ROS?
答:ROS可以用统一的方式来封装机器人(URDF模型+机器人驱动),用户只需要在ROS中编写应用程序,并不用关心机器人的控制方式。如果所有机器人都采用了这种方式,那么机器人必将得到更广泛地应用。
三、如何学习使用ROS?
1、ROS官网上的教程:http://wiki.ros.org/ROS/Tutorials/
2、ROS的问答社区:
了解ROS的基本架构与开发方式后,就可以有针对性地看自己所关心的部分了。如:
做移动机器人的同学就去看Navigation教程;
做物体识别的就去看ORK教程;
做运动规划的就去看MoveIt教程,这一步最好能跟有实际机器人练手(如果没有的话,就用gazebo仿真)
对于ROS与实际机器人的连接,建议仔细看看action(编写机器人驱动package)、URDF(机器人描述文件)的教程(或者ros_control)。