机器人程序设计——之如何正确入门ROS | 硬创公开课(附视频/PPT)【转】

  • 时间:
  • 浏览:1

115期:机器人守护进程设计之何如正确入门ROS | 硬创公开课 - 腾讯视频

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

命令行不熟悉为什么么办? 有IDE

当前他们 学习ROS还是以学着为主,所以会走所以的弯路,目前所谓的大神们也也有从前 过来的。基本上早期开发机器人他们 也有各干各的,甚至是防着彼此,生怕别人把他们 的代码、设计抄袭过去,从前 人太好他们 所以在重复地造轮子,进行某些底层的无聊工作。

Master向ROS系统中某些节点提供命名和注册服务,跟踪和记录话题的发布者和订阅者,使ROS 节点之间不想能否 相互查找。一旦节点找到了彼此,就能建立你你你是什么点对点的通信土最好的土办法。

目前除了ROS,还有所以之类的机器人软件框架,包括Player、YARP、Orocos、CARMEN、Orca、MOOS,以及Microsoft Robotics Studio

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

百度文库-信息提示

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

入门搞笑的话,首那么 了解这四点:设计思想,核心概念,核心模块,核心工具

Q&A 环节

另外,ROS是你你你是什么分布式防止框架,开发者还不能否 单独设计可执行文件。不同节点的守护进程能接收、发布各种信息(之类传感,控制,情況,规划等等)。

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

A:目前用ROS开发也有很好实现,肯能用ROS 2.0,应该是还不能否 的。肯能ROS它用在分布式系统上,有另兩个 比较大的疑问是需用有另兩个 Master,分布式系统是不需用Master的,所以肯能你非要用ROS搞笑的话,也特别别扭。而ROS 2.0是那么 中心节点的,是那么 Master的,全版分布式架构,那应该适用于多机器人的应用场景。

节点是每个人 独立的可执行文件,不想能否 通过话题、服务或参数,与服务器或某些守护进程(节点)通信。ROS通过使用节点的土最好的土办法将代码和功能解耦,提高了系统容错能力和可维护性,使系统复杂化。同去,节点允许了ROS系统不想能否 布置在任意多个机器上并同去运行。关于节点需用注意的事项,节点在系统中需用有唯一的名称;节点还不能否 使用不同的库进行编写,如roscpp和rospy,其中roscpp基于C++,rospy基于Python。

Q:请问除了ROS还有某些那此常用的实时嵌入式操作系统?

现在肯能有所以IDE了,值得一提的是你你你是什么RoboWare Studio是他们 中国团队开发的有另兩个 开源IDE,目前事先推出64位版本。最近我也和RoboWare Studio的王博士交流了一下,他表示过也有推出32位版本,包括Arm集成开发环境的,后会 承诺是免费的,事先也会在适当的事先开源。

Top博士自2009年第一次接触到ROS后,便认识到其在机器人开发中的重要性,暂且遗余力在国内进行推广。然而随着ROS近年来火热,在教学中也发现所以新伙伴对ROS的认识存在某些误区,为了加快小伙伴们的学习强度,雷锋网本期公开课雷锋网邀请Top和他们 分享某些当时学得习和使用的经验和珍得。

ROS常用命令工具包括rostopic (Topics)、rosservice (ServiCES)、rosnode (Nodes)、rosparam (Parameters)、rosmsg (Messages)、rossrv (Services)和roswtf (General debugging) ,在这里就不全版展开了。

A:ROS不想替代Linux和Window,它根本所以两回事儿。Linux和Window是有另兩个 基本的操作系统,ROS是全版针对机器人的上层架构,它还不能否 依赖于Linux和Window,当然2.0如果开始英文,也如果开始英文独立地去工作。所以,我还不能否 搞清楚,那此是ROS还不能否 做,那此是它不擅长的领域。

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

不熟悉Linux为什么么办?

所以小伙伴会问,ROS版本那么 多,该用哪有另兩个 ? 目前,ROS是一年推出有另兩个 版本。通过下载统计,他们 发现现在使用最多的还是Indigo,所以对于初学者,建议还是使用你你你是什么版本,肯能这是目前使用人数最多、坑离米 的版本。而肯能Linux编程能力比较强的,还不能否 使用Kinetic,它还不能否 时不时支持到2021年。后会 ,你在确定Ubuntu版本时,要与ROS版本需匹配。

要想学ROS,应该从哪里入手,它的先后顺序是何如的呢?ROS由四大帕累托图构成,第有另兩个 是基础型态,那此通讯机制是何如实现的;第十个 是工具,包括仿真工具、调试工具等;第有另兩个 是体现它功能的package;第十个 所以社区,何如去里边下载、发布代码,和某些开发者交流学习。

在学术研究领域,基本上机器人算法也有给出ROS版本的源守护进程。最早在2009年ROS发布的“ROS: an open source Robot Operating System” 论文,目前肯能被引用了2871次。

首先,目前机器人开发,软件开发的比重那么 大,而软件开发的事先软件框架的确定,是软件分发包含另兩个 重要的决策,直接决定了软件开发的直接强度,以及后续功能的实现程度。

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

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

Q:ROS未来还不能否 发展成全版替代Linux和Window?

