ROS系统玩转自主移动机器人(4)-- 嵌入式硬件平台

摘要:
1、 所谓的嵌入式系统实际上是一种特殊的微型计算机系统,包括嵌入式硬件和嵌入式软件。

一、概述

   所谓嵌入式,其实就是专用的微型计算机系统,包括嵌入式硬件和嵌入式软件两个部分。嵌入式硬件通常是由32位(或以下)的微处理器及其相关外设组成;嵌入式软件则是写入嵌入式硬件的用于实现特定功能的程序。笔者总结了一下,嵌入式具有以下几个方面的特点:

  • 专用性。(一般是面对特定应用场景进行专门开发)
  • 实时性。(虽然嵌入式微处理器一般计算能力不高,但是因为“专片专用,定向开发”,因此具有良好的实时性)
  • 可靠性。(嵌入式系统一般直接和执行机构或底层设备打交道,要求代码质量高、简洁、稳定。)
  • 经济性。(嵌入式系统一般价格都比较低,小微型电子设备)

 二、嵌入式硬件的开发流程

ROS系统玩转自主移动机器人(4)-- 嵌入式硬件平台第1张

 图1 嵌入式硬件发发流程

  嵌入式硬件开发的一般流程如图1所示,这里只是笔者根据以往经验进行简单的总结,未必是用于所有的开发情况。第一步就是确定产品的设计需求,这里是指经过充分讨论和评审的产品设计需求,然后开发人员根据设计需求进行分解,例如不同的功能需求可能对应的不同的硬件模块。

  然后,根究需求进行整体方案设计和评审,这里的整体方案设计包括主控芯片的选型、功能模块芯片的选型、供电方式等,整体设计方案细化程度越高,后续将会更加轻松。

  进一步,就是进行原理图设计,这里是对上一步骤的进一步细化,原理图的绘制主要包括: 确定各个元器件的电气连接、相关模拟和数字电路设计等等,图2是笔者以前绘制的一块舵机控制板的部分原理图截图,主控芯片为C8051F系列。

ROS系统玩转自主移动机器人(4)-- 嵌入式硬件平台第2张           ROS系统玩转自主移动机器人(4)-- 嵌入式硬件平台第3张           ROS系统玩转自主移动机器人(4)-- 嵌入式硬件平台第4张

图2. 笔者曾经绘制的某舵机控制电路原理图部分模块截图

  进一步,根据原理图设计进行PCB布局布线,例如:采用确定几层板、电子元器件布局、连接线的走线方式和分布方式、安装孔位和定位空位设计等(如图3所示为笔者以前项目中设计的舵机控制板的布线和样板)。原理图设计和PCB布局布线最考验一个硬件设计工程师的技术功底,例如晶振应该如何放置、如何避免电磁干扰、线宽和线间距如何选择、如何避免电流耦合、时钟电路如何布局等等,这一切都直接影响硬件的稳定性。这一步完成度高可以大大降低后续的测试和优化迭代的工作量。

   进一步,制作样板并根据设计需求编写各个功能模块得测试程序进行功能验证。这一步就需要嵌入式硬件工程师也必须有一定的软件基础,因为自己设计的硬件电路板首先就要自己来测试相关的功能。

ROS系统玩转自主移动机器人(4)-- 嵌入式硬件平台第5张             ROS系统玩转自主移动机器人(4)-- 嵌入式硬件平台第6张

图3. 前述舵机电路板的布线和样板示例图

  进一步,如果应用场景比较严苛或要求较高,好需要做电路板的EMC测试和硬件冲击振动试验。EMC是指电测兼容性测试,它包含EMI(电磁干扰)和EMS(电磁敏感性)两个方面,写到这里想到母校的蒋全兴老教授(电磁兼容元老级人物),记得当年老爷子年近古稀还坚持每天早早的去实验室,而不是享受退休生活,可能到那个年纪还能做点研究就是幸福的吧(跑题了。。。-_-||)。冲击振动试验是指电路板安装后要能承受一定的冲击振动而不会失效,例如军工行业、高铁地铁、汽车电子等领域用到的硬件一般都要做冲击振动试验以防运行时受冲击而失效。

  最后,就根据上述的各种测试和验证进行优化迭代,以满足笔者在上一部分提到的专用行、实时性、可靠性和经济性的特点。

tips:

  1.硬件工程师一定要会阅读芯片英文版的datasheet;

  2.硬件工程师要有一定的动手能力,起码要会用电烙铁手动焊接TQFP100封装的MCU。

三、本开源机器人的硬件系统介绍

   博文的前半部分简单介绍了嵌入式硬件电路设计的流程和一些基础知识,下面考试介绍本开源机器人的的嵌入式硬件部分的组成。为了快速开发和节约成本,这里的机器人嵌入式硬件全部采用现有的电路板进行搭建,以便降低成本和上手的难度,当然,如果读者感兴趣的话还是可以自己绘制几块电路板来练练手,体会一下从设计到制版,从手动焊接电路板到软件调试的整个过程,其间一定会获得很多成就感和乐趣。

ROS系统玩转自主移动机器人(4)-- 嵌入式硬件平台第7张                   ROS系统玩转自主移动机器人(4)-- 嵌入式硬件平台第8张

