西门子西南代理商PLC中国(授权)一级代理
| 更新时间 2024-12-13 08:00:00 价格 请来电询价 西门子变频器 西门子触摸屏 西门子伺服电机 西门子PLC 西门子直流调速器 西门子电缆 联系电话 13922889745 联系手机 18475208684 联系人 向小姐 立即询价 |
ROS是什么
ROS的诞生时间并不长,但它在很短的时间里就从一个公司内部项目发展为机器人开发的事实标准。本文以ROS诞生的起因为切入点,探索ROS解决了机器人上的哪些问题,使得它能够被机器人行业广泛地采纳。
ROS的诞生相比于机器人的发展历史来说并不算久远,它在2010年3月才推出了第一个发行版本,和Linux的诞生一样,ROS并不是忽然之间横空出世的,它的雏形Zui早可以追溯到2007年左右斯坦福大学人工智能实验室的STAIR机器人项目。STAIR机器人项目希望完成一个服务机器人原型,在机器视觉的辅助下,可以在复杂环境中运动,还可以通过机械臂操控环境中的物体。STAIR机器人配备了一个运动底盘用于移动,一个小型机械臂用于抓取周围物体,还配备了立体摄像头和激光雷达用于感知周围的环境,如图所示。
当时负责STAIR机器人项目软件架构设计和开发的是美国斯坦福大学博士生摩根·奎格利(Morgan Quigley),随着项目开发的推进,他逐渐意识到从软件开发的角度来看,将各种功能集成在一个机器人上非常不容易,也是从那时他开始考虑采用“分布式”的方式来连接不同的模块,并将这一概念成功应用到机器人软件系统中,取名为Switchyard。
摩根·奎格利的导师是吴恩达教授,吴恩达教授当时带领的人工智能实验室正在和Willow Garage公司(见下图1)合作,帮助它们开发PR2(Personal Robot 2nd)机器人,如下图2所示。
有类似项目开发经验的摩根·奎格利自然也加入并将开发Switchyard的经验充分应用到该项目中,而PR2项目中的机器人软件系统名正是“ROS”。
2009年,摩根·奎格利、吴恩达和Willow Garage公司的工程师们在当年的IEEE国际机器人与自动化会议上发表了“ROS: An Open-Source Robot Operating System”一文,正式向外界介绍了ROS。因为摩根·奎格利对于ROS的诞生有着杰出的贡献,所以他也被称为ROS之父,而此时的摩根·奎格利还在攻读博士学位尚未毕业。
2010 年,PR2机器人正式对外发布,作为机器人配套的软件系统,ROS的第一个正式发布版本也一起发布,即ROS 1.0。在ROS发布之后,受到了学术界和机器人产业的热烈欢迎,并在2012年举办了第一次开发者大会ROSCon 2012。同年为了推动ROS的发展,Willow Garage公司成立了非营利组织“开源机器人基金会”(Open Source Robot Foundation,OSRF),并在2013年将ROS的开发和维护工作从Willow Garage公司移交到OSRF基金会。直到现在,ROS依然是由OSRF在管理和维护。
从ROS的诞生的背景来看,它主要解决一个复杂的机器人系统中,众多的外部设备和功能之间结合很困难的问题,而它给出的解决思路是“分布式”,即将各个功能模块都独立出来,再通过一套标准的协议来连接各个独立的模块,使每个模块只需要负责一个具体的功能即可。例如机器人需要使用激光雷达实现导航时,激光雷达只需要捕获周围的环境信息,由定位软件来根据雷达的数据确定机器人的当前位置,路径规划软件根据机器人当前位置和目标位置来规划机器人的路径,再由机器人底盘驱动软件根据规划出的路径控制运动底盘上的电动机运动,使机器人Zui终到达目标位置。这样的好处在于,将机器人导航这样一个复杂的功能拆解成了若干个小的模块,降低了开发的难度,并且各个模块之间相互独立,通过一套协议来沟通,软件系统的耦合度也很低,当需要换更换机器人上搭载的硬件时,只需要修改对应的模块软件,不需要对整个软件系统进行大幅度的修改。
ROS官方对ROS的定义是:机器人操作系统(ROS)是用于编写机器人软件的灵活框架。它是工具、库和规范的集合,用于简化在各种机器人平台上创建复杂而强大的机器人行为的任务。下图所示为zhuming的ROS等式,ROS=通信架构+工具+功能+生态系统。
通信架构提供了一套标准的通信协议,工具为开发过程的调试提供了很大的便利,至于功能,因为有了一套标准的通信协议,所以不同开发者开发的机器人和功能之间可以很容易组合起来,这样就会有很多软件可以直接使用,避免了重复开发。众多的开发者、使用ROS的企业和组织共同构建了生态系统,这个生态中包含了各种ROS学习交流会议、论坛以及支持或者使用ROS的设备,这使得ROS无论是从学习还是应用的角度来看,都成为一项通用的技能。
从使用ROS的经验来看,ROSZui令人满意的有两点,第一是它将各个功能模块拆解后极大地降低了机器人的开发难度,机器人本身是一个相对复杂的系统,完全从0去构建涉及机械、电子电路、嵌入式、运动控制、上位机软件、算法等多个技术领域,而这些跨度极大的技能通常很难由一个人所掌握,团队中将各个功能模块分配给不同的人来完成,因为有标准的协议,负责不同模块的开发者只需要遵循协议,Zui终就可以很容易地将所有人的工作整合成一套完整的机器人系统。
第二是ROS通过多年的发展已经成为机器人开发的事实标准,这就构建出了一个良好的ROS生态。现在从市面上能买到的很多设备,例如运动底盘、激光雷达、相机、姿态传感器等开发厂商都会提供对应的ROS驱动,减少了用户的无意义重复工作。通过已有的设备驱动和各类功能软件,用户可以轻松地构建出产品原型,因此有越来越多的公司开始倾向使用ROS,这也会使各类设备厂商更有积极性去支持ROS。
ROS开发环境搭建
在开发ROS功能包前需要先搭建一个开发环境,ROS功能包的编译等系统工具ROS已经有提供,只需要给自己一个写代码的环境就可以。
Zui简单的环境可以直接使用文本编辑器写代码+终端编译代码,这种方法的弊端是缺少自动补全或者语法检查之类基础功能,开发效率不高。因此人们更倾向于使用一些集成开发环境(Integrated Development Environment,IDE)软件作为开发环境。
ROS并没有指定使用某一款特定的IDE,在官方的推荐列表中有十多款软件可选,这里推荐使用的是微软的VSCode(Visual Studio Code)及其提供的插件作为后续的开发环境。
在Ubuntu中,安装VSCodeZui简单的方式是通过软件中心来安装,搜索“vscode”,单击“Install”按钮即可安装,如图所示。
Ubuntu操作系统中使用的是deb格式的软件安装包,下载时选择deb格式单击“Save File”按钮保存即可,下载完成后可以通过dpkg命令手动安装。例如将软件安装包下载在当前用户的Downloads目录下,那么执行sudo dpkg -i ~/Downloads/文件名即可安装。
通过软件商店或者安装包的方式安装完成后,在终端中执行code即可启动VSCode,由于后续要频繁地使用到VSCode,这里建议将它固定在左侧程序坞(Dock)栏中以方便使用。
下图所示是VSCode的界面,单击右上角的“File”→“Open Folder”,选择第2章中创建的工作空间“catkin_ws”目录,然后单击“OK”按钮。这样左侧的Explorer栏中就有了catkin_ws工作空间的目录。
打开src目录中的CMakeLists.txt文件,这个文件应该是像普通文本一样显示的,没有语法关键字高亮等特性。这是由于VSCode中语言的支持是通过插件来实现的,插件是独立于VSCode之外单独安装的。为了能够实现语法高亮、自动检查等功能,需要在VSCode中安装相应的插件。
VSCode中的插件可以通过左侧一栏中的 按钮安装,单击展开后会有一个搜索框,在本书涉及的ROS开发中主要会用到以下几个插件:C/C++、Python、CMake Tools和ROS。如图所示,搜索插件名称,单击选中插件,在详情页单击“install”按钮即可完成插件的安装。
通过以上几个插件,在VSCode中就可以实现语法高亮显示、自动补全等操作,这些功能会极大地提升开发的效率。
联系方式
- 电 话:13922889745
- 经理:向小姐
- 手 机:18475208684
- 微 信:18475208684