只接受发布货源信息,不可发布违法信息,一旦发现永久封号,欢迎向我们举报!
1064879863
16货源网 > 餐饮行业新闻资讯 > 软件开发 >  机器人操作平台 (ROS) 的软件开发流程是什么?


机器人操作平台 (ROS) 的软件开发流程是什么?

发布时间:2019-05-18 15:04:52  来源:网友自行发布(如侵权请联系本站立刻删除)  浏览:   【】【】【
如果从核心架构来说,ROS可以看成一个开发机器人控制软件的工具链。所以,如果说开发机器人的流程,那么其本质就是怎么理解机器人系统。。按照ROS目前给的主线,我觉得可以这样理解。机器人模型就是如何描述一
机器人操作平台 (ROS) 的软件开发流程是什么?

如果从核心架构来说,ROS可以看成一个开发机器人控制软件的工具链。

所以,如果说开发机器人的流程,那么其本质就是怎么理解机器人系统。。

按照ROS目前给的主线,我觉得可以这样理解。

机器人模型

就是如何描述一个机器人。核心就是描述机器人的物理结构和运动学链。

这个部分ROS给出的是解决方案是URDF(unified robot description format)以及XACRO。通过编写URDF,可以给出一个机器人的通用描述。这部分ROS的wiki都有详细的介绍,可以参看。


MoveIt

MoveIt可以说是ROS相当重量级的一个应用,它包含了控制机器人运动的核心功能,通过它,你就可以完成构建机器人控制的主要工作。

这个部分内容比较多,主要有如下几个模块。


Setup Assistant:向导工具,帮助配置MoveIt,我们真正使用的一个工具。通过它,我们就可以完成大部分配置工作,这些配置使得下述的模块都可以自动的正确工作。


运动学:通过对URDF的解析生成机器人的运动学求解方法,运动学中最困难的是逆运动学是用一个叫KDL(kinematics dynamics library)的库实现的,这个求解过程是基于数值计算方法的。如果想使用解析方法,好像OENRAVE提供了一个工具可以帮助生成解析方法的算法源代码。具体可以查看相关的wiki。


轨迹规划:机器人从一个关节姿态到另一个关节姿态的运动求解,ROS使用了一个叫OMPL的第三方库来实现这个功能,这个库是基于随机化算法的。moveit中还提供了一个时间参数化的控制点插值,将轨迹分为很多小点列,以方便控制器控制关节运动。


3D视觉,这个部分我也不太熟悉,应该就是跟机器人视觉传感器采集处理数据有关。


控制器接口:用来向和机器人关节控制器发送轨迹规划生成的位置信息。


Rviz: 人机界面,用来提供人机交互功能。


其他各种模块:我就不一一列举了。


机器人控制器

控制器就是闭环控制的主要部分,就是要接收MoveIt的位置指令,并驱动控制各个关节的电机运动。对于不同的机器人,控制器都是不同的,所以这个部分需要按照机器人具体实现。不管如何设计,本质上,只要参照MoveIt中控制器接口自行进行设计即可。

ROS本身提供了ROS_CONTROL和ROS_CONTROLLER两个相关的软件包可以作为设计上的参考,在控制器中主要需要实现如下一些功能:

传感器、执行器的配置和驱动(如何让控制器正确的理解输入输出关系,正确的获得输入输出数据)

位置插补

闭环控制(PID)

安全监测

etc...

说点题外话:有一个问题是,ROS本身不是一个实时的软件,所以在一些应用场合,机器人对实时性要求高的话,则需要解决控制器实时的问题。

如果没有商业的解决方案,个人推荐可以使用一个叫OROCOS的架构,跟ROS不同的是,OROCOS专注于实现底层系统级的实时控制和通讯。而且ROS和OROCOS社区的各种大牛已经完成了ROS和OROCOS的集成工作,可以让两个系统无缝的连接工作。


最后当上述内容完成后,一个最简单的可以驱动机器人运动的系统就搭建完成了。我们就可以在MoveIt提供的界面或者通过MoveIt提供的编程API(move_group)编程控制机器人了。


所以总结一下就是:

第一、建立机器人的模型

第二、配置机器人的MoveIt

第三、编写机器人的控制器(包括设备驱动)

第四、整合上述所有内容,最终控制机器人。



由于ROS本质上还是一个关于机器人知识系统共享的平台,所以它涵盖的内容要远远多于我上述所列的内容,更多的功能应用,对于有各种特殊需求的开发人员来说,还需要不断的深入。


如有理解不正确,欢迎指正。

ROS也可以和GitHub一样,是你拔代码的工具,并不一定要在上面开发,由于像linux一样的软件组织模式,造成了ROS本身的功能完整性也并不好,产品程度比较低,最后产品化之后,对维护人员的技术水平要求较高。
如果非要说ROS的开发方式如何,那么ROS的软件组织方式已经说明问题了,ROS的基本开发是以功能包为组织的,对机器人建模之后,根据ROS提供的各项精品真和调试工具的基础上,查找是否已经有你要做的开发功能相关的功能包,查找相关代码,并根据自己的功能需求进行开发即可。上面的说了那么多,我也就不补充了。
最后,ROS如果需要产品化,如果有必要可以使用QT做图形界面,不仅能够使用一般的显示器,也可以使用工业级的触摸屏,这些在工业控制上已经应用许久了。ROS系统的整体启动,做一个自启动的脚本即可,让ROSCORE和各个功能包逐次运行起来。个人理解,不一定对
ROS的本质是一个开软的软件框架,并不是一个系统,也不是语言,它实质上统一通信接口的松耦合分布方式。
最大的好处是,在这个框架下的软件可以即插即用,作为机器人研究,大家可以相互交流,可以相互的调用别人的开发结果。
因为机器人有太多的研究方向,这样使得研究者可以专注于自己的方向。
另外一个明显的优势是它的精品真与实体机器人的无缝转化。

如果非要说流程
那就简化成这样吧

创建工程空间-->创建ROS包-->创建源代码文件 -->编译程序
不知道这是不是你要的上交大机器人五度空间专注于ROS开发平台,学习交流,可以加入学习交流,百所高校学子开放开源平台。
责任编辑:
热门阅读排行
© 16货源网 1064879863