当前位置:首页 期刊杂志

将机器人操作系统(ROS)引入本科实践教学

时间:2024-08-31

肖军浩 卢惠民 薛小波 徐晓红

DOI:10.16660/j.cnki.1674-098X.2016.22.157

摘 要:实践教学是人才培养的一个重要环节,对机器人技术这样一门典型的交叉学科尤为重要。然而,开展机器人技术实践教学亟需一个通用的多功能软件平台,机器人操作系统(ROS)的面世填补了这个空白。因此,让高年级本科生学习使用ROS有非常重要的意义。事实上,国外很多知名高校已经将ROS用于教学,而国内还刚刚起步。作者近两年在国防科技大学《自动化系统综合设计》实践课程中对ROS教学进行了初步尝试,论文不仅分享了课程的教学方法,还分析了将ROS应用于实践教学可能遇到的共性问题,提出了建设ROS实践教学课程的建议。

关键词:实践教学 机器人操作系统 机器人技术 自动化系统综合设计

中图分类号:TP242 文献标识码:A 文章编号:1674-098X(2016)08(a)-0157-03

合理有效开展实践教学,是培养工程技术类人才必不可少的一个重要步骤,对于机器人技术的教育更是如此。通过实践教学,学生能够验证所学的理论,更重要的是,通过理论与实践的结合更深刻理解所学知识。机器人技术亟需一个能够将各部分知识融会贯通的软件实践平台。在众多机器人软件平台中,机器人操作系统(ROS)因具有功能丰富、模块化程度高、代码可重用性强、开发效率高、可供借鉴开源资源丰富、组织机器人软件系统高效灵活等优点,能够更好满足这个需求。国防科学技术大学《自动化系统综合设计》实践课程对引入ROS进行了初步尝试,分析了将ROS应用于实践教学肯能遇到的共性问题,提出了建设ROS实践教学课程的建议。

1 机器人操作系统的发展

作为撬动下一次工业革命的杠杆,机器人近年来受到全社会的普遍关注,各国也不断加大对于机器人研究的支持力度。随之而来的是机器人技术的飞速发展,但与此同时,机器人系统的复杂度不断提高,使得为机器人编写软件系统越来越困难。主要原因包括:第一,机器人的功能层次化要求在加深,对软件的模块化设计提出了更高要求;第二,机器人的计算平台不断丰富,机器人软件是否支持跨平台开发成为机器人设计中的一个重要因素;第三,机器人的感知系统越来越复杂,虽然提升了机器人的感知能力,但数据量也越来越大,对于软件系统的实时性和可靠性提出了挑战;第四,机器人软件系统呈“烟囱”式发展,不同机器人间的接口不能兼容,代码不能复用。总之,与个人计算机相比,机器人领域缺少一套软件架构的标准,导致代码的复用率非常低。

针对上述问题,机器人操作系统[1,2](Robot Operating System,简称ROS)应运而生。因为集成了全世界机器人领域顶级科研机构,包括斯坦福大学、麻省理工学院、慕尼黑工业大学、加州大学伯克利分校、佐治亚理工大学、弗莱堡大学、东京大学等多年的研究成果,ROS甫一问世便受到了科研人员的广泛关注。随后,ROS又借助开源的魅力吸引了世界各地机器人领域的仁人志士群策群力,推动其不断进步。2013年麻省理工学院科技评论(MIT Technology Review)指出:“从2010年发布1.0版本以来,ROS已经成为机器人软件的事实标准(de facto standard)”。目前ROS在全球已经拥有数以万计的使用者,其支持的机器人已经有百余种,其中包括廉价的乐高机器人(LEGO Mindstorms)和TurtleBot系列教学机器人。

2 ROS对于机器人实践教学的意义

合理有效开展实践教学,是培养工程技术类人才必不可少的一个重要步骤,对于机器人技术的教育更是如此[3]。通过实践教学,学生能够验证所学的理论,更重要的是,通过理论与实践的结合更深刻的理解所学知识。机器人技术涉及到机械系统设计、运动控制规划、环境感知、信息融合、信号处理等众多研究内容,亟需要一个能够将学生过去所学的知识融会贯通的实践平台。对于机器人技术,硬件平台和软件平台具有同等重要的地位,甚至软件平台比硬件平台的地位更加突出,因为没有硬件平台还可以通过仿真等途径进行算法的验证,而没有软件平台学生则无从下手。

