1. HRMRP简介


        HRMRP(Hybrid Real-time Mobile Robot Platform,混合实时移动机器人平台)机器人是我在校期间和实验室的其他小伙伴一起从零开始设计并开发的一款机器人平台,其中大部分扩展电路、驱动和ROS相关的底层功能都是我们自己做的。该机器人平台具有软硬件可编程、灵活性强、模块化、易扩展、实时性强等特点,机器人的整体结构如下图所示。

      HRMRP具备丰富的传感器和执行器,在该平台的基础上,我们设计并实现了机器人SLAM、自主导航、人脸识别、机械臂控制等功能。在设计开发完成之初,我们参加了2013年的OpenHW大赛,并且获得了全国一等奖,此外还在中国智能机器人学术会议上发表学术论文一篇,获得了会议的十佳论文奖。这个机器人陪伴我走过了研究生的三年时光,接下来的几篇博客,我会详细介绍HRMRP从设计到实现方面的很多细节。就机器人的性能来讲,很多方面是超越已有同等级的很多机器人的,但是由于我们开发能力、时间的限制,并没有在最终的应用中充分发挥他的潜力,这也给我留下了一些遗憾。
      废话不多说,先让大家对该机器人有一个整体的印象:
      演示视频:OpenHW大赛机器人演示

2. HRMRP的总体架构


        如下图所示,我们根据层次化、模块化的思想,设计的HRMRP的总体架构。

3. 硬件层


3.1 机械平台

       HRMRP 主体结构为铝合金材质,尺寸为 316mm×313mm×342mm (高×宽×长),装配两个驱动轮与一个万向轮。驱动轮由两个 30W 的直流电机带动,转速可达 83 转/分钟,机器人最快速度 1.5m/s。HRMRP 还装有一个六自由度机械臂, 可以完成三维空间内的夹取操作。 

3.2 控制平台

       嵌入式系统具备小型化、低功耗、低成本、高灵活性等显著的特点, 电子技术的 发展,也促使可编程门阵列FPGA在嵌入式系统中 得到了越来越广泛的应用,很大程度上改善了嵌入式系统硬件的灵活度与繁琐计算的 实时化。 HRMRP的控制平台即基于 Xilinx 最新一代集成 FPGA 与 ARM 的片上系统 (System-on-Chip,SoC)——Zynq。 
       Zynq 由处理系统(Processor System, PS)与可编程逻辑(Programmable Logic, PL)两部分组成。其中 PS 基于 ARM Cortex-A9 双核处理器构建,包含常用的外设接口,例如网络、 USB、内存控制器等。而 PL 由 Xilinx 的 7 系列 FPGA 构成,支持动 态重配置,可以使用 Verilog 语言编程使用。在HRMRP 中,PS通过操作系统控制所 有功能正常有序的实现,而 PL作为协处理器一方面可以对复杂的运算并行加速处理, 另一方面可以进行 I/O 接口扩展,为多传感器和执行器设计统一的接口,提高系统硬 件配置的灵活性。


3.3 传感器系统

       在机器人核心传感器的选择上, HRMRP使用了高性价比、高集成度的微软 Kinect 传感器。 除此还装配有超声波、加速度、里程计、陀螺仪等多种传感器, 确保机器人 平台可以采集到丰富的传感信息。

4. 驱动层


       驱动层的主要工作是采集或预处理硬件层的数据,下发操作系统层的指令,为底层硬件与上层功能模块提供相应的数据传输通道。由于我们采用的“ARM+FPGA”异构控制平台,为配合硬件层硬件功能,驱动层也分为两部分,分别放置于硬件的PS端和PL端。
       PS端主要驱动连接到ARM处理器的外设,例如通过PS中的OpenNI驱动 Kinect, 并且提供 PL 端到 PS 端的接口。而在PL端中,利用可编程硬件的灵活性和并行处理能力,来进行 I/O 扩展与算法的硬件加速, 如下图所示。

       在I/O 扩展方面,在传统的设计实现当中,由于种类繁多的传感器、 执行器对接口的要求各不相同,会占用大量 I/O 资源,增加处理器的负担。而在HRMRP的ARM+FPGA系统当中,通过定义一组标准的硬件接口, 连接传感器和电机等外设,可使用编程逻辑取代繁杂的电路连接工作,满足各种不同需求的硬件外设。
       在硬件加速方面,一般来说PS端适合常用接口的驱动、网络数据的处理等功能,而PL端适合于规律性的算法处理,在HRMRP中主要负责Kinect的数据预处理工作(这里我们将OpenNI中的部分代码放入FPGA中进行加速)。PS与PL相互配合,提高了系统数据处理的实时性。

5. 操作系统层


        操作系统层是机器人平台的控制核心,集成了机器人的功能模块,负责行为控制、 数据上传、指令解析、人机交互等功能。为与 ROS 通讯接口保持一致,使用Ubuntu12.04作为操作系统,运行于Zynq的PS端ARM处理器之中。ROS为用户的不同需求提供了大小和功能不同的多种安装包,为了减少ARM端的执行压力, HRMRP编译移植了仅包括 ROS 基本通讯机制的核心库。继承了ROS的优势,机器人平台具备ROS通讯以及功能包运行的能力,与上层网络指令无缝连接,结合开源软件库,极大的丰富了机器人的功能模块与应用范围。 
       HRMRP是一种较为典型的高性能、低成本机器人平台。与现在研究和应用中使用较为广泛的TurtleBot、 Pioneer等机器人相比,HRMRP具有相似的结构与尺寸,同样可以完成多种多样的机器人应用,但是在接口的可扩展性、传感器的丰富度以及成本控制等方面,具备更好的综合性能。
       今天就针对HRMRP的设计写到这里,下篇继续针对细节实现进行分析。

