业余爱好机器人基础知识
这些是需要记住的关键概念:
设计
电路基础知识
电源系统
平台
写代码
控制
传感器
导航
沟通
您的机器人会使用轮子/履带还是腿。这将影响您需要使用的电子产品类型。它还将决定您的机器人的简单或复杂程度,特别是因为轮式机身会更稳定并且需要更少的力气来控制和移动。
我想在这里指出的主要事情是,各个部分通常共享相同的接地(例如黑色/棕色线)是多么重要。为了密切关注您的部件,大多数东西都会使用 3.3V 或 5V。您可能必须混合使用这两种电压,在这种情况下,您需要一种方法来降低功率,例如。5V 至 3.3V,并可能使用电平转换器进行通信。为了简单起见,您可以考虑选择一种电压并坚持使用。
机器人很可能将使用电池供电。取决于它是什么类型的机器人,例如。六足机器人(有 6 条腿,18 个伺服系统),这意味着许多伺服系统(齿轮电机)同时移动,可以拉动几安培或更多的电流。您必须弄清楚将使用哪种电池来为系统供电,或者您的电源是否可以维持所需的电流强度。
这是上述机器人之一的接线图。我最初使用 8 芯 NiMH 电池组,电流输出限制为 2A。这是一个非常重的电池组。该机器人通过使用中间伺服系统来支撑机器人的重量,因为四个角中的两个同时移动。
像 Li-Po、18650 电池这样的现代/强大电池,每个电池的外形尺寸为 3.7V,因此将两个电池串联在一起,就会得到 7.4V。如何将 7.4V 降至 5V 或 3.3V?这就是调节器的用武之地。调节器有不同的种类,但对于业余爱好来说,您正在处理某种形式的线性或开关(更有效)。
左侧组件是降压线性稳压器,将高于 5V 的电压降至 5V。右边是升压转换器(升压调节器),您可以用它来获取3.7V的单节电池并获得5V输出(在扭动蓝色电位器并热熔胶到位后)。
另一件要记住的事情是您必须使用多少个放大器。如果您使用电源(例如开关稳压器),它很可能具有固定的输出电流,例如。2/3 A. 有些会更多,具体取决于您购买的内容(成本)。您的电子设备必须在该范围内运行。伺服系统可以拉动大量电流,因此了解这一点很重要。测量一组伺服系统运行的电流消耗的一种方法是使用台式电源作为电池。然后你可以看到当前的绘制被拉动。
您也可以直接从电池为伺服系统供电,但这需要了解工作电压,例如。您的伺服系统可以处理它吗?您的电池是否受到保护(BMS)。
一旦您知道要使用哪些部件,您就可以将它们连接在一起以控制电源和电流。
左边是 Rasbperry Pi Zero 1 W,右边是 Seeeduino、ESP-01、ESP07/12、Arduino Nano、Arduino Mega——整个右边我将使用 Arduino IDE 进行编程。左侧程序本身或通过 SSH 与另一台计算机连接,例如。个人电脑。
两个常见的平台是 Raspberry Pi 和 Arduino。这两者是不同的,一个是带有操作系统(RPi)的完整计算机,另一个是微控制器。RPi 有很多功能,它可以是桌面,可以连接 WiFi,可以输出视频,运行 Python/JavaScript/任何可以在 RPi 上编译的东西......而 Arduino 通常是用 C/C++ 风格编写的,尽管有是在其上运行其他语言的方法,例如。微型蟒蛇。基本的 arduino 无法自行连接到 WiFi。ESP 微控制器内置了 WiFi。硬件方面也存在显着差异,例如。Pi 可以有几个 GB 的存储空间,而 Arduino 有几个 MB 的存储空间。
至少对于伺服相关的机器人/速度控制器来说,另一个需要记住的重要事项是 PWM。我不会太深入,但要知道,你对它的控制越好,并且是真正的硬件,你的伺服系统控制起来就越准确和稳定。您将看到伺服驱动器连接到 RPi,而不是直接连接到 RPi,因为 RPi 上的 GPIO 引脚主要是数字/几个 PWM 引脚。引脚上的电流限制也是另一个原因。Arduino 伺服库开箱即用非常好。
RPi 非常适合执行视觉计算(相机和 GPU)等任务。Arduino 更适合 IO/模拟(例如,更多模拟引脚可以从设备读取实际值)。您可以将两者结合起来,让它们使用 I2C(最简单)和 SPI 等通信协议相互通信。另外,我不应该说“更好”,它们是两种不同的东西,很难比较。
这里,我使用 VSCode 编写一些 Arduino/C++ 代码,但使用 Arduino/Teensyduino IDE 将其刷新到 Teensy 4.0 上。右边的 JS 是我解析一些 TFmini-S 深度测量结果以制作深度图。
我想指出的主要事情是,在 Arduino 中,有一个主循环不断地运行。这是与从上到下运行一次的 Python 脚本不同的思维方式。
所以你的代码将围绕这个概念进行安排。如果您使用基于 Arduino 的系统,那么每次发生循环时,您都可以调用方法、检查内容等……请注意,如果您愿意,您可以在 Python 中实现相同的操作。无论如何,您可能会进行某种循环,不断侦听命令或通过传感器检查其环境。
根据您的机器人类型,如果它是像遥控汽车这样的轮式平台,则它比腿式机器人更容易编程/控制。腿式机器人需要更多地协调一起移动的物体,以获得所需的运动方向并保持平衡/站立。您可以手动对腿部进行编程,或者更高级的方法是使用逆运动学来控制“步态”,这是腿部移动的特定模式。
最上面图片中的基本拖尾机器人有一个相当密集、布满传感器的头部。它具有两个 ToF 深度传感器(左图中相机周围的紫色/黑色物体)。紫色具有非常宽的圆锥形状(25 度,近距离更好),黑色具有非常窄的圆锥形状(2 度,远距离更好)。它内部还有一个 IMU(告诉您机器人的加速速度、旋转情况以及周围的磁场强度 - 这是一个 9 轴/自由度 IMU)。右下角是一个超声波传感器,这是一个非常基本的“有东西”类型的传感器。您可以获得距离,但通常需要完美的实心/反射表面才能发挥作用。
要确定机器人的方向,您可以使用 6 DOF 加速计/陀螺仪 (IMU)。IMU 会输出加速度、旋转的原始值……您必须对这些值进行数学运算才能从中获得任何有用的信息,而不仅仅是知道您是否在移动或正面朝上。航位推算(在本例中为寻找底线)等概念和四元数等更高级的术语。更先进的是……使用过滤器来更准确地清理数据/推断。
您的机器人可以手动控制,例如。通过障碍物检测或传感器扫描和地图绘制 (SLAM) 进行 RC 或自我导航。实现碰撞传感器非常简单,例如。超声波传感器告诉机器人倒车/走不同的方向。SLAM部分比较复杂。
有不同的选择。您可以使用有线(串行)或无线(WiFi/蓝牙/其他技术)。最初,您可能只使用串行,无论是通过 USB 有线还是通过 SSH(例如)。无头 Raspberry Pi(无桌面环境)。但您可以将其他组件(如 ESP-01)连接到 Arduino,ESP-01 是一个 WiFi 模块。然后 ESP-01 通过 I2C 等协议与 Arduino 进行通信。您还可以通过 Arduino IDE 使用更高级的 ESP 板,例如 ESP32。
所以此时您已经对所涉及的内容有所了解了。您应该能够开始规划自己的机器人/建造机器人所需的东西。有很多指南和论坛可以获取帮助。能够自己修补和构建一些东西是一种很棒的感觉。
举报/反馈