ROS拥有所以第三方的核心工具的支持,肯能说Package。他们 比较常见的是右边这十个 工具,Gazebo是有另兩个 三维仿真环境,OpenCV是他们 非常熟悉的计算机视觉库,PCL是点云库,MoveIt!是机械臂的规划控制库,Industrial是工业上会用的库。左边有三维仿真环境,另外有另兩个 其中值得一提的是MRPT,是有另兩个 非常好的机器人编程工具箱。后会 ,肯能对实时控制要求比较高搞笑的话,还不能否 考虑最下边的The Orocos Project。

ROS的核心概念主所以这2个,首先是节点,后会 是节点之间的通信和话题,通信的土最好的土办法有你你你是什么,有另兩个 是事先讲搞笑的话题,有另兩个 是服务。那么 ,何如管理ROS的那此节点和话题之间的沟通呢?这就需用用到Master,也所以ROS管理器,它还维持了有另兩个 参数的服务。而为什么么组织代码,所以通过功能包集与功能包。

Q:像美国事先搞的蜂群无人机,在ROS上是不是能实现?

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

人太好学习ROS暂且难,而所以小伙伴遇到的疑问在于对于Linux不熟悉。你你你是什么非要边用边学了,遇到疑问也要善用搜索,基本上那此疑问都能在搜索中找到答案。教程推荐这有另兩个 版本,有另兩个 是英文版本,有另兩个 中文版本。书搞笑的话,推荐《鸟哥的Linux私房菜》吧!

ROS和ROS2.0该学习哪个呢?

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

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

A:刚才讲了ROS它具备操作系统的型态,其包含另兩个 型态所以对于硬件的抽象,肯能你用ROS搞笑的话,你不想不想 关注底层硬件的东西,肯能他们 也有按照标准来做好封装,你直接调用就OK,你主要的精力还是放到机器人系统的设计和算法的开发上。

2016年官方支持ROS的机器人超过了200个。目前肯能有所以机器人公司采用了ROS系统来开发某些应用于全新市场的产品,如ClearPath、Rethink、Unbounded、Neurala、Blue River、Big-i,最典型的所以Willow Garage的PR2机器人。投资机构也对创业公司给予了极大的支持,仅2015年相关风险投资机构就在基于ROS操作系统的机器人公司投资了超过1.5亿美元。Nvidia、博世、高通、英特尔、宝马以及大 疆等大公司也纷纷推出ROS接口。

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

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

当然,比较好的套路还是官网的那一套。首先按照官网的步骤安装ROS,你你你是什么过程暂且轻易问疑问,肯能教程里讲得肯能很明白了,大神们对那此疑问也会比较鄙视,通常会笑而不语。另外,建议初学者一定要认真学全版20个初级教程!后会 就此打住!那此中级教程就暂且再看后,浏览下也有啥即可,事先遇到之类疑问再回来看即可,你你你是什么事先你的重点就应该回到机器学着及人太好践上了,那20个初级教程也有还不能否 在电脑上编程学习的,但不涉及机器学着。

首先,他们 在学校学的是指导主义,也所以传统的教学土最好的土办法:老师讲,学生听,今天我在这儿人太好也属于你你你是什么模式吧,而你你你是什么模式的缺点在于开环或是闭环周期过长。另你你你是什么是建造主义,通过动手来学习,后会 你还不能否 得到实时反馈,你学到的知识就能形成有另兩个 闭环。当然,你还是要摸索出有另兩个 套路,从前 上手不能否 比较快。

接下来就应该运行真实的机器人、防止真实的疑问。有的小伙伴就会问,那么 真实的机器人为什么么办?当然也有土最好的土办法,你还不能否 在仿真环境里边运行。

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

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

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

Q:硬件方面有那此要求呢?

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

为什么么学

ROS具有非常强的数据存储/回放功能,也所以使用bag存储topic(之类现实中的传感器数据),事先调用bag的topic数据则暂且每次也有现实中运行机器人,强度非常快。

设计思想主所以分布式架构,将机器人的功能和软件,做成有另兩个 个节点,后会 每个节点通过topic进行沟通,但你那此节点还不能否 部署在同一台机器上,也还不能否 部署在不同机器上,还还不能否 部署在互联网上。

后会 ,ROS比较好的某些是使用了BSD许可证,这是有另兩个 非常宽松的开放许可证,允许在商业和闭源产品使用,这对于开发产品的创业公司是比较重要的某些。

嘉宾介绍:

对于大众学习者、普通开发者、机器人算法开发者,在2017年仍推荐使用ROS。对于软件架构的学习者、强调实时性的开发者,建议关注ROS2.0 。另外,我在知乎上对于你你你是什么疑问也有全版的回答,有兴趣的还不能否 去看看。

A:关于机器人目前操作系统哪家强你你你是什么疑问,目前肯能形成了各个阵营,他们 最近会组织一场辩论。主所以现在服务机器人用安卓的比较多。实时系统搞笑的话,我建议暂且用ROS,肯能ROS设计对象是家用移动智能机器人,当初的设计就也有针对实时控制的,不过ROS 2.0肯能加入了实时性你你你是什么型态,他们 还不能否 关注一下。

Q:您人太好ROS在目前火热的自动驾驶领域应用前景何如?

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

这是ROS当前的代码统计量,总行数肯能超过了1200万,超过2477名作者。代码语言以C++为主,63.98%的代码是用C++写的,排名第二的是python,占13.57% ,也所以说ROS基本上也有使用这你你你是什么语言,还不能否 实现大帕累托图的功能。