首先,ROS正是这样一个能够用于高年级本科生实践教学的理想的软件平台,它几乎涵盖了机器人技术的各个方面,包括底层的硬件驱动、数据获取、运动控制,上层的自主定位、路径规划、地图创建、目标识别等。其次,ROS采用基于发布/订阅的节点通信方式,将各个功能进行了松耦合的模块化设计,因此,可以根据教学内容对实践项目进行裁剪。此外,ROS中集成了机器人技术领域很多最新研究成果的代码,基于这些代码学生很容易站在巨人肩膀上学习,有利于学生了解学科的发展前沿。最后,ROS社区提供了针对各个层次的用户的大量在线教程,这些教程都是通过国际同行严格评审后才发布的,具有非常高的权威性,可以用于学生自学。

因此,让本科生尽早了解、学习并使用ROS具有非常重要的意义:第一,基于ROS能够迅速实现一些机器人的简单应用,使学生对机器人技术产生浓厚的兴趣;第二,从更加系统的角度理解机器人软件架构;第三,为研究生期间从事机器人技术研究打下良好基础;第四,学习ROS中的代码标准和编程风格,培养良好的工程素养;第五,能够开阔眼界,了解机器人领域最前沿的研究成果。

事实上,自ROS面世以来,国外很多知名高校,如:斯坦福大学(美国)、伯明翰大学(英国)、圣路易斯华盛顿大学(美国)、萨格勒布大学(克罗地亚)、南卡罗来纳大学(美国)、东京大学(日本)、锡耶纳大学(意大利)、莱布尼兹汉诺威大学(德国)已经将ROS引入实践教学中[4]。与国际同行相比,国内关于机器人操作系统的教学刚刚起步,国防科学技术大学已经开设了研究生课程[5],在本科生课程方面还未见相关报告。

3 笔者近两年的尝试

笔者在国防科学技术大学自动化专业的《自动化系统综合设计》课程中对ROS教学进行了初步尝试。笔者选用的教学平台是Willow Garage公司的TurtleBot2教学机器人[6],是专门针对本科生和研究生教学研发的平台,结构简单,外形小巧,采用双轮差动,搭载红外传感器、碰撞检测传感器、RGB-D体感摄像头等传感器。TurtleBot2自带了丰富的例程,包括遥控运动控制、行人跟踪、地图创建等,并且这些例程都配有详细的文档。

《自动化系统综合设计》面向自动化专业大四上学期本科生,共36个学时,其中4个学时用于理论授课,主要用来介绍ROS的基本概念、文件组织、框架结构、基本命令、常用工具、如何编译执行等。其余32个学时进行分组实验,具体的实施方式如以下几点。

3.1 以项目为导向

课程首先发布一系列的项目供学生选择,这些项目涉及到机器人领域不同的知识单元,仅凭一个学生在课程规定的时间内难以完成。因此,学生之间必须组队,根据题目的难易程度不同允许2~4个学生为一组。学生在这门课需要做的是根据所选项目分析问题和解决实际问题,包含需求分析、方案设计、代码实现、软件调试、现场验收5个阶段。当然,在此过程中老师会给予必要的指导。

通过这种方式,能够锻炼学生综合利用所学知识分析并解决实际问题的能力,培养良好的工程素养。

3.2 采用合作学习的教学模式

如上所述,学生在课程设计过程中必须通过分工合作才能完成选定的项目。因此,课程采取合作学习(cooperative learning)的教学模式。这一教学模式于20世纪70年代在美国提出,并在80年代中期取得实质性进展[7,8],我国在引入后也取得了较好效果[7]。合作学习是一种结构化的、系统的学习策略,由2~6名能力各异的学生组成一个小组,以合作和互助的方式从事学习活动,共同完成小组学习目标,在促进每个人学习积极性的前提下,提高整体成绩。因此,合作学习非常适合类似于《自动化系统综合设计》这种综合性较强的课程学习。

通过引入合作学习,能够培养学生的集体意识和强化团队合作的能力。

3.3 以多重标准进行评分

