少创科技机器人编程的好处用什么软件编程

本回答由【极客晨星】少儿编程提供

下载百度知道APP抢鲜体验

使用百度知道APP,立即抢鲜体验你的手机镜头里或许有别人想知道的答案。

}

导语:本期公开课面向想入手ROS却叒不知从何下手的小伙伴为大家梳理好学习思路。

ROS和Android一样是开源的功能上也是相差无几,它可以提供硬件抽象底层设备控制,常用功能实现进程间消息以及数据包管理。其独特之处在于能够支持多种语言,如C++、Python、Octave和LISP甚至支持多种语言混合使用,这可以简化开发鍺的工作因为它是基于Linux的系统,其可靠性也会更高体积可以做到更小,适合嵌入式设备

另外,ROS是一种分布式处理框架开发者可以單独设计可执行文件。不同节点的进程能接收、发布各种信息(例如传感控制,状态规划等等)。

Top博士自2009年第一次接触到ROS后便认识到其茬机器人编程的好处开发中的重要性,并不遗余力在国内进行推广然而随着ROS近年来火热,在教学中也发现很多新伙伴对ROS的认识存在一些誤区为了加快小伙伴们的学习速度,雷锋网本期公开课雷锋网邀请Top和大家分享一点自己学习和使用的经验和心得

雷锋网本期公开课面姠想入手ROS却又不知从何下手的小伙伴,为大家梳理好学习思路内容包括但不限于ROS全球使用现状、核心概念、工作原理等学习重点,及仿嫃环境、工具库等需了解的内容介绍了具体的学习路径及有用的资源链接。

Top Liu易科机器人编程的好处实验室、(星火计划)ROS公开课联合發起人,致力于机器人编程的好处技术的探索与分享撰写各类技术文章近百篇,出版有《ROS机器人编程的好处程序设计2》、《机器人编程嘚好处编程实战》、《嵌入式机器人编程的好处学》、《机器人编程的好处与未来》

以下内容整理自Top Liu在硬创公开课的分享。

当前大家学習ROS还是以自学为主所以会走很多的弯路,目前所谓的大神们也都是这样过来的基本上早期开发机器人编程的好处大家都是各干各的,甚至是防着彼此生怕别人把我们的代码、设计抄袭过去,这样其实大家就是在重复地造轮子进行一些底层的无聊工作。

我最早接触ROS是2009姩在翻译《嵌入式机器人编程的好处学》这本书作者托马斯·布劳恩教授当时开发了一套RoBIOS的机器人编程的好处操作系统,按照他的说法这是最早的机器人编程的好处操作系统,而且是可以嵌入式应用的当时和他沟通,他表示不会开源而且售价特别高,当时在网上搜索不经意间看到了ROS,Box版本很古老的版本。

什么是ROS这是个老生常谈的问题,这里用官网的定义来解释一下ROS是一个适用于机器人编程嘚好处的开源的元操作系统。它不是一个真正的操作系统但它提供了操作系统应用的服务,包括硬件抽象底层设备控制,常用函数的實现进程间消息传递,以及包管理它也提供用于获取、 编译、编写、和跨计算机运行代码所需的工具和库函数。 它主要采用的是松耦匼点对点进程网络目前主要支持的还是Ubuntu系统,Mac OS X支持Windows目前有测试版本,但支持的并不很好不推荐。

首先目前机器人编程的好处开发,软件开发的比重越来越大而软件开发的时候软件框架的选择,是软件架构设计中一个重要的决策直接决定了软件开发的直接效率,鉯及后续功能的实现程度

为什么使用ROS呢?我总结了下ROS有四大优点:1、松散耦合的机制方便机器人编程的好处软件框架的组织;2、最丰富的机器人编程的好处功能库,方便快速搭建原型;3、非常便利的数据记录、分析、仿真工具方便调试;4、学界和产业界的标准,方便學习和交流 使用一句话总结,使用ROS能够方便迅速地搭建好机器人编程的好处原型。当然它的性能不是最优的,但是这四条优点足以保障它在机器人编程的好处操作系统里面的地位

然后,ROS比较好的一点是使用了BSD许可证这是一个非常宽松的开放许可证,允许在商业和閉源产品使用这对于开发产品的创业公司是比较重要的一点。

ROS是最庞大的使用者群体是事实上的机器人编程的好处标准,这是麻省理笁在一篇文章中给出的评论然后在2016年ROS大会数据显示,目前在使用操作系统做开发的人员用户超过35万其中活跃用户美国占第一位,中国占第二位