----------------------------------------------------------------

欢迎大家转载我的文章。

转载请注明:转自古-月

http://blog.csdn.net/hcx25909

欢迎继续关注我的博客

ROS探索总结(十六)——HRMRP机器人的设计的更多相关文章

  1. ROS探索总结(六)——使用smartcar进行仿真

    转自:https://www.ncnynl.com/archives/201609/843.html 总结: 一.机器人描述文件三个: 机器人主体body文件: gazebo属性文件: 主文件 sma ...

  2. ABP源码分析十六:DTO的设计

    IDTO:空接口,用于标注Dto对象. ComboboxItemDto:用于combobox/list中Item的DTO NameValueDto<T>/NameValueDto:用于na ...

  3. ROS探索总结(十八)——重读tf

    在之前的博客中,有讲解tf的相关内容,本篇博客重新整理了tf的介绍和学习内容,对tf的认识会更加系统. 1 tf简介 1.1 什么是tf tf是一个让用户随时间跟踪多个参考系的功能包,它使用一种树型数 ...

  4. ROS探索总结(十七)——构建完整的机器人应用系统

           上一篇博客介绍了HRMRP机器人平台的设计,基于该平台,可以完成丰富的机器人应用,以较为典型的机器人导航为例,如何使用HRMRP来完成相应的功能?本篇博客将详细介绍如何将HRMRP应用到 ...

  5. 我的MYSQL学习心得(十六) 优化

    我的MYSQL学习心得(十六) 优化 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据 ...

  6. ROS探索总结(二)——ROS总体框架

    个人分类: ROS 所属专栏: ROS探索总结   一.  总体结构        根据ROS系统代码的维护者和分布来标示,主要有两大部分:      (1)main:核心部分,主要由Willow G ...

  7. ROS探索总结(一)——ROS简介

    转自古-月 ROS探索总结(一)——ROS简介 一.历史 随着机器人领域的快速发展和复杂化,代码的复用性和模块化的需求原来越强烈,而已有的开源机器人系统又不能很好的适应需求.2010年Willow G ...

  8. ROS学习笔记十:URDF详解

    Unified Robot Description Format,简称为URDF(标准化机器人描述格式),是一种用于描述机器人及其部分结构.关节.自由度等的XML格式文件. 一.URDF语法规范 参见 ...

  9. Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十六章:实例化和截头锥体裁切

    原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十六章:实例化和截头锥体裁切 代码工程地址: https://git ...

随机推荐

  1. Shell编程-项目部署(一)

    由于实际工作中经常用到需要部署项目,比较麻烦,今天记录下如何利用shell脚本完成自动部署的工作,毕竟不是专业的运维出身,写的不好,还请勿喷_^o^_ 今天以部署Django项目为演示,进行部署项目, ...

  2. ●BZOJ 4310 跳蚤

    ●赘述题目 给出一个字符串,要求分成k个子串,然后求出每个子串的字典序最大的子串(我称它为子子串),要使这k个子子串中的字典序最大的那个串(即魔力串)最小.输出该魔力串. (本题个人感觉很好,比较综合 ...

  3. bzoj2753[SCOI2012]滑雪与时间胶囊 最小生成树

    Time Limit: 50 Sec  Memory Limit: 128 MBSubmit: 2843  Solved: 993[Submit][Status][Discuss] Descripti ...

  4. VB6工程在Win10系统打开提示MSCOMCTL.OCX无法加载

    解决办法: 修改.vbp文件中的 00F8754DA1}#2.1#0; MSCOMCTL.OCX 改为 00F8754DA1}#2.0#0; MSCOMCTL.OCX 中间的2.1 改为 2.0

  5. A Problem-Solving FlowChart || 如何解决编程问题

    This is from book Cracking the coding interview, Gayle Laakmann Mcdowell. The flowchart can be used ...

  6. Python作业之购物车

    作业之购物车 购物车的要求如下: 输入总金额 选择购买的商品,金额足够时,把选择的商品添加到购物车,金额不足时,进行提示,商品将不会添加到购物车 随时可以退出程序,同时输出已购买的商品 具体代码如下: ...

  7. TeamViewer 服务队列网页怎么打开?有什么用?

    熟悉一款软件,除了要熟悉它的界面,还应该熟悉它的网站.可能会有很多人说,网站我当然知道了.但是TeamViewer的服务队列页面你真的熟悉吗?所以,今天小编就带大家深入的了解一下TeamViewer服 ...

  8. 春招实习面经分享(已拿到腾讯春招Offer)

    十分幸运地收到了腾讯的Offer..回来报答一下各位牛客网的战友们,说起来也是有点运气成分,最后通过腾讯的内推收到了offer!之前也屡遭重创,阿里的内推一面挂了(寒假过早地投简历,电话面试应对地不太 ...

  9. JavaScript数据结构和算法----队列

    前言 队列和栈很像,只是用了不同的原则.队列是遵循先进先出(FIFO)原则的一组有序的的项,队列在尾部添加新元素,从顶部移除元素.最新添加的元素必须必须排队在队列的,末尾.可以想象食堂排队买饭的样子. ...

  10. Tomcat常用参数的配置

    1.修改端口号 Tomcat端口配置在server.xml文件的Connector标签中,默认为8080,可根据实际情况修改. 修改端口号 2.解决URL中文参数乱码 在server.xml文件的Co ...