图4. 本开源机器人的硬件电路组成框图及实物分布图

  闲话少说,图4就是本开源机器人的硬件电路组成框图,下面我们分别介绍一下:

  1. 锂电池(如图5所示)

    这里采用的锂电池是24V的,电池容量为10Ah,这里我们电池容量也是经过一定的选型计算的,上一篇博文在介绍电机选型时提到要求机器人可以连续运行10小时,因此电池的选型过程如下:

    电池电压U = 24V 连续运行Tim = 10 h

    单个电机额定工作环境下位3W,两个电机为6W,算上嵌入式硬件功耗共计为P = 10W。

    电池容量为:

    K = P/U · Tim = 4.1667 Ah

    这里取安全系数为2,我们选择电池容量需要大于等于4.1667x2 = 8.333 Ah,因此最终选择的电池电压为24V,容量为10Ah。

 ROS系统玩转自主移动机器人(4)-- 嵌入式硬件平台第9张

图5. 锂离子电池

  2. 直流稳压模块(如图6所示)

    直流稳压模块是为了稳定电路板和电机的供电电压,防止电池直接输出的电压不稳定而导致电路板损坏或电机控制精度下降。电池引出的24V电源分别介入两块直流稳压板,其中一块稳压板稳定输出22V给电机供电,另一块稳定输出12V给各个电路板供电。

ROS系统玩转自主移动机器人(4)-- 嵌入式硬件平台第10张

图6. 直流稳压模块

  3. STM32F407开发板(正点原子探索者)(如图7所示)

  硬件系统的主控板是一块STM32F407开发板,该开发板集成了很多个功能模块,其中我们要用到的有:

  • 通信模块。(RS232、USART等)
  • PWM信号输出。
  • 传感检测模块。(编码器、超声波测距等)
  • 陀螺仪。
  • 等等

  具体的功能及代码后续的博文会分章节详细介绍,关于该开发板的详细资料查看:开发板资料传送门

ROS系统玩转自主移动机器人(4)-- 嵌入式硬件平台第11张

图7. STM32F407开发板

  4. 直流电机驱动模块(如图8所示)

  该驱动模块是一款H桥直流电机驱动板,独立两路电机接口,每路最高支持120W电机,使用P、N互补MOS管实现H桥,具体使用参见:手册传送门。我们用这一块板子实现两个电机的驱动,正合适。

ROS系统玩转自主移动机器人(4)-- 嵌入式硬件平台第12张

图8. 直流电机驱动模块

  这里我们介绍了主要的几个模块,其他相关模块后续会结合嵌入式软件的介绍一起进行。OK,本篇到这里吧。

 <-- 本篇完 --> 

欢迎留言、私信、邮箱、微信等任何形式的技术交流。

作者信息:

名称:Shawn

邮箱:zhanggx0102@163.com

免责声明:文章转载自《ROS系统玩转自主移动机器人(4)-- 嵌入式硬件平台》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Activiti 常见操作(二)shockwave flash has crashed(Flash 插件崩溃导致页面中的flash不显示)怎么办下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

ABB机器人 带参数例行程序

1、带参数例行程序概念 ABB机器人在建立程序时候,可以把程序建立为三类,分别是普通程序(Procedures)、功能程序(functions)和中断程序(trap)。带参数例行程序属于普通程序,即在编写例行程序时,可以附带参数。 2、带参数理性程序使用说明 (1)带参数例行程序的参数个数,可以有多个参数,参数的数据类型可以不相同。 (2)带参数例行程序属...

第3章 编写ROS程序-2

1、发布者程序 在本节中,我们将看到如何发送随机生成的速度指令到一个turtlesim海龟,使它漫无目的地巡游。这个程序的源文件称为pubvel,这个程序展示了从代码中发布消息涉及的所有要素。 其代码如下: pubvel和hello程序主要的区别都是由于发布消息的需求导致的。 包含消息类型声明     每一个 ROS 话题都与一个消息类型相关联,每一个...

机器人学——1.0-位置与姿态概述

机器人和计算机视觉中的一个基本要求是能够表示物体在环境中的位置和方向。这些物体包括机器人、摄像机、工件、障碍物和路径。 空间中的点是数学中一个熟悉的概念,它可以被描述为一个坐标向量,也被称为一个约束向量,如图 (a) 所示。向量表示点相对于某个参考坐标系的位移。一个坐标系或笛卡儿坐标系统,是由一组正交轴构成的,这些轴相交于一个被称为原点的点。更多时候我们需...

ROS向节点传递参数

ROS的节点有很多中调用方式,包括rosrun,launch,直接运行等,向节点内传递参数的方式也有很多。 1. rosrun + 参数服务器传递 ros::init(argc, argv, "imu2txt"); ros::NodeHandle nh("~"); std::string file_name; nh.param<std::string...

AD16快捷方式和常规设置

1.快捷方式: 快速修改丝印位置。选中元件 按快捷键A然后按P。 T+i :差分等长 T+R :蛇形走线 M+G :修改铜皮 多根走线(选中要走的几根线 按快捷键T+T+M 几根可以同时走线。P+M) 调整元件坐标移动(选中元件 按一下M 选择通过X、Y移动选择。) shift+G:显示在线长度 抓取中心:shift+E AIT+鼠标左键:原理图快速寻找...

(转)用Eclipse编译你的ROS程序

原地址: http://blog.csdn.net/sujun3304/article/details/18572017 好了,理解了系统各个组件的含义后,还是直接进入程序真刀真枪的从实践中学习吧! 不过首先呢,公欲善其事必先利其器,如果你向我一样不是vim和emacs的粉丝,喜欢eclipse的图形界面的话,这篇文章就是为你准备的。 第一步: 首先确保...