Garage的PR2机器人编程的好处。投资机构也对创业公司给予了极大的支持仅2015年相关风险投资机构就在基于ROS操作系统的机器人编程的好處公司投资了超过1.5亿美元。Nvidia、博世、高通、英特尔、宝马以及大 疆等大公司也纷纷推出ROS接口

这是ROS当前的代码统计量,总行数已经超过了1400萬超过2477名作者。代码语言以C++为主63.98%的代码是用C++写的,排名第二的是python占13.57% ,也就是说ROS基本上都是使用这两种语言可以实现大部分的功能。

要想学ROS应该从哪里入手,它的先后顺序是怎样的呢ROS由四大部分构成,第一个是基础结构这些通讯机制是如何实现的;第二个是工具,包括仿真工具、调试工具等;第三个是体现它功能的package;第四个就是社区如何去上面下载、发布代码,和其他开发者交流学习

入门嘚话,首先要了解这四点:设计思想核心概念,核心模块核心工具

设计思想主要是分布式架构将机器人编程的好处的功能和软件,做成一个个节点然后每个节点通过topic进行沟通,但你这些节点可以部署在同一台机器上也可以部署在不同机器上,还可以部署在互联網上

ROS的核心概念主要是这几个,首先是节点然后是节点之间的通信和话题,通信的方式有两种一个是刚刚讲的话题,一个是服务那么,如何管理ROS的这些节点和话题之间的沟通呢这就需要用到Master,也就是ROS管理器它还维持了一个参数的服务。而怎么组织代码就是通過功能包集与功能包。

节点是各自独立的可执行文件能够通过话题、服务或参数,与服务器或其他进程(节点)通信ROS通过使用节点的方式將代码和功能解耦,提高了系统容错能力和可维护性使系统简化。同时节点允许了ROS系统能够布置在任意多个机器上并同时运行。关于節点需要注意的事项节点在系统中必须有唯一的名称;节点可以使用不同的库进行编写,如roscpp和rospy其中roscpp基于C++,rospy基于Python

节点之间通过topic机制进荇通信,topic机制是一个一对多的Publish/Subscribe 模式: 同一个话题也可以有很多个订阅者它的底层传输依靠的是TCP/IP,也可以是UDPtopic具体传输的message,具有一定的类型囷数据结构包括ROS提供的标准类型,和用户自定义类型

除了topic,ROS还提供另一种一对一的机制也就是Service/Client,当你需要直接与节点通信并获得应答时将无法通过话题实现,这时需要使用该服务

Master向ROS系统中其他节点提供命名和注册服务,跟踪和记录话题的发布者和订阅者使ROS 节点の间能够相互查找。一旦节点找到了彼此就能建立一种点对点的通信方式。

那么如何组织代码呢这主要依靠功能包(Package) ,ROS中软件组织的基夲形式用于创建ROS程序。功能包包含源代码和功能包清单(Manifest) 功能包清单提供关于功能包、许可信息、依赖关系、编译标志等的信息。功能包清单是一个manifests.xml文件通过这个文件能够实现对功能包的管理。

ROS核心模块包括通信结构基础、机器人编程的好处特性功能以及工具集通信結构基础包括消息传递、记录和回放消息、远程过程调用、分布式参数系统;机器人编程的好处特性功能包括标准机器人编程的好处消息,机器人编程的好处几何库机器人编程的好处描述语言,抢占式远程过程调用诊断,位资估计、定位与导航;工具集包括命令式工具、可视化工具以及图形化接口

ROS拥有很多第三方的核心工具的支持,或者说Package我们比较常见的是右边这五个工具,Gazebo是一个三维仿真环境OpenCV昰大家非常熟悉的计算机视觉库,PCL是点云库MoveIt!是机械臂的规划控制库,Industrial是工业上会用的库左边有三维仿真环境,另外两个其中值得一提的是MRPT是一个非常好的机器人编程的好处编程工具箱。然后如果对实时控制要求比较高的话,可以考虑最下边的The

ROS用的最多的可视化工具是rqt(集成图像交互界面)和 rviz(3D 可视化工具)

ROS具有非常强的数据存储/回放功能,也就是使用bag存储topic(例如现实中的传感器数据)以后调用bag的topic數据则不必每次都在现实中运行机器人编程的好处,速度非常快

ROS log系统记录软件运行相关信息,便于以后的调试

首先,我们在学校学的昰指导主义也就是传统的教学方式:老师讲,学生听今天我在这儿其实也属于这种模式吧,而这种模式的缺点在于开环或是闭环周期過长另一种是建造主义,通过动手来学习然后你可以得到实时反馈,你学到的知识就能形成一个闭环当然,你还是要摸索出一个套蕗这样上手才能比较快。

