木星机器人标准版 – 技术参数
可编程人工智能教育机器人硬件平台
本项目设计并实现了一套可扩展、易于维护的机器人硬件平台。平台结构图如下所示:
运动模块 和 导航模块
运动模块:机器人平台采用了Yujin Robot开发的Kobuki室内移动机器人底盘。该机器人底盘自带的接口控制板有32个内置传感器,包括红外传感器、碰撞传感器、跌落传感器、悬崖传感器、陀螺仪等。底盘由2个带码盘的直流电机驱动,最大运行速度约50cm/s,最大旋转速度160度/s,能通过不超过12mm的一般室内障碍物。该底盘可以负重5公斤,能够持续工作3小时以上。
导航模块:本平台采用了3D立体视觉相机作为导航传感器,为机器人提供三维空间下的深度信息。3D立体视觉相机的深度感应模块所使用的了光编码技术(Light Coding),通过独立的红外激光发射模块产生一张红外激光编码图(IR Light Coding Image),形成肉眼不可见的红外线斑,发射到空间中,在空间中的物体上加上标记。由于散斑具有高度的随机性,因此空间中任何两处的散斑都会是不同的图案。接收器在截取空间中的红外线影像后,把影像交给专用图像处理芯片进行计算,算出深度图。
基于Kobuki室内移动机器人底盘和3D立体视觉摄像机,本项目的机器人平台实现了基于GMapping的机器人导航建图算法和基于AMCL的室内机器人定位算法。根据事先建立的室内环境地图和预先定义的导航点,可以引导机器人沿着特定路线行进。行进过程中,机器人还会实时避让出现在规划路径上的障碍,沿着重新规划的路径到达导航目标点。
利用机器人顶部安装的第二台3D立体视觉摄像机,本项目的机器人还可以实现在已知甚至未知环境中的跟随和自主导引任务。通过与底层运动平台的整合,本项目实现了机器人在未知环境中跟随操作者的实时地图更新。这项功能对于家庭服务机器人在家居环境中与人的安全、有效互动具有非常重要的意义。
语音合成模块
语音合成模块:语音合成模块由声音采集与输出两部分组成。为了实现接近自然语言交互的效果,该平台选择了具有单指向心型声音采集范围的专用麦克风。相对于全指向的麦克风,单指向麦克风能够有效的滤除来自机器人侧后方的环境噪音,更准确的采集操作者的语音。同时,该麦克风还具备拾音灵敏度调节和低切滤波功能,能够比较准确的采集人声,避免其它低频杂音对语音识别效果的影响。声音输出采用了体积小、输出功率高的小型音箱。该音箱输出功率7W,阻抗4Ω,信噪比大于75db,能够在比较嘈杂的环境中较清晰的输出自然语音合成效果声音。
为了提高语音识别效率,本项目的语音识别系统采用了一种机器人优先监听激活关键字的策略。一旦识别出激活关键字,就切换到专用搜索来识别实际的命令。一旦命令被识别,机器人就可以切换到语法搜索来识别确认,然后切换回关键字监听模式来等待另一个命令。
在自然语言识别方法上,本项目使用了基于Sphinxbase库的CMU Pocket Sphinx语音识别模型。本项目的语音识别系统使用最新版本“sphinxbase-5prealpha”构建应用程序。使用gstreamer自动将输入的音频分割成要识别的语音,并提供启动和停止识别的服务。语音识别系统需要特定的语言模型和字典文件,可以从自然语句的语句语料库中自动构建这些模型和文件。对于文本到语音转换(TTS),本项目机器人使用了CMU Festival系统和ROS Sound_Play软件包。
为了提高在噪声环境下的语音识别精度,在CMU Pocket Sphinx语音识别模型中使用了Sphinxtrain工具来训练在噪声环境下的句子录音。Sphinxtrain工具通过使用大量上述记录作为数据库来提取嘈杂环境的声音。使用获得的参数来代替原始参数,以更好地进行语音识别检测。
声源定位。除了人机语音交互,本项目还探索了使用HARK方法确定在机器人虚拟预测区域内说话的人的可能。该方法将有助于机器人在类似于餐厅、商场、机场等开放公共场所中,听到特定语音后确定说话人方位。
图像处理模块
图像处理模块:图像处理需要实现对目标的实时分类和识别,要求图像传感器具有较好的动态性能和较高的图像质量。同时,为了配合机械臂实现三维空间下的物体抓取、操作等交互功能,也需要立体视觉成像能力。综合两方面需求考虑,机器人平台使用了与导航模块一样的3D立体视觉相机。在做图像处理任务的时候,使用彩色图像采集功能,可以完成人脸识别、颜色识别、目标跟踪等任务;在做机械臂三维空间观测时,能够利用深度信息对机械臂在机器人体坐标系下的相对位置进行观测和测量,从而完成指引机械臂抓取物体等功能。
物体识别系统。该机器人使用YOLO(You Only Look Once)方法来检测物体。在模拟仓储物品识别的任务中,机器人使用3D立体视觉摄像机进行货架检测、桌子检测和目标检测。在实际识别之前,机器人对预先定义的对象进行拍照,然后通过为每个图像添加注释标签和边界框来进行标记。机器人需要捕捉不同角度、不同光照条件以及不同背景下的图像,以确保实际使用的模型符合复杂的真实工作环境。
人体姿态检测。在人体姿态检测系统中,本项目使用卡耐基梅隆大学的OpenPose作为骨架检测方式。它是一个用于身体、面部、手和脚估计的实时多人关键点检测库。OpenPose需要一幅RGB图像,然后返回人员数量及其骨架位置。为了得到人体的指向,需要知道手腕关节和肘关节的三维坐标。将OpenPose结果与点云库(PCL)相结合,得到机器人顶端3D立体视觉摄像机坐标系中所描述的位置,然后利用TF矩阵将其转换为地图坐标系。此外,空间矢量法被用来计算人指向地面上的哪个点。
机械臂模块
机械臂模块:机械臂是机器人实现与空间中存在的物体交互的重要手段。该机器人平台在选择机械臂时,充分考虑了运动模块承载能力、抓取重量、空间操作范围等多种因素,安装了一套由高精度码盘舵机驱动的5自由度机械臂。该机械臂总重量约为450g,角度精度0.29°,静止力矩1.5Nm。安装在机器人平台上距地高度约45cm,手臂三维空间活动范围约为40cm半径。为了更好的完成对水杯、饮料瓶等物体的抓持动作,利用3D打印技术制作了特殊的手掌造型。
本项目使用了MOVEIT!作为机械臂软件框架,将机械臂控制与颜色检测的目标检测和图像处理的目标识别相结合,实现了对目标的操作。一旦识别出目标,通过三维点云进行目标定位,得到目标的位置,并进行运动学逆解算,指引手臂向目标运动,并完成抓取。另外,通过使用MOVEIT!,还可以规划机械臂运动,实现躲避障碍物,达到避免与周围物体碰撞的目的。