还记得哪种硬件适用于哪种场景吗?GoPiGo3板用于连接传感器和执行器,而Raspberry Pi用于计算任务。在这里详细介绍这些内容。
这种定制板(https://www.dexterindustries.com/GoPiGo/learning/hardware-port-description/)满足控制器所预期的一般需求:
简要解释一下前面的要点列表中提到的输入/输出接口协议。SPI是一种总线,用于在微控制器和外部设备(此时为传感器)之间发送数据。它使用独立的时钟和数据线,以及一条选择线来选择要与之通信的设备。产生时钟的连接端称为主机,在本例中为Raspberry Pi,另一端称为从机,即GoPiGo3板。这样,两块板是同步的,因此通信形式比异步串行要快,而异步串行是异步电路板(如Arduino)中的典型通信协议。
可以在网址https://learn.sparkfun.com/tutorials/serial-peripheral-interface-spi找到更多关于SPI协议的简易教程。GoPiGo3在SPI上与Raspberry Pi的通信是通过接口进行的,可以在图1-4的GoPiGo3板的顶部看到。这种接口只需要40个GPIO引脚中的5个即可。
图 1-4
图片来自Dexter Industries:https://32414320wji53mwwch1u68ce-wpengine.netdna-ssl.com/wp-content/uploads/2014/07/GoPiGo3-Bottom_annotated-600x441.jpg
为了与设备连接,GoPiGo3板提供了以下功能(图1-5是该板的俯视图):
图 1-5
图片来自Dexter Industries:https://32414320wji53mwwch1u68ce-wpengine.netdna-ssl.com/wp-content/uploads/2014/07/GoPiGo3-Top-768x565.jpg
让我们解释一下这些新概念:
对教育和工业界而言,Raspberry Pi拥有最大的社区,使其成为开发用于机器人或 物联网 (Internet of Things,IoT)设备嵌入式软件的最好单板计算机。图1-6显示了Raspberry Pi 3B+,它是为GoPiGo3供电的最常见型号。
图 1-6
图片来自https://en.wikipedia.org/wiki/File:Raspberry_Pi_3_B%2B_(39906369025).png,许可证CC BY-SA 2.0
Raspberry Pi 3B+的主要特征如下:
看一下每个组件的功能:
Raspberry Pi运行操作系统,通常是基于Linux的发行版,例如Debian或Ubuntu。
虽然Raspbian——基于Debian的发行版是Raspberry Pi基金会的官方发布版,但我们将使用Ubuntu(由Canonical支持),因为它是开放式机器人(https://www.openrobotics.org)使用的平台,用来每年发布ROS版本,并与Ubuntu的年度版本同步。
除了本书的目的是让你实践一些与ROS相关的经验(对于这点而言,需要在Linux操作系统上安装软件)之外,如果你真的想创建一个智能机器人,则需要能够运行计算密集型算法的处理能力,这就是Raspberry Pi等CPU提供的功能。
为什么需要这种计算?因为智能机器人必须将来自环境的信息与当前任务的逻辑进行集成,才能成功完成任务。以一个对象从其当前位置行驶到目标位置为例。为了完成此任务,如激光测距传感器、3D摄像头或GPS之类的设备向机器人提供了来自环境的信息。这些数据源必须组合在一起,以便机器人能够在环境中定位自己。通过提供目标位置,它还必须计算出本体的最佳路径,这称为 路径规划 。在执行这样的路径规划时,它必须检测可能出现在路径上的障碍,并在不失去重点目标的情况下避障。因此,任务的每个步骤都涉及在机器人的CPU中执行算法。
下面将学习使用ROS,作为解决此问题的诸多实际方案之一,ROS是目前开发机器人应用程序的 实际 行业标准。