原文:Beginning Robotics with Raspberry Pi and Arduino Using Python and OpenCV
十、总结
从第一章开始,你已经走了很长一段路。如果你是机器人和编程新手,那么这可能是一本具有挑战性的书。这是命中注定的,所以恭喜你通过了。希望你能跟上,在这个过程中制造出你自己的机器人。
概括一下,在第一章,我介绍了一些机器人的基本概念,并讨论了这本书的目的。在第二章中,我们通过安装 Raspbian 操作系统并将其配置为远程访问来开始使用 Raspberry Pi。第三章向你介绍了 Python 编程语言。在第四章中,我们开始使用 Raspberry Pi 的 GPIO 头处理传感器。在这个过程中,我们学习了一些关于数字处理的知识,并讨论了一些局限性。
当我向您展示 Arduino 时,在第五章中已经介绍了 Pi 局限性的解决方案。我们学习了如何对 Arduino 编程,以及如何在它和 Pi 之间来回传递数据。在第六章中,我们组装了电机帽,并学习了如何用它和通用电机控制器驱动电机。在第七章中,我们终于组装好了机器人。在第八章中,我们安装了红外传感器,并给机器人编程,让它沿着一条线走。在第九章中,我们释放了树莓派的力量,使用计算机视觉过滤颜色和跟踪球。
机器人的类型
正如我在第一章中所讨论的,机器人可以有很多不同的含义。真的要看你想怎么定义了。为了进一步模糊定义,机器人技术中使用的许多技术可以很容易地转移到物联网(IoT)上。硬件、软件、传感器、通信信道等等,在你的自动化家庭中与在你的机器人中是一样的。编程是相似的,结果通常会影响物理世界。所以,本质上,物联网把你的家、办公室或工厂变成了机器人。
由于这个宽泛的定义,你对机器人的兴趣可能会比我大不相同。例如,你对小型桌上机器人还是大型机器人感兴趣?你主要是对沿着地面行驶的地面机器人感兴趣,还是希望你的自动化设备能够飞行?或者,也许你对用机器人潜水器探索海洋深处感兴趣。你想尝试自动驾驶汽车还是家庭自动化和物联网是你的事情?
了解你可能从事的领域决定了你使用的工具。如果你正在建造小型桌面机器人,你可能不需要焊工。该字段还决定了您将使用的一些设计工具。例如,大多数像我们在本书中建造的小机器人可以在飞行中或用笔和纸来设计。然而,如果你在建造更复杂的东西,比如四足动物,你可能需要 CAD 软件。
工具
机器人技术中的工具有两种:硬件和软件。我没有深入讨论您可能会使用的物理硬件工具,因为您将使用的工具类型取决于您感兴趣的机器人类型。我一会儿会谈到硬件。
首先,我想简单谈谈软件。软件是机器人所有领域共有的一个领域。像机器人领域的大多数事情一样,你对工具的选择完全取决于你自己。用你觉得舒服的方式完成工作。
软件
这本书涵盖的主题远非全面。关于 Linux、Python、Arduino,尤其是 OpenCV,还有很多东西需要学习。目的是向您介绍一些机器人的概念,并让您熟悉和熟悉一些工具。
选择 IDE
您使用的 IDE 或集成开发环境由您决定。这是所有不同领域共有的领域之一。有很多可以选择。我们使用的软件工具是 Raspberry Pi 和 Arduino 自带的。我所说的“本机”是指内置于操作系统中的工具,或者是硬件的推荐工具。
实际上,除了写这本书之外,我不再使用空闲的 ide 了。我的一般工作流程在我的 Windows 机器上开始。当代码以我喜欢的方式运行时,我会将它转移到 Raspberry Pi 进行最后的润色。
我编程 Python 的首选工具是 PyCharm ( www.jetbrains.com/pycharm
)。社区版提供了我几乎所有项目所需的所有特性。这是一个专业级的 IDE,使得使用 Python 变得更加容易(见图 10-1 )。它适用于 Windows 和 Linux。因此,当我将文件转移到 Pi 时,我可以根据需要使用相同的工具来更新代码。
图 10-1
PyCharm IDE
Spyder 是另一个使用 Python 的优秀 IDE。它包含在 Python 的 Anaconda 发行版中,这使得安装稍微容易一些。它为科学和学术团体提供了许多工具。Anaconda 很受我共事的许多数据科学家的欢迎。
如果你有兴趣看看 Anaconda,你可以在 www.anaconda.com
找到它。或者,如果你想尝试 Spyder IDE,可以在 https://pythonhosted.org/spyder/
下载。
此外,微软的 Visual Studio 是一个非常强大且越来越容易使用的产品。同样,他们的社区版可以从他们的网站( www.visualstudio.com
)下载。曾几何时,Visual Studio 只面向专业开发人员。即使当微软开始发布免费社区版时,初学者和业余爱好者也很难使用。然而,最近的几个版本更加用户友好。Visual Studio 的一个好处是它可以满足您的大多数开发需求。
不过,它也有缺点。例如,它只适用于 Windows。它还有一点学习曲线,但是有大量的资源可以提供帮助。作为一个基于 Windows 的 IDE,它可以为 Windows 编译。幸运的是 Python 是跨平台的。所以一旦你写好了代码,你就可以把 Python 文件转移到 Raspberry Pi,对串口等等做任何你需要的调整,然后从那里运行它。
我的大部分 Arduino 工作仍然使用 Arduino IDE。这仅仅是因为我还没有找到一个更好的独立工作环境。Visual Studio 有一个扩展,允许您开发 Arduino 代码并交叉编译到 Arduino;尽管它通过 Arduino IDE 进行编译。因此,如果您正在寻找一个单一的环境来开发您的机器人项目,Visual Studio 可能是一个不错的选择。
设计软件
你们中的许多人可能不经常使用设计软件。与其他任何东西一样,用于设计机器人各部分的软件将根据您的项目而有所不同。这也将取决于你的预算和你用来制造机器人的工具。一些项目,如套件或其他人的设计,根本不需要设计软件。许多项目和建筑风格都离不开简单的铅笔和纸。如果你正在使用模块化部件,你也许可以用列表或简单的草图来摆脱。然而,对于任何定制,您可能需要一种方法来设计系统。
2D 绘画
最简单和最容易使用的软件是 2D-或平面-设计。这些工具适用于设计可以使用板材(如 MDF、纸板、胶合板或丙烯酸板)建造的项目。不要低估你用平板材料所能做的事情。我的游牧项目是用 1/4 英寸的胶合板设计和建造的。
请记住,这些工具是为艺术家和插图画家设计的,而不是为精确的 CAD 工作设计的。所以你可能期望的一些特性根本不存在。例如,精确的测量是困难的。使用网格和标尺很有帮助,但是如果你需要一个精确的角度或长度,这些工具可能不是最好的。
最流行的 2D 设计工具之一是一个名为 Inkscape ( https://inkscape.org/en/
)的开源项目。Inkscape 非常容易使用,它有一个非常大的用户群体。可以免费下载使用,功能丰富。还有很多社区开发的插件。我最喜欢的是标签盒制造商。因为我可以使用激光切割机,所以我使用选项卡式盒子制作工具来设计简单的盒子,我可以切割并咬合在一起。图 10-2 显示了 Inkscape 界面。
图 10-2
Inkscape
也有商业节目。Adobe Illustrator ( www.adobe.com/products/illustrator.html
)和 Corel Draw ( www.coreldraw.com/en/pages/ppc/coreldraw/
)是这方面的两大领军人物。
电路板设计
在某些时候,你可能会发现自己需要设计自己的电路板或屏蔽。这没有你想象的那么复杂或困难。随着你越来越多地与机器人打交道,你会发现针对特定芯片或电路的建议。通常,只需在网上搜索就能找到电路示例的链接。在为 it 设计的工具中重新创建这些电路可以让您订购电路板。
有许多为电路板设计的程序。事实上,几乎每个电路板制造商都有一个可用的。
爱好社区里最流行的一个就是 Fritzing ( http://fritzing.org/home/
)。它是由德国波茨坦应用科学大学开发的。它的受欢迎程度导致它被分离出来,成为自己的组织:Fritzing 基金会之友。我使用 Fritzing 软件创建了这本书中的电路图(见图 10-3 )。
图 10-3
Fritzing
也有商业产品可用;他们中的许多人可以免费使用社区附件。领先的行业标准是 Eagle,现在归欧特克( www.autodesk.com/products/eagle/overview
)所有。大多数其他程序以流行的 Eagle 格式导入和/或导出最终设计。
3D 设计
如果你有定制的机箱和部件,或者你喜欢 3D 打印,你需要 3D CAD 软件。还是那句话,有很多可用的。但是我还没有找到与商业解决方案相匹配的免费或开源包。也就是说,许多商业解决方案都提供免费或低价的学生版。
SketchUp ( www.sketchup.com
)提供了一个为创客设计的免费版软件。如果你以前没有用过 CAD 程序,它可能是最容易学的。控件非常直观,有大量的教程来帮助您学习如何使用它。如果你以前用过 CAD,那么这可能不适合你。我接触过的大多数有 CAD 经验的人都觉得这个工具不够直观。这是因为它不是作为标准 CAD 程序设计的。
对于那些更熟悉 CAD 的人,Autodesk 提供了 Fusion 360 ( www.autodesk.com/products/fusion-360/overview
),费用适中。该公司还为学生提供大部分产品的免费许可证,如 Fusin 360、Inventor 和许多其他产品。Fusion 360 和 Inventor 是专业的商业级 CAD 程序,具有许多功能,包括仿真。当我需要为我的机器人或其他项目设计一些东西时,我就用它(见图 10-4 )。
图 10-4
Autodesk Inventor
五金器具
除了我描述的软件工具之外,您还需要一些实际的工具。您对工具的选择可能最依赖于您感兴趣的机器人类型,但是每个工具箱都应该有一些基础知识。
基本工具
在这一节中,我将介绍您可能需要的工具,无论您的机器人或项目采取何种形式,以及我的基本工具包中的工具。
首先,一套好的钳子是必须的。你需要不同的尺寸和类型。我用的最多的是珠宝商的那套钳子。我也经常使用伸缩钳。确保该套件包括一对对角切刀。
接下来,你需要一套好的螺丝刀。您使用的许多螺钉都很小,适合安装在狭窄的地方。确保您的套件中有各种六角头。我经常发现我要插入或移除的六角螺钉在我的套件中的两个尺寸之间。星星头通常适合这些。不过要小心,因为有可能会把牙齿从它们身上剥下来。
从这里,有很多杂七杂八的工具是很好的:一个实用刀,一组文件,一个压接工具,一个平齐的钢丝剪,一个万用表,卡钳,等等。你会收集到一批很好的工具。我强烈建议你购买你需要的工具,而不是试图用手头的东西凑合。使用正确的工具总是能带来更好的结果。而且,如果你花时间去获得合适的工具,下次你需要它的时候你就会拥有它。
你还需要一个焊接站。不必细说。一个好的烙铁,一个放置焊剂和焊嘴清洁剂的地方,以及一组帮手就是你所需要的。
确保你有一个存放工具的好地方,并尽量把它们放回原处。这为你节省了无数的时间,让你不用在不可避免的杂乱中寻找。我有几套工具。一套生活在我的工作台上。我买了一个紧凑的钉板系统,用来挂我的大部分工具。挂钉板上放不下的东西会放进长凳上的特定抽屉里。
另一套在我留给 Nomad 的工具箱里。因为 Nomad 经常被带去看演出,而且很快就要参加比赛,所以我想确保手头总是有我需要的东西。通常情况下,我最终会帮助节目中的其他主持人,因为他们经常准备不足。
我的第三套工具是浮动套。我把它们放在一个工具箱里,当我不带 Nomad 外出时,可以很容易地从一个房间转移到另一个房间或转移到车上。我活跃在奥斯汀当地的业余机器人领域,当有人需要帮助或工具时做好准备是很好的。
当我用完我的工具时,我尽量确保把它们放回原处。这保证了下次我伸手拿工具时,它就在那里。诚然,我并不像我希望的那样始终如一,但这确实是一个很好的习惯。
专业工具
拥有一些更大的专业工具总是让我更容易构建更大的版本。带锯和钻床是无价之宝。除非你计划建造一些非常大的机器人,否则这两种工具的台式版本通常就足够了。台式砂带/盘式砂光机组合有助于清理您的边缘或塑造您的零件。
除了所有这些工具之外,我还利用了更专业的工具。在大多数情况下,我家里没有这些工具。但是 3D 打印机现在很容易买到;如果可能的话,在你的工作室里放一两个是个好主意。我还使用了 120W 激光切割机、数控路由器和数控铣床。然而,它们不是我店里的工具。
创客空间
我家里的店里没有激光切割机和数控铣床,我想你们大多数人也没有。这些工具既笨重又昂贵。但是,我是奥斯丁本地创客空间的一员:ATX 创客空间( http://atxhs.org
)。Hackerspace 是一个合作工作室,在这里我们可以集中资源购买一些大型机器。黑客空间不拥有的东西通常由一个成员托管,供其他成员使用。
让空间特别有价值的是社区。创客空间里都是喜欢创造东西的人。这些人来自各行各业,各有所长。当你试图做你以前从未做过的事情,或者你想学习一项新技能,或者你想从不同的角度看一个问题,或者你只是简单地卡住了,这是一个非常有价值的资源。
如今,几乎每个社区都有一个或多个创客空间。可用的资源因空间而异。有些在商业公园经营,有些在学校经营,有些在别人的车库经营。唯一不变的是社区。如果你还没有,找到你当地的创客空间并加入其中。你不会后悔的。
摘要
现在,你已经具备了开始学习机器人爱好所需的所有基础知识。在许多主题中,显然还有许多东西需要学习。但是,树莓派和 Arduino 将带你走很长的路。记住,你不需要在真空中学习一切。那里有一个巨大的社区,并且每天都在增长。接触你当地的创客空间,寻找志同道合的建设者。不要害怕问问题。不要害怕看别人的项目来寻找灵感。尽可能利用示例代码。最终,您将编写自己的代码,但在此之前,请向已经编写代码的人学习。
机器人领域令人兴奋。事实上,我们可以进入其中,进行实验,并学习是非凡的。好好利用这段时间。最重要的是,玩得开心。
祝好运和快乐的建设。