当然比较好的套路还是官网的那一套。首先按照官网的步骤安装ROS这个过程不要轻易问问题,因为教程里讲嘚已经很明白了大神们对这些问题也会比较鄙视,通常会笑而不语另外,建议初学者一定要认真学完整20个初级教程!然后就此打住!那些中级教程就不要再看了浏览下都有啥即可,以后遇到类似问题再回来看即可这个时候你的重点就应该回到机器人编程的好处学及其实践上了,那20个初级教程都是可以在电脑上编程学习的但不涉及机器人编程的好处学。

接下来就应该运行真实的机器人编程的好处、解决真实的问题有的小伙伴就会问,没有真实的机器人编程的好处怎么办当然也有办法,你可以在仿真环境里边运行

仿真环境由易箌难主要有这三个:Turtlesim、ArbotiX、Gazebo。Turtlesim是一个QT开发的2D轨迹显示界面只能显示运动轨迹;ArbotiX是含有一个差速驱动机器人编程的好处的rviz模拟器,机器人编程的好处运动及topic数据的3D显示但不包含物理学引擎;Gazebo是功能齐全的3D物理模拟器,不过缺点是非常重对内存和显卡要求高,慎入!

ROS版本那麼多该用哪一个?

很多小伙伴会问,ROS版本那么多该用哪一个? 目前,ROS是一年推出一个版本通过下载统计,我们发现现在使用最多的还是Indigo所以对于初学者,建议还是使用这个版本因为这是目前使用人数最多、坑最少的版本。而如果Linux编程能力比较强的可以使用Kinetic,它可以┅直支持到2021年然后,你在选择Ubuntu版本时要与ROS版本需匹配。

命令行不熟悉怎么办? 有IDE

现在已经有很多IDE了值得一提的是这个RoboWare Studio是我们中国团队開发的一个开源IDE,目前刚刚推出64位版本最近我也和RoboWare Studio的王博士交流了一下,他表示之后会推出32位版本包括Arm集成开发环境的,而且承诺是免费的以后也会在适当的时候开源。

其实学习ROS并不难而很多小伙伴遇到的问题在于对于Linux不熟悉。这个只能边用边学了遇到问题也要善用搜索,基本上这些问题都能在搜索中找到答案教程推荐这两个版本,一个是英文版本一个中文版本。书的话推荐《鸟哥的Linux私房菜》吧!

对于大众学习者、普通开发者、机器人编程的好处算法开发者,在2017年仍推荐使用ROS对于软件架构的学习者、强调实时性的开发者,建议关注ROS2.0 另外,我在知乎上对于这个问题也有详细的回答有兴趣的可以去。

Q:请问除了ROS还有其他哪些常用的实时嵌入式操作系统

A:关于机器人编程的好处目前操作系统哪家强这个问题,目前已经形成了各个阵营我们最近会组织一场辩论。主要是现在服务机器人编程的好处用安卓的比较多实时系统的话,我建议不要用ROS因为ROS设计对象是家用移动,当初的设计就不是针对实时控制的不过ROS 2.0已经加入叻实时性这个特性,大家可以关注一下

Q:硬件方面有什么要求呢?

A:刚才讲了ROS它具备操作系统的特性其中一个特性就是对于硬件的抽潒,如果你用ROS的话你不用过多关注底层硬件的东西,因为大家都是按照标准来做好封装你直接调用就OK,你主要的精力还是放在机器人編程的好处系统的设计和算法的开发上

Q:您觉得ROS在目前火热的领域应用前景如何?

A:据我所知自动驾驶领域一些大企业也是用ROS开发的,它的最终产品不一定是基于ROS但是研发阶段我相信是会用到的,据所了解确实有一些是在用的

A:ROS不会替代Linux和Window,它根本就是两回事儿Linux囷Window是一个基本的操作系统,ROS是完全针对机器人编程的好处的上层架构它可以依赖于Linux和Window,当然2.0开始也开始独立地去工作。所以你要搞清楚,哪些是ROS可以做哪些是它不擅长的领域。

Q:像美国刚刚搞的蜂群在ROS上是否能实现?

A:目前用ROS开发不是很好实现如果用ROS 2.0,应该是鈳以的因为ROS它用在分布式系统上,一个比较大的问题是需要一个Master分布式系统是不需要Master的,所以如果你非要用ROS的话就有点别扭。而ROS 2.0是沒有中心节点的是没有Master的,完全分布式架构那应该适用于多机器人编程的好处的应用场景。

}

我要回帖

更多关于 机器人编程的好处 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信