设为首页 加入收藏

TOP

机器人编程教程2探索机器人-代码和电子设备(三)
2023-08-26 21:10:25 】 浏览:127
Tags:程教程 索机器
sting/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
  • Raspberry Pi Sensors, Rushi Gajjar, Packt Publishing
  • Make Sensors: A Hands-On Primer for Monitoring the Real World with Arduino and Raspberry Pi
  • Make Electronics: Learning Through Discovery
  • 2.4 规划组件和代码结构

    现在,您已经简单了解了机器人中可能会用到的一些组件,并且遇到了将它们组合在一起的框图。在这里,您可以开始下一步,进一步思考如何将各部件连接起来,以及为它们编写的代码将如何结构化。

    将代码看作逻辑块而不是一大块时,更容易进行推理。以类似于硬件功能图的方式来安排代码,将有助于在代码变得越来越复杂时为你导航。

    电机控制器有很多种。它们有不同的方式向电机输出信号,还可能对电池电量进行监控。有些智能电机控制器可直接与车轮编码器连接,以确保车轮已完成指定的行程。当我们为机器人编写行为时,如果更换了电机控制器,我们可能就不想重写了。将直接的电机控制器代码与行为代码混合在一起,也会增加推理难度。为此,我建议创建一个接口层,即实际电机控制器代码与标准接口之间的抽象层,这样就可以交换组件了。

    每个传感器的情况也类似。它们将有一些代码来管理如何获取信号并将其转化为可用数据。所有这些设备在启动或停止与它们连接的行为时,都可能需要运行设置和拆卸代码。摄像头就是一个复杂的例子,需要经过处理才能获得我们可以用来执行任务的数据值:

    与硬件一样,一个简单的图表也可以表示软件。它可以用绘图程序绘制,也可以在手边的任何纸张上草绘。图中,我特意选择了手绘的方上式,这样你就不会觉得需要用绘图工具才能完成。这不会很整洁,但很快就能重新绘制,甚至可以在外出就餐时突发奇想,在收据纸的背面完成。与此相关的是,如果使用铅笔,请用钢笔或细线笔再画一遍,以免褪色。为了让读者看得更清楚,我还在电脑上画了一幅图,但你不必这样做。

    手绘草图后,可以使用软件工具。这将比手绘版本花费更多时间,而且尽量不要被工具的怪异和风格所干扰。

    就设计本身而言,这仍然是一个非常简单的视图。车轮框将是一个代码块,处理要求车轮电机控制器做的事情。这些代码可以是电机控制器公司编写的代码,也可以使用连接到控制器的 I/O 引脚。

    距离传感器是一个代码块,用于从传感器读取距离,并在必要时触发传感器。我们将对两种不同的传感器进行比较。有了这样的代码块,在这一层更改传感器就意味着其他代码无需更改。

    相机也有一个代码块,负责设置相机、分辨率、白平衡等繁琐的工作,其他部分我们将陆续介绍。在此之上是一个将使用相机图像的图层。该层可以获取彩色物体的位置,并将该位置返回给上一层。

    横跨电机和距离传感器的是行为层,它可以让机器人避免碰撞,也许是当它的一侧低于阈值时。这将覆盖其他行为,让机器人转向远离障碍物,然后开走一段距离。

    顶层是另一个行为,它从 "获取对象位置 "代码中获取位置数据。利用该位置选择一个方向,然后指示电机驶向目标。如果该行为通过 "避免碰撞 "行为,则可能会产生复杂的交互,导致机器人在避开障碍物和绕过物体的同时,寻找正确的物体。同时,机器人也不会靠近检测到的物体,以免与之发生碰撞。

    每个模块都相对简单,也许更接近硬件的下层更为复杂,尤其是摄像头。

    将代码分解成这样的模块意味着你可以一次只处理一个模块,测试并调整其行为,然后再专注于另一个模块。当你编写了这样的代码块后,就可以重复使用它们。您可能需要多次使用电机代码,而现在不需要多次编写。

    使用程序块来描述我们的软件,可以让我们以不同的方式实现程序块及其交互。我们可以考虑是使用函数、类还是服务来实现这些模块。当我们开始编写代码时,我将花更多时间讨论这个问题,并展示不同的方法。

    2.5 规划物理机器人

    现在,让我们利用所有这些知识,规划一下我们在本书中制作的机器人物理部分的布局。在学习各章节的过程中,我们每次都会添加新的部件,因此,在学习的过程中,在头脑中保持一张整体地图,有助于我们看清自己所处的位置。开始描绘机器人要做的所有事情是一件令人兴奋的事情。让我们先列出我们的机器人会做什么和会是什么:

    • 它将有轮子,可以在地板上行驶。
    • 它将有一个 Raspberry Pi 3A+ 控制器。
    • 它将有一个车轮电机控制器。
    • 它将能用一组多色 LED 指示其状态。
    • 机器人将使用一对伺服电机来实现摇摆和倾斜机构。
    • 它能够避开墙壁,并利用超声波或激光测距传感器绕过障碍物。
    • 它的每个轮子都有一个编码器,可以知道自己移动了多远。
    • 机器人将使用摄像头来感知彩色物体或人脸。
    • 它还能用摄像头追踪线路。
    • 机器人将有一个麦克风和扬声器,可以使用语音指令。
    • 它将有一个游戏手柄作为遥控器。
    • 所有这些都需要电源。
      呼!功能还真不少。现在,我们需要绘制硬件模块。图 2.14 显示了我们的框图。虽然是用 Draw.io 完成的,但简单的封底草图也是机器人规划的良好开端。我的大多数机器人都是这样开始的:

    虽然这看起来像是一个令人生畏的机器人,但我们将在每一章中专注于一个功能区域,并在转向其他区域之前构建它。这里的注释并不是任何正式的符号,它只是一种将所有需要连接的部件可视化的方式。与此同时,我通常会勾勒出传感器和部件之间的大致物理位置:


    使用Draw.io绘制的机器人物理布局示意图

    • 传感器有清晰的视野,距离传感器指向两侧。我会在相关的传感器章节中详细说明这一点的重要性。
    • 编码器放置在需要使用的车轮上方。
    • 重物,特别是电池,应放在低处(低于重心),以免机器人翻倒。
    • 电池需要更换,因此要考虑如何取用。
    • 尽量让直接连接的部件彼此靠近。
    • 这只是一个粗略的计划。不需要这么详细,这也不是试装。实际尺寸、设计折衷和缺陷都意味着这将会发生变化。这只是一个起点。

    在本书的学习过程中,我们将研究这些图表中的细节,并开始充实真正的机器人,使其中一些细节不再模糊。在项目开始时,任何这样的图表都应该被视为有点粗糙。它不是按比例绘制的,不应盲目照搬。它只是一个指南,或者说是开始工作的快速地图。

    2.6 小结

    在本章中,您已经了解了机器人的各种组成部件,并通过方框图开始想象如何将这些部件组合成一个完整的机器人。你们已经了解了如何在信封上快速勾画出自己的机器人创意,以及如何利用计算机上的绘图工具绘制出更整洁的同一张图。您已经快速了解了电机、传感器和控制器,以及控制器与其连接的其他设备进行通信的几种方式,包括模拟、数字、PWM 和数据总线。在此基础上,你已经看到了我们将在本书中制作的机器人的平面图。

    首页 上一页 1 2 3 下一页 尾页 3/3/3
    】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
    上一篇Hi3798MV200 恩兔N2 NS-1 (四): .. 下一篇痞子衡嵌入式:借助i.MXRT10xx系..

    最新文章

    热门文章

    Hot 文章

    Python

    C 语言

    C++基础

    大数据基础

    linux编程基础

    C/C++面试题目