Pepper机器人如何在ROS系统上使用呢?接下来一起看看吧!!!
Pepper是一款人形机器人,由日本软银集团和法国Aldebaran Robotics研发,可综合考虑周围环境,并积极主动地作出反应。机器人配备了语音识别技术、呈现优美姿态的关节技术,以及分析表情和声调的情绪识别技术,可与人类进行交流。
Pepper机器人如何在ROS系统上使用
自主导航(Autonomous Navigation)
Pepper机器人关于ROS系统应用科研案例
为了自主导航,机器人需要有一张环境地图,并使用它的里程数和感知能力来估计它在地图上的位置。传统的方法是使用SLAM (simultaneous localization and mapping)利用激光测距仪构建环境的2D地图,然后使用预构建的地图对机器人进行定位。
尽管机器人有3个水平激光传感器来测量它与周围障碍物的距离,但它们提供的点很少,这使得使用这种传感器进行SLAM或定位是不切实际的。Pepper上的激光只用于避免与障碍物碰撞。因此,我们使用3D传感器来获取深度图像,并将其转换为模拟的2D激光扫描。转换激光扫描然后可以用于2D SLAM,定位和导航。也可以旋转头部来增加模拟激光扫描的视野。
用于在Pepper上使用ROS运行本地化和导航的软件体系结构(如下图所示)有一个中心元素,即ROS接口。ROS接口在NAOqi中注册为一个模块,然后它通过NAOqi API进行调用,以读取Pepper的传感器并向底座发送速度命令。
在从Pepper读取传感器数据后,ROS接口使用标准ROS类型发布深度图像和测程仪。另一个节点订阅深度图像并将其转换为激光扫描。ROS社区提供了一个简单的包,深度成像到激光扫描,可以执行这种转换。然而,这个包适合从固定和水平安装的3D传感器获得的图像,在一个较低的高度上,使它们能够容易检测在地上的障碍物。
Pepper机器人中用于ROS定位和导航的软件架构,ROS节点用蓝色表示,箭头表示主题上的通信。
由于Pepper的3D传感器位于头部,可以移动和改变方向。因此,我们改用了另外两个包,第一个包从深度图像转换为点云(depth image proc),第二个包从3D点云创建2D激光扫描(pointcloud to laserscan)。最后一个节点可以将其参考帧的3D数据转换到其他目标帧,在点的最小和最大高度进行灵活地转换。它还允许我们在机器人的头部向下倾斜时进行转换。
定位和导航(Localization and Navigation)
在发布了激光扫描和测程技术后,加上地图服务器给出的地图,机器人可以使用自适应蒙特卡洛定位的AMCL在地图帧中进行定位。最后,利用地图、定位后的姿态估计和避障激光扫描,机器人可以自动导航到目标位置。这个目标位置可以通过rviz之类的可视化工具给出,甚至可以通过用户请求的语音交互间接给出。导航节点找到从当前位置到目标位置的最优路径,同时避开地图中的障碍物和导航时第一次看到的障碍物。最后,导航节点还会找到应该发送给机器人的速度命令,以便机器人遵循计划的路径。ROS接口然后通过将标准ROS类型的velocity命令转换为NAOqi的函数调用来关闭循环,以便发送命令。