基于ROS和英特尔实感摄像头的SAWR项目涵盖了其中的前三项要求。它还可以作为一个平台来探索如何满足最后一个要求:人际互动。
为了满足上述要求,典型的机器人软件堆栈由许多模块组成(见图1)。在堆栈的底部,传感器硬件驱动程序(包括SAWR中的英特尔实感摄像头驱动程序)将环境信息传送到一组传感模块。这些模块识别环境信息以及人类交互。融合了多个信息源来创建各种模型:世界模型、机器人状态估计(包括世界中的位置)和命令输入(例如语音识别)。
计划模块决定机器人将如何行动以实现目标。对于移动机器人,主要目的是从一个地方导航到另一个地方,为此有必要根据当前的世界模型和状态计算无障碍路径。
根据计算的计划,Act模块管理机器人的实际运动。通常,电机控制是该段的主要功能,但其他操作也是可能的,例如语音输出。在执行动作时,机器人也可能不断更新其世界模型并重新规划。例如,如果出现意想不到的障碍,机器人可能不得不更新其世界模型并重新规划其路径。机器人甚至可能会犯错误(例如,它对自己在世界上的位置的估计可能是不正确的),在这种情况下,它必须弄清楚如何恢复。
自主导航需要大量的计算来完成上述任务。某些任务可以卸载到云中,但由于连接和延迟问题,这通常不是一种选择。SAWR机器人可以仅使用板载计算资源进行自主导航,但云仍可用于添加其他功能,例如语音控制(例如,使用AmazonVoiceServices*)。
同步定位和映射(SLAM)是自主移动机器人最重要的功能之一。在典型的实现中,机器人使用占用地图在空间中导航(规划路径)。此地图需要随着环境的变化而动态更新。在低端系统中,此地图通常是2D的,但更高级的系统可能使用3D表示,例如点云。这张地图是机器人世界表示的一部分。SLAM的“定位”部分意味着除了维护地图外,机器人还需要估计它在地图上的位置。通常,此估计使用概率方法;机器人不是单个估计位置,而是保持概率分布,并且最可能的位置用于规划。这使机器人能够从错误中恢复并推理不确定性。例如,如果当前位置的估计值太不确定,机器人可以选择从环境中获取更多信息(例如,通过旋转扫描地标)以优化其估计。
在默认的SAWR软件堆栈中,开源slam_gmapping包用于创建和管理地图,尽管还有其他几个选项可用,例如制图师和rgbd-slam。该模块不断将新的传感器数据集成到地图中,并在旧数据被证明不正确时清除旧数据。另一个模块amcl用于通过将传感器数据与地图进行匹配来估计当前位置。这些模块并行运行,以不断更新地图和机器人位置的估计。图2显示了典型的室内环境和此过程创建的2D地图。
图3显示了SAWR项目的硬件架构。与许多机器人系统一样,该架构由主系统和从系统组成。主机负责高级处理(如SLAM和规划),从机负责实时处理(如电机速度控制)。这类似于动物大脑和脊髓反射如何协同工作。此型号可以使用几种不同的选项,但通常主站使用Linux*系统,从机使用一个或多个微控制器单元(MCU)。
对于主计算机,您可以从各种硬件中进行选择,包括配备英特尔酷睿i5和英特尔酷睿i7处理器的英特尔NUC(请参阅图5)。这种选择为机器人开发提供了最大的性能。您还可以使用用于机器人的OEM板,例如AaeonUP*板之一,用于机器人开发的快速原型到生产。即使是小巧的研扬科技UP核心*也有足够的性能来执行SLAM。主要要求是主板运行Linux。SAWR软件堆栈使用ROS,它在Ubuntu*下运行得最好,尽管可以在其他发行版下安装它,例如Debian*或Yocto*。
以下是SAWR基本移动机器人的规格概述,如图6所示,这是一种易于复制的廉价参考设计(GitHub站点包含用于激光切割您自己的框架的文件)。SAWR软件堆栈可以很容易地适应其他机器人框架。对于这种设计,从属计算机实际上嵌入在Dynamixel伺服系统中。这些智能电机中的MCU负责处理位置传感和速度控制等低级问题,使机器人的其余部分变得更加简单。
电脑:研扬科技主板
摄像头:英特尔实感摄像头
驱动:两个带磁编码器的DynamixelMX-12W*智能舵机
软件:Xubuntu*16.04和ROSKinetic*
车架:激光切割亚克力或POM,Polulo球形脚轮,O形圈轮胎和皮带传动
其他:DFRobot25W/5V电源调节器
SAWR项目的一个独特之处在于硬件和软件都是以开源风格开发的。该软件基于修改和简化开源机器人基金会Turtlebot*堆栈,但添加了使用DynamixelLinux*SDK的自定义电机驱动程序。对于硬件,使用OpenSCAD*对帧进行参数化建模,然后使用Inkscape*转换为激光切割文件。您可以从GitHub下载所有数据,然后使用激光切割机(或激光切割机服务)制作自己的帧。大多数其他零件都可以从五金店买到。详细说明、装配和设置计划可在线获取。
当您为机器人选择OEM板时,例如用于SAWR或任何其他机器人系统的UP板,强烈建议使用主动冷却来获得更高的性能。通常机器人中间件会消耗大量的CPU资源,缺乏CPU资源有时会转化为低质量或低速的自主运动。通过主动冷却,您可以无限期地保持CPU的最高速度。特别是,UP板可以通过主动冷却进行涡轮增压,并且以比没有它更高的时钟速率运行。
您可能会担心主动冷却和更高时钟速率的电源资源。然而,功耗通常不是机器人技术的限制因素,因为电机通常是主要的功率负载。事实上,您可以选择性能更好的UPSquared*,而不是基本的UP板。
另一个问题是内存。绝对最小值为2GB,但强烈建议使用4GB。SLAM系统使用大量内存来维护世界状态和位置估计。请记住,操作系统也需要内存,而Ubuntu倾向于使用大约500MB的内存来做任何事情。因此,4GB系统的应用程序可用空间是7GB系统的1倍,而不仅仅是4倍。
尽管它的名字,ROS不是一个操作系统,而是一个中间件软件堆栈,可以在各种操作系统上运行,尽管它主要用于Ubuntu。ROS支持基于通信节点图的分布式并发处理模型。得益于这种基本架构,您不仅可以在需要时轻松地将同一机器人上的多个处理板联网在一起,还可以使用Wi-Fi*将电路板物理定位到远离实际机器人的位置(但是,性能和可靠性会有所损失)。从知识库的角度来看,ROS拥有一个庞大的社区,其中包含许多现有的开源节点,支持各种传感器,执行器和算法。这及其出色的文档是选择ROS的充分理由。从开发和调试的角度来看,各种强大而有吸引力的可视化工具和模拟器也可用且有用。
本节介绍ROS架构的主要特征。要了解更多信息,请参阅ROS文档和教程。
许多强大的开发和调试工具可用于ROS。以下工具通常用于自主移动机器人。
以下模块通常用于自主移动机器人,SAWR也采用它们。
SAWR由以下子目录组成,如果要使用完整的SAWR软件和硬件包,可以按原样使用这些子目录(参见图13)。您还可以将它们用作带有英特尔实感摄像头的原始机器人的起点。下面还有自定义SAWR堆栈以与其他机器人硬件一起使用的提示。
自主移动机器人是一个新兴领域,但移动机器人技术已经相对成熟。ROS是机器人软件开发的关键框架,它提供了涵盖机器人许多领域的广泛模块。最新版本是Lunar——第12代。机器人技术涉及计算机科学和工程的各个方面,包括人工智能、计算机视觉、机器学习、语音理解、物联网、网络和实时控制,而SAWR项目是开发基于ROS*的机器人技术的良好起点。
Sakemoto是英特尔软件和服务事业部的应用工程师。他负责软件支持,并与嵌入式系统和机器人领域的应用程序供应商合作。在担任现职之前,他曾担任各种移动设备的软件工程师,包括嵌入式Linux和Windows*。