一、自主移动机器人智能车入门的起点介绍
最近我对这个崭新的领域-机器人技术产生了兴趣。就个人而言,一开始我受到以下三点限制:1.它们都运行在Linux上,而我对Linux一无所知;2.首选的编程语言是Python,而我从来没有用Python编写过一行代码。3.最重要的是,我对机器人技术一无所知-无论是硬件还是软件。
但是除了所有这些次要细节,我花了很多时间(和不眠之夜)研究这个主题,而我的兴趣集中在移动机器人(所谓的漫游者)上以及使它们独立的方法上。我认为销售为“机器人”的大多数产品实际上都不是机器人,其中大多数只是精美的遥控玩具(包括电视节目《战地机器人》中的玩具)。对我而言,机器人需要大脑和自主运行的能力。
基本上,机器人的行为是定位-移动 。机器人需要知道它在哪里,然后相应地移动。并在每个步骤重复一次,直到完成工作,到达目的地,摧毁目标等。
因此,首先是location 定位,它具有硬件和软件组件。作为硬件,我正在做房屋中移动的低成本机器人,这些机器人配备了超声波测距仪,它们具有大量的测量噪声。因此,我发现最有效的定位算法是粒子滤波器。这有点计算量大,但即使是小型控制器板也无法处理。考虑到所有测量噪声,有时可能至少需要15-20步才能锁定位置,但是当定位完成后,效率会很高。虽然大多数理论都依赖于基于地标的定位,但在现实世界中,我可以处理房屋周围的墙壁,家具和其他物体。回到硬件,我选择的最简单的测量环境的方法是向前,向左和向右执行超声波扫描。您可以通过安装在伺服器上的单个测距仪(可以平移)或在这三个方向上分别有三个传感器的阵列来执行此操作。第二种选择显然是更有效的,因为测量是连续进行的,但是更昂贵。
现在,我们再次遇到软件和硬件问题。在将命令发送到硬件之前,我们需要软件来确定要去的地方(假设通过定位我们知道我们要去的地方)。在我在本文中讨论的场景中,大多数情况下,机器人需要到达给定地图上的特定位置。由于存在随机障碍,可能会使情况变得复杂(我将在后面介绍避障方法),但是无论如何,您都必须建立通往目标的路线。
对于基本的机器人,地图通常是grid map 栅格地图。有很多路径查找算法可供选择,例如“ 值策略”,在该算法中,您可以在启动时为每个位置创建基本路径,然后在找到机器人后遵循该点的路径。A*算法是一种更好的算法,但是除非您使用CTE,否则您可能必须在每一步都执行它。它的优势在于,一旦生成路径,就很容易对其进行平滑以创建真实的轨迹(在占用栅格地图上,路径将以直角在离散点之间移动,您必须对其进行平滑处理以创建连续路线)达到目标)。最后,一旦机器人开始移动,最后一步就是确保硬件移动到了应该移动的位置并沿着路径移动。在上述情况下,随着您继续执行本地化,您每次都可以简单地重新生成A-Star路径。我更喜欢使用 跨轨错误 (CTE)来保持机器人接近既定路径(例如,像GPS这样的机器人,它将不断尝试让您返回路线,但是一旦您离开,它就会“重新计算”;实际上,大多数GPS都会完全使用此模式,A-Star即可找到路线,而CTE则可让您继续前进。要遵循一条线或轨迹,标准算法是PID控制器,它使用3个错误参数来调整转向路径:比例(距路径有多远),微分(回到路径有多近)和积分(累积路径误差)。
我在第一篇文章中的目标是对本地地图并将其定位到设定的目标进行简要概述,以在已知地图内操作漫游机器人。当我开始研究时,不可能找到所有所需步骤的摘要。现在,您可以深入研究每个特定的步骤/算法,并加以实施,或者继续关注我的后续故事。
最后,如果有人想开始使用粗纱机器人,这里是一些硬件注意事项。最好的入门套件之一是Dexter Industries 的GoPiGo机器人。它由Raspberry Pi控制,入门套件(包括控制板,底盘和电机)的成本约为80美元,Pi的成本约为40美元,您还会在超声波传感器等配件上花费50-200美元, Wi-Fi加密狗,伺服电机,也许还有摄像头等。更先进的机器人是Lego Mindstorms EV3,基本套件的价格为350美元(带有控制“砖”,构建机器人,电机和一些传感器的Lego零件),您将在另外的传感器,伺服电机等上花费100-200美元)。EV3机械硬件要好得多(电机和传感器的精度要高得多),但是GoPiGo具有更大的计算能力。它们都在Debian上运行,并且入门语言是Python(尽管还有更多高级选项,包括Java,C等)。
希望本文对您有用,如果您想进一步详细说明什么,请给我留言,否则我将以随机顺序处理每种算法或硬件挑战。