在现场验收时,根据项目的完成情况,每个小组会有一个分数,但这个分数仅是组内成员最终分数的基数。为了避免“合作学习”中出现“不合作”和“不作为”现象,对于组内成员采取互评和差异性评分。互评是指组内成员根据对于项目的贡献互相打分,差异性评分是指组内成员的最终成绩并不相同。

通过引入组内成员互评和差异性评分机制,实现了组内竞争,激发学生作为个体的责任感。

4 收获和感悟

因为课程本身融学术性、趣味性、竞争性于一身,因此,学生参与的积极性非常高。考虑到是第一次在实践课程中引入ROS,2014年只发布了3个项目,结果30个学生中一半以上报名,最终只有8个学生入围。学生克服了中文文献少、Linux操作不熟悉等困难,圆满完成了项目指定的任务。与学生交流的过程中,学生也认为在课上学到了很多新知识,除了机器人操作系统本身之外,对机器人技术的理解也更加深刻,尤其是对软硬件体系结构有了新的认识。为了增加受众面,2015年教学团队加大了课程的建设力度,成立了指导老师组,面向整个自动化专业开设了以ROS为软件平台的《自动化系统综合设计》,并取得了预期的教学效果。

在课程的建设过程中,笔者也发现了一些问题,这些问题对于国内本科教学可能是共性的,在教学过程中值得注意:第一,Linux操作系统知识储备不足,当前我国大学校园内绝大部分用户都使用微软各个版本的windows操作系统,知道并能够熟练使用linux的学生寥寥无几。因此,对窗口操作的依赖性极强,对在终端进行命令行操作心存畏惧;第二,中文资料有限,虽然ROS自诞生以来迅速在全世界推广,但中文资料依然有限。没有合适的中文教材,对于本科生来讲直接使用外文教材难度较大;第三,绝大部分学生不能将ROS作为一个工具使用,在学习过程中不想放过任何一个细节,没有边学边用的习惯;第四,学生没有接触过Boost编程,而ROS集成了全世界大量一流科研机构的科研成果,其代码中较多的使用了boost编程且高度优化;第五,TurtleBot2中的代码中大量使用了nodelet和roslaunch等工具的高级用法,加大了剖析代码的难度。

5 对于机器人操作系统教学的建议

从课程体系层面上考虑开设《机器人操作系统》相关实践课程:在纵向上,开设必要的先修课程,如《Linux操作系统导论》;在横向上,建议作为机器人技术主干课程的配套实践课,例如:针对《自主移动机器人导论》《机器人视觉》等,精心设计使用ROS实现理论教学中的一些案例,吸引学生的兴趣,在汲取理论知识的同时提高学生的动手能力。

6 结语

笔者在《自动化系统综合设计》实践课程中引入了ROS,作为软件平台支撑机器人技术这一典型交叉学科的实践教学。在课程建设中,始终坚持以项目为主导,采用合作学习的教学模式,以多重标准进行评分。课程本身融学术性、趣味性、竞争性于一身,因此,学生参与的积极性非常高。经过课程的训练,学生对于机器人技术有了更深刻、更系统的认识,能够利用ROS进行软件的构建,解决实际的工程问题,取得了预期的教学效果。此外,笔者总结了课程建设过程中遇到的问题,并针对国内开展ROS教学提出了建议。

参考文献

[1] 肖军浩.机器人操作系统浅析(译)[M].北京:国防工业出版社,2016.

[2] 张建伟,张立伟,胡颖,等.开源机器人操作系统——ROS[M].北京:科学出版社,2012.

[3] 徐晓红,郑志强,卢惠民.构建机器人技术创新实践基地的探索与实践[J].实验室研究与探索,2015,34(3):185-189.

[4] 国际上各大学已开设ROS相关课程列表[EB/OL].http://wiki.ros.org/Courses,2016-08-24.

[5] 王之元,周云,易晓东,等.机器人操作系统研究型课程建设[J].计算机教育,2016(1):77-80.

[6] Gerkey B,Conley K.Robot developer kits [ros topics][J].IEEE Robotics & Automation Magazine,2011,18(3):16.

[7] 王坦.论合作学习的基本理念[J].教育研究,2002,2(2):

68-72.

[8] 曾琦.合作学习的基本要素[J].学科教育,2000(6):7-12.

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!