1 机器人简介
我们将制作一个机器人,并为其创建程序,赋予机器人行为,使其看起来具有智能并能够做出决策。我们将编写代码,使用传感器观察机器人周围的环境,并构建高级主题的实际示例,包括视觉、语音识别和说话。
您将看到简单的构建技术如何与少量代码相结合,使机器感觉像某种宠物。你还将看到当机器出错时如何进行调试。您还将了解如何让机器人向您反馈问题,以及如何选择您想要演示的行为。我们将为它连接一个手柄,让它进行语音控制,最后还将教你如何计划进一步的机器人制作。
在开始制作机器人之前,我们应该先了解一下什么是机器人。我们可以探索一些机器人类型,以及区分机器人和其他机器的基本原理。你会想一想机器人和非机器人机器之间的界限在哪里,然后也许会用有些模糊的事实把这条界限弄得有点模糊。然后,我们将看看业余爱好者和业余机器人爱好者制造的一些机器人。
在本章中,我们将讨论以下主题:
- 机器人是什么?
- 探索先进的、令人印象深刻的机器人
- 探索家用机器人
- 探索工业机器人
- 竞技、教育和业余爱好机器人
1.1 机器人是什么?
机器人是一种根据传感器的输入自主决策的机器。软件代理是自动处理输入并产生输出的程序。也许将机器人描述为带有传感器和移动输出的自主软件代理最恰当,或者将其描述为带有运行软件的机电平台最恰当。无论如何,机器人都需要电子设备、机械零件和代码。
机器人这个词会让人联想到梦幻般的科幻作品,具有传奇般的力量和智慧的装置。这些机器人通常遵循人体结构,因此被称为机器人(android),一种类似人类的机器人。它们通常被赋予个性,行为举止就像人,而这个人在某种程度上是幼稚的:
机器人一词来自科幻小说。该词源于捷克语,意为奴隶,最早出现在1921年卡雷尔-卡佩克的戏剧《罗森的万能机器人》中。科幻小说作家艾萨克-阿西莫夫(Isaac Asimov)在探索智能机器人行为时创造了机器人这个词。
在我们的家庭和工业中,大多数真实的机器人并不先进和引人注目。它们大多没有两条腿,甚至没有任何腿。有些机器人有轮子,有些虽然不能移动,但仍有活动部件和传感器。
现代洗衣机、自动吸尘器、完全自动调节的锅炉和空气采样风扇等机器人已经渗入我们的家庭,成为日常生活的一部分。它们并不具有威胁性,已经成为我们身边的另一种机器。不过,3D 打印机、机械臂和学习玩具则更令人兴奋:
机器人的核心可以简化为电机等输出端、传感器等输入端以及用于处理或运行代码的控制器。因此基本的机器人应该是这样的:
- 它有输入和传感器,用于测量和采样环境属性。
- 它有电机、灯光、声音、阀门或加热器等输出端来改变环境。
- 它利用输入的数据自主决定如何控制输出。
现在,我们将在下一节了解一些先进的机器人。
1.2 探索先进的、令人印象深刻的机器人
现在大家对机器人有了一个总体的了解,下面我将介绍一些具体的例子,它们代表了目前最杰出的机器人,以及它们的能力。除了火星机器人外,人类和动物形态的机器人因其适应性强而受到这些机器人制造商的青/睐,这与为工业用途设计的机器人形成了鲜明对比,它们都是为了单一重复使用而设计的。
- 机器人1
麻省理工学院的Cog。Cog尝试在动作和传感器方面与人类相似。
- 机器人2
本田ASIMO,它的走路和说话方式有点像人类。ASIMO的两个摄像头能避开物体,还能识别手势和脸部,并有激光测距传感器来感知地面。它还能通过红外线传感器跟踪地板上的标记。ASIMO可接受英语和日语语音指令。
- 机器人3
软银机器人公司的Nao机器人。这个高58厘米的可爱机器人被设计为供用户编程的学习和游戏机器人。它有传感器来检测自己的运动,包括是否摔倒,还有超声波距离传感器来避免颠簸。Nao使用扬声器和麦克风进行语音处理。它有多个摄像头,可以完成与ASIMO类似的动作。
- 机器人4
是波士顿动力公司的Atlas。这款机器人两条腿行动迅速,动作自然。它有一个激光雷达(LIDAR)阵列,用来感知周围的情况,从而规划自己的行动,避免碰撞。
- 机器人5
波士顿动力公司的 BigDog,它是一个四条腿的机器人,或称四足机器人。它可以行走和奔跑。它是最稳定的四足机器人之一,在被推搡和冰雪路面行走时都能保持直立。
你们将在自己制作的机器人中增加一些类似的功能。我们将使用距离传感器来避开障碍物,与Nao,一样使用超声波传感器,并讨论像ASIMO一样的激光测距传感器。我们将探索用于视觉处理的摄像头、用于跟踪地板标记的线性传感器,以及用于执行口语命令的语音处理。我们还将为Cog的头部那样的摄像头制作平移和倾斜装置。
1.2.1 火星漫游车
火星漫游车机器人是为
在另一个星球上工作而设计的,在那里,如果机器人坏了,人类是没有机会进行干预的。它们的设计非常坚固。更新的软件只能通过远程链接发送到火星车上,因为派人带着屏幕和键盘上去是不现实的。火星车的设计是无头的:
火星车依靠轮子而不是腿,因为稳定轮子上的机器人要比稳定腿上的机器人简单得多,出错的可能性也更小。火星车上的每个轮子都有自己的电机。这些轮子的布置是为了提供最大的抓地力和稳定性,以应对火星的岩石地形和较低的重力。
火星车在火星上着陆时,其灵敏的相机是折叠起来的。着陆后,通过伺服电机将相机展开并定位。相机通过一个摇摄和俯仰装置进行定位。它需要拍摄尽可能多的火星景观,并将镜头和图片传回美国宇航局进行分析。
与火星机器人一样,你在本书中要制作的机器人也使用电机驱动的轮子。我们的机器人还可以在没有键盘和鼠标的情况下运行,是无头设计。随着机器人功能的扩展,我们还将使用伺服电机来驱动摇摄和俯仰机构。
1.3 发现家中的机器人
许多机器人已经渗入我们的家庭。它们之所以被当作机器人而被忽视,是因为乍一看,它们显得普通而平凡。然而它们比表面看起来更复杂。
1.3.1 洗衣机
在一些家庭中,洗衣机每天都在不停地清洗、脱水和烘干衣物。但这怎么能算是机器人呢?
中央控制器与显示屏相连,可控制选择程序。从控制器输出的线路是输出端。进入控制器的连接线是来自传感器的数据。从输出端到传感器的虚线显示了现实世界中输出动作引起传感器变化的闭环。这就是反馈,机器人技术中的一个基本概念。
洗衣机通过显示屏和按钮让用户选择设置并查看状态。按下启动按钮后,控制器会检查门传感器,如果门是开着的,控制器会理智地拒绝启动。一旦门关闭并按下启动按钮,控制器将输出锁门信号。之后,控制器会使用加热器、阀门和泵将加热过的水注入桶中,并通过传感器反馈来调节水位和温度。
每个过程都可以用一组类似的语句来表示,这些语句同时向水桶注水并保持水桶加热:
start water pump
turn on the water heater
while water is not filled and water is not hot enough:
if water filled then
stop water pump
if the water is hot enough then
turn off heater
else
turn on the water heater
注意这里的 “else”,以防水温略微低于正确温度。然后,洗衣机开始滚筒脱水程序–慢转、快转、感应速度以满足标准。洗衣机会排空滚筒,脱干衣物,松开门锁,然后停止。
无论从哪个方面看,这台洗衣机都是机器人。洗衣机有传感器和输出端来影响周围环境。通过处理,洗衣机可以遵循程序,并利用传感器的反馈来达到和维持条件。洗衣机维修人员可能比我更像机器人专家。
1.3.2 其他家用机器人
燃气中央供暖锅炉有传感器、泵和阀门。锅炉利用反馈机制来维持室内温度、加热水流、燃气流量,并确保引火灯一直亮着。锅炉是自动的,有许多类似机器人的功能,但它是固定的,不能随时改装成其他用途。智能风扇和打印机等其他家用电器也是如此。
智能风扇利用传感器检测室内温度、湿度和空气质量,然后通过风扇转速和加热元件进行输出。
家庭中的其他机器,例如微波炉,只有定时器操作,它们不做决定,而且过于简单,不能被视为机器人。
最明显的家用机器人可能是机器人吸尘器:
这种带轮子的移动机器人就像我们要在这里制作的一样,但更漂亮。它们装有传感器,可以探测墙壁、袋子的高度和障碍区,避免碰撞。它们最能代表我们正在研究的机器人类型。这种机器人是自主的、可移动的,并且可以重新编程,做出不同的行为。
在我们制造机器人的过程中,我们将探索如何利用其传感器检测事物并做出反应,形成我们在洗衣机中看到的反馈回路。
1.4 探索工业机器人
机器人常见的另一个领域是工业。第一批有用的机器人是在工厂中使用的,而且已经存在了很长时间。
1.4.1 机械臂
机械臂的种类繁多,从用于转动鸡蛋的小巧精致的机器人,到移动货运集装箱的巨大怪兽,不一而足。机械臂通常使用步进电机和伺服电机。我们将在本书使用的摇摄和俯仰机构中介绍伺服电机。大多数工业机械臂(例如ABB焊接机器人)都遵循预定的移动模式,不具备任何决策功能。不过,要想获得更加基于传感器的智能系统,请看Rethink Robotics公司的Baxter,它给人留下了深刻印象。巴克斯特是一个协作机器人,旨在与人类一起工作:
许多机械臂在旁边工作不安全,可能会导致事故,因此需要在其周围设置笼子或警告标志。Baxter则不同,它能感知人类,并在周围工作或暂停,以确保安全。在上一张图片中,我们可以看到这些传感器位于头部周围。手臂传感器和软关节也能让Baxter特感知碰撞并做出反应。
Baxter有一套训练和重复机制,让工人能够适应任务。在训练或回放动作时,它使用传感器检测关节位置。我们的机器人将使用编码器传感器来精确控制车轮运动。
1.4.2 仓库机器人
另一种常见的工业机器人是在工厂车间或仓库中移动物品的机器人:
上图显示了用于在仓库中移动托盘的机器人起重机系统。它们接收指令,在货架系统内移动货物。
较小的物品移动机器人,如图2中的Intellicart,采用线型传感器,通过跟踪地板上的线,磁感应地板下的电线,或跟踪像 ASIMO这样的标记信标。我们的机器人将跟随这样的线。这些跟踪线的小车经常使用轮子,因为轮子易于维护,而且可以形成稳定的平台。
参考资料
- 软件测试精品书籍文档下载持续更新 https://github.com/china-testing/python-testing-examples 请点赞,谢谢!
- 本文涉及的python测试开发库 谢谢点赞! https://github.com/china-testing/python_cn_resouce
- python精品书籍下载 https://github.com/china-testing/python_cn_resouce/blob/main/python_good_books.md
- Linux精品书籍下载 https://www.cnblogs.com/testing-/p/17438558.html
- 本田 ASIMO:http://asimo.honda.com/。
- Baxter at Rethink Robotics: https://www.rethinkrobotics.com/baxter/.
- 麻省理工学院的 Kismet:http://www.ai.mit.edu/projects/humanoid-robotics-group/kismet/kismet.html。
- OhBot: http://www.ohbot.co.uk/.
- 美国国家航空航天局的火星科学实验室:https://mars.nasa.gov/msl/。
- 要制作类似ArmBot中使用的机械臂,请访问 MeArm:https://github.com/mimeindustries/MeArm。
- 有关ArmBot设计的更多信息,请访问 https://www.youtube.com/watch?v=xY6Oc4_jdmU。
1.5 竞技、教育和业余爱好机器人
最有趣的机器人是由业余机器人制作者创造的。这是一个极具创新性的领域。
机器人技术在教育领域一直占有一席之地,学术界的建造者将其用作学习和实验平台。许多商业企业就是在这种环境下起步的。大学机器人通常是集体创作,可以使用高科技设备进行制造:
Kismet于90年代末在麻省理工学院诞生。一些业余爱好者使用的机器人都是从它衍生出来的。它使用电机驱动模仿人类表情的面部动作,在当时具有开创性意义。使用伺服电机的低价业余爱好者套件OhBot就是基于Kismet开发的。OhBot与树莓派(Raspberry Pi)相连,利用语音识别和摄像头处理技术做出令人信服的表情。
业余机器人技术与开源软件/硬件社区紧密相连,可利用GitHub(https://github.com)等网站共享设计和代码,从而产生更多想法。业余机器人可以利用互联网上提供的套件制作,并进行修改和添加。这些套件的复杂程度范围很广,从简单的三轮底座到无人机套件和六足机器人。它们有带电子设备的,也有不带电子设备的。第6章 “构建机器人基础知识–轮子、动力和布线 “将介绍对套件的调查。我使用六脚架套件制作了SpiderBot,以探索行走动作:
上图为我根据套件制作的蜘蛛机器人。控制器为 esp8266 + Adafruit 16伺服控制器
Skittlebot是我在2018年Pi Wars上的参赛作品,使用玩具黑客技术将遥控挖掘机玩具改装成机器人平台。Pi Wars是一项针对基于树莓派(Raspberry Pi)的机器人的自主机器人挑战赛,既有手动挑战,也有自主挑战。参赛作品既有装饰性外壳,也有机智的工程设计。Skittlebot使用三个距离传感器来避开墙壁,我们将在第8章”使用Python对距离传感器进行编程”中研究这种传感器。Skittlebot使用摄像头来寻找有颜色的物体,我们将在第13章 “机器人视觉–使用Pi摄像头和OpenCV”中介绍:
上图Skittlebot – 我的PiWars 2018 机器人
一些业余爱好者使用3D打印、激光切割、真空成型、木工、数控和其他技术来构建底盘和部件,从而从零开始打造机器人:
2009年,我为伦敦机器人小组The Aurorans从零开始制作了图中的机器人。该机器人在2009年被称为 EeeBot,因为它是由 Eee PC笔记本电脑驱动的。Aurorans是一个讨论机器人技术的社区。后来,该机器人被赋予了一个树莓派(Raspberry Pi),而机械臂套件(uArm)似乎与之相匹配,因此它被命名为ArmBot。
目前市场上有很多底盘套件,初学者不需要用这种方法测量和切割材料,就能制作出一个正常工作的机器人。制作这些机器人的目的是为了进行实验,并激发其他机器人制作者和孩子们的编程热情。在本书的结尾,我们将介绍一些建造和分享机器人的社区,以及使用建造技术从零开始制作机器人的起点。
电视连续剧《机器人大战》是一项著名的机器人竞技活动,其构造和工程技术令人印象深刻。不过,《机器人大战》中的机器人没有自主行为,而是像遥控汽车一样由人工驾驶。洗衣机虽然不那么令人兴奋,但却更加智能,因此更严格地说,它们可以被视为机器人。
1.6 小结
在本章中,我们了解了机器人一词的含义,以及与机器人相关的事实和虚构。我们定义了什么是真正的机器人。你还看到了一台机器需要做什么才能被视为机器人。
我们研究了家庭和工业中的机器人。我们还向你们展示了一些设计用于惊奇或前往其他星球的机器人。我们还了解了业余爱好者和教育机器人,以及其中一些机器人是如何只是为了好玩而制造的。你们还看到了现实世界中一些可能不被认为是机器人的设备方框图。你还会发现,我们的家里可能已经有了几个机器人。
我希望本章能让你们思考,什么才能被称为机器人。洗衣机可以是全自动的,可以在某个时间按照程序开始工作,有些先进的洗衣机还可以通过检测衣服出水的水质来衡量衣服的干净程度,从而节约用水。然而,被称为机器人的机器可能只是一种遥控装置,如远程呈现机器人或机器人大战机器人。毫无疑问,所有这些机器人都拥有复杂的工程技术,需要许多类似的技能才能制造出来。
有些机器人显然是机器人,如本田ASIMO和Baxter,但有些机器人则很难划清界限。如果广义的决策机电机器的概念适用于这些情况,那么遥控型机器人将被排除在外。如果采用移动机器的概念,那么玩具遥控车就包括在内,而完全自主的静止智能机器则不包括在内。一台机器可以做得像机器人,具有拟人(类人)特征,但仅仅是机械,上下移动手臂–这算是机器人吗?它并没有运行程序或对环境做出反应。