梁 航,陈湘骥,陈煜塬,黄俊曦
(华南农业大学数学与信息学院,广州 510642)
随着人工智能兴起,在科研、工业领域,虚拟仿真技术为调试提供了便捷高效的途径,对虚拟仿真技术的需求量越来越大。近年来,对机器人技术的研究趋势也逐渐成为热点,并且更加紧密地与虚拟技术相结合。例如,Liu等[1]通过Unity3D-ROS 来设计虚实交互的自动送货机器人,实现了智能交通系统。Yang 等[2]结合Unity、ROS、Matlab 和SimulIDE 来仿真和跟踪多旋翼无人机的生命周期,搭建了多旋翼无人机数字孪生仿真平台。Sita 等[3]通过ROSUnity3D 来模拟和执行工业工程监控任务,实现了工业机器人过程监控系统。Ma 等[4]通过结合ROS 与Qt 来实现协调行为仿真、半物理仿真和全硬件实验之间的无缝过度,研发了多机器人系统模拟器。高帆等[5]通过Unity3D 实现对虚拟工业机器人的姿态控制。张朝兴等[6]通过ROSUnity 来实现虚拟机器人和真实机器人交互移动控制。陈修龙等[7]结合仿真技术验证机器人机构动力学建模的正确性。这类系统将虚拟仿真技术与机器人技术结合应用于科研、工业领域,并且取得了不错的成效。
近年来,将虚拟仿真技术结合学科用于教育领域也逐渐成为热点。杨鑫科等[8]基于Unity3D 开发应用于反恐排爆机器人的虚拟实验教学系统。费杰等[9]基于Unity 设计一套DR 可交互仿真教学工作站,对医学实验教学具有重要意义。邓成俊等[10]结合Unity3D 与.Net 技术,通过计算机模拟操作整个检修过程,提升电力施工从业人员的操作技能。王钰明等[11]结合应用虚拟仿真技术使用虚拟车取代实车测试,提高了实验教学效果。丁毓峰等[12]基于Unity3D 设计机电产品虚拟拆装实验系统,在工程类实验教学中取得良好效果。吴可玉等[13]采用Unity3D与3dmax 实现虚拟现实消防沉浸式体验,可辅助大众进行消防训练与安全教育。黄福钰[14]基于Unity3D 开发了以戚继光抗倭为主要内容的历史类RPG 教育游戏“抗倭风云”,实现教育游戏教育性与游戏性有效融合。靳雁霞等[15]基于Unity3D 开发算法类演示系统,生动形象地将算法理论演变成实际实例,收获了更好的教学效果和更大的教学意义。尹立航[16]采用Unity3D 和3Dmax开发了通信基站模拟仿真系统,提升了实训教学效果。这类系统将虚拟仿真技术结合各类学科进行研发,有效提高了教学质量,但仍然缺少应用于机器人方向教育的虚拟实验平台。
本文基于现有前沿虚拟仿真技术,针对线上线下混合式实验教学中存在的难点,通过Unity3D 引擎与ROS 机器人操作系统相结合,设计了一套虚实结合的实验教学平台,能够实现实体机器人与虚拟场景的交互,在仿真场景里完成机器人的实验教学工作。
基于Unity3D-ROS 的机器人技术实验教学平台的主要目标是让学生在使用实体机器人操作之前,先在虚拟软件上完成大部分的设计,从而将机器人教学中机器人设计的难点尽可能地在软件中得以处理和解决。同时,平台对学生的操作过程进行实时的记录和评估,以便教师及时发现问题并给予学生指导。
完整的实验涉及三个阶段,根据学生在校情况可以选择开展哪些阶段的实验。
第一阶段,在仿真场景和仿真机器人的系统中,设计和调试机器人控制系统(ROS),目标是让机器人控制系统达到设计要求,为第二阶段在仿真环境下机器人虚实联调做准备。
第二阶段,在仿真场景和实体机器人的情况下,调试机器人控制系统与机器人实体部件之间协同工作的效果,目标是在第一阶段的基础上,进一步设计和调试机器人控制系统(ROS)和验证机器人实体部件协同工作是否达到设计要求,为第三阶段在真实场景下调试实体机器人整体系统做准备。
第三阶段,在真实场景和采用实体机器人的情况下进行整体系统调试,目标是验证上述两个阶段的设计是否达到最终目标。
机器人技术实验教学平台的实施流程图如图1所示。
图1 机器人技术实验教学平台实施流程图
通过上述三个阶段,能够让学生先在虚拟环境里设计与调试机器人控制系统,逐步脱离仿真环境,迭代验证机器人软件和硬件的设计是否达到标准,最后完成设计一台实体机器人。通过这种方式,达到了机器人线上线下混合式教学的目的,相比传统方法,能极大地提高机器人教学效率、节约成本、减少损耗。
在Unity3D 里同等比例仿真了机器人与场地,并仿真了激光雷达、里程计与摄像头。给仿真里程计加入噪声模拟真实里程计的累积误差,能够提供虚拟机器人的位姿信息。使用仿真激光雷达在虚拟场景进行扫描,以提供机器人操作系统所需要的激光雷达数据。使用仿真摄像头能够提供虚拟场景的图像信息。
在仿真场景与仿真机器人部件的基础上,第一阶段使用Unity3D-ROS调试机器人控制系统的具体流程图如图2所示。
图2 机器人技术实验教学平台第一阶段模拟流程图
第二阶段使用Unity3D-ROS调试实体机器人的具体流程图如图3所示。
图3 机器人技术实验教学平台第二阶段模拟流程图
第一阶段,在仿真场景和仿真机器人部件的情况下,使用Unity3D调试机器人控制系统。
Unity 端使用仿真激光雷达和仿真摄像头为机器人提供仿真场景信息,使用仿真里程计提供Unity 虚拟机器人的位姿信息。ROS 端利用这些信息构建地图和目标识别,给出指令控制Unity 虚拟机器人在虚拟场景里运动,与虚拟场景发生交互。另外,在第一阶段需要给仿真场景加入运动惯性,使物理模型尽可能地贴近真实场景,为第二阶段仿真环境下机器人虚实联调做准备,数据通讯图如图4所示。
图4 仿真环境下调试机器人控制系统数据通讯图
第二阶段在第一阶段基础上保留仿真场景,使用实体机器人部件替换仿真部件,使用Unity3D 调试实体机器人。其中,部分器件可以使用真实部件,也可以使用虚拟部件,能够充分地对每一个部件的性能进行调试。
在Unity 端使用仿真激光雷达和仿真摄像头为机器人提供仿真场景信息。ROS 利用这些信息在一片空地上构建地图和目标识别,控制实体机器人在真实场地上运动,同时控制Unity 虚拟机器人在虚拟场景里运动,实现虚拟场景和真实运动的融合。由于实体机器人与虚拟场景无法发生物理碰撞,因而,虚拟场景中与实体机器人接触部分需要与真实场景一致,非接触部分例如墙壁、障碍物、远程攻击目标等则为虚拟构件。通过第二阶段的迭代测试,进一步设计和调试机器人控制系统(ROS)和验证机器人实体部件协同工作是否达到设计要求,为第三阶段在真实场景下调试实体机器人整体系统做准备。数据通讯图见图5。图6 所示场景中实体机器人与Unity虚拟机器人正在同步运作。
图5 仿真环境下机器人虚实联调数据通讯图
图6 实体机器人与Unity虚拟机器人同步运作
第三阶段,完全脱离虚拟仿真技术,按照仿真场景比例布置出真实场景,使用实体机器人并开启真实激光雷达与摄像头,在真实场景下调试机器人整体系统。验证前面两个阶段的设计是否达到最终目标,若达到最终目标则调试实体机器人的参数达到性能最优的状态,否则返回之前的阶段进行完善。
实验系统由服务器和学生客户端构成,如图7所示。教研室给学生们讲授理论知识,实验室给学生们提供实物实验的机会,配备Robo-Master AI 机器人多台,供学生线下进行实物操作。
图7 实验系统总图
服务器用于管理学生信息、课程任务和实验结果。仿真软件运行在学生机上,基本配置建议为CPU Intel i5,显卡GTX 1660Ti,内存16 G 以上,系统使用Window 10。
ROS 编程采用C++和Python 语言,系统是Ubuntu 18.04,虚拟阶段可以在Window 10 下安装虚拟机运行,实物阶段则将虚拟阶段在ROS设计的程序上传到实体机器人车载电脑上运行。
这是第一阶段实验,在纯虚拟环境下进行。学生需要设计ROS 程序根据周围虚拟障碍物进行路径规划,并给出速度指令控制Unity 虚拟机器人在虚拟场景里运动。
服务器设置了多个任务供学生选择,包括:①设计ROS 程序控制虚拟机器人在有障碍物的虚拟场景里按照规定路径点完成巡航;②设计ROS 程序控制虚拟机器人在虚拟场景里找到所有指定的目标;③设计ROS 程序控制虚拟机器人与AI机器人对战,等等。
这是第二阶段实验,在虚拟环境和真实环境融合的情况下进行。在第一阶段设计的ROS程序需要上传到实体机器人的机载电脑上,由它给出速度指令控制实体机器人在实验场内运动,真实机器人运动的信息被同步到Unity3D,Unity3D 中的虚拟机器人与实体机器人同步运动,在虚拟机器人运行过程中,会将在虚拟场景中感知到的障碍物和目标信息传递给实体机器人,让实体机器人感知到虚拟场景的避障物和目标,从而做出相应的避障动作。
在这个阶段,学生可以初步验证在第一阶段设计的ROS 程序是否能有效地控制真实机器人。由于是虚拟避障物,可以方便地添加和摆设虚拟场景,并且撞击也不会损坏实体机器人。
这是第三阶段实验,将实体机器人放置在真实场景中,由机器人自带的激光雷达等传感器去识别真实的障碍物和目标。在这个阶段,学生可以最终验证前两个阶段设计的ROS 程序是否能有效地控制真实机器人。
实验表明,实体机器人与Unity 虚拟机器人定位误差在可接受的误差范围内(实体机器人与Unity 虚拟机器人在8 m×4 m 的场地内同步运动,平均定位误差为±20 cm),基本做到虚实融合,学生的实验体验较好。
本文采用Unity3D-ROS相结合,设计了一个虚实融合的机器人实验教学平台,既满足了线上实验的需要,又提高了线下实验的效率,降低了对实物设备的依赖。该实验平台在我校2021年秋季机器人技术课程中初步应用,达到了预期效果。但在应用过程中也发现了一些不足,例如虚拟运行与实际运行效果仍存在一定的偏差,后续在物理建模方面需要进一步研究,在实验平台参数化方面也需要进一步设计与完善。