笔者所在实验室自2013年以来,一直参与移动机器人项目的研发工作。实验室师生们根据产业界合作伙伴的需求,研究开发了机器人导航、避障、自主行走等一系列算法,并成功应用在了扫地机器人、家用陪伴机器人等多个商业项目上,相关成果获得了中国人工智能学会“吴文俊人工智能技术发明奖”。
在相关技术的研究和应用中,我们发现自主移动机器人涉及机械、电子、自动化、计算机、数学等多学科多领域交叉,这导致学生在进入实验室后,存在着相当长时间的学习入门沉默期,面对大量知识不知从何开始。相关的机器人教程往往选取某个学科的技术点来讲述,或从基础理论原理切入,较难让人快速上手体验机器人开发过程,最终导致很多学生完成了“移动机器人开发从入门到放弃”的过程,并转换了研究方向。我们还发现,即使留下来继续从事相关技术开发和算法研究的学生,在毕业的同时也带走了学习过程和经验,新加入的学生在不断重复这一轮回。因此通过教材的形式总结知识并形成体系,有利于我们不断观察和总结新加入学生的学习过程,重视他们的反馈结果,持续迭代教材的内容,最终达到知识传承的目的,也让更多的读者获益。我们还建设了专属课程网站,课程内容和源代码的更新都可以从开源网站或实验室官网上获取并下载。
此外,我们因产学研交流活动去了很多兄弟院校进行调研,发现移动机器人技术开发的课程只在少量高校开设,这对移动机器人产业的繁荣以及日益增长的人才需求是不利的。因此,我们编写这样一本凝聚实验室人才培养经验的教材,希望有助于同行们培养初步掌握移动机器人开发技术的学生。
本书按照自主移动机器人开发规范和实现过程,从机器人仿真环境开始讲起,让读者首先在虚拟环境下理解机器人开发和传统软件开发的不同之处,掌握分布式、多机协同开发的方法,接着带领读者来了解移动机器人的结构设计,掌握必要的硬件构成。然后,我们按照探索和理解世界的一般过程(感知环境、构建地图和路径导航)来组织编写剩余的篇幅:首先介绍了机器人自主移动所必需的传感器设备,对于接收到的数据进行可视化实验和误差分析,让读者掌握电子元器件的特性,并掌握对实验数据进行分析的方法;其次让机器人在未知环境中移动,完成直行和转向控制,同时实现数据的通信与存储,并利用得到的数据建立环境地图;最后让机器人在环境中能到达指定位置,并在移动过程中动态规避障碍。通过这样一个学习过程,移动机器人所包含的软件、硬件、运动控制、SLAM建图与导航知识就都穿插其中了。
本书在写作过程中,面临理论知识和动手实践内容的篇幅取舍,经过实验室同学们的几轮学习迭代,我们发现先动手让设备跑起来,验证经典算法和工具包,之后再系统地学习理论知识更有利于读者快速掌握移动机器人的开发技术。因此,在教材中强调了动手实验过程和算法调试过程,对于其背后的理论基础,则以参考文献的形式供读者自行阅读提高。
本书在机器人操作系统的取舍中,考虑到业界中ROS的应用普及度和生态成熟度,最终选择以ROS为基础讲解,但本书中硬件平台和相关实验同样适合ROS2。在完成本书的学习后,读者可阅读ROS2官方文档或本书姊妹篇《移动机器人开发技术(视觉SLAM版)》来学习ROS2并复现本书中的实验。
本书在写作过程中,从内容选题到确定思路,从资料搜集、提纲拟定到内容的编写与修改,继而诸多算法和实验的梳理,都得益于北京邮电大学视觉机器人与智能技术实验室师生的共同努力。王涛同学为本书做了大量实验和素材整理,薛峰、韩浩东、刘续威、苏行松、常逸聪等同学参与了图书校对工作。在此,对所有关心和支持本书的学者、同仁和学生表示感谢。
本书在编写过程中,参考了大量国内外的著作、论文、研究报告,在此向所有被参考内容的作者表示由衷的感谢,他们的劳动成果为本书提供了丰富的参考资料。
由于编者水平有限,书中尚存一些不足和错误,欢迎读者批评指正。
宋桂岭明安龙
北京邮电大学
视觉机器人与智能技术实验室