运动控制(五)— 开环与反馈控制

我们学习了如何用电压来控制直流电机的转速,但要在我们的机器人中成功使用直流电机,我们需要控制的不仅仅是电机的速度,还有电机的位置。基本上有两种方法可以做到这一点:开环(Open loop)控制或反馈(Feedback)控制。在这篇文章中,我们将学习这些选项之间的区别。

开环控制和反馈控制之间的基本区别在于是否使用传感器。在开环控制中,不使用传感器,反馈控制中则使用传感器。我们可以使用一种叫做方块图的东西来可视化这两种控制类型之间的差异。在方块图中,我们使用一个方块来显示系统的每个部分,它接收输入并产生输出,我们使用箭头来显示系统中的每个信号。在我们的系统中,信号是任何随时间变化的量。这里有几个例子:在我们的控制系统中,我们有一个电机,它将由一个方块表示。电机接收输入电压并产生输出速度。电压和速度都是信号,因为它们的大小是可以随时间变化的。我们控制电压信号,电机转动,将电压转换为速度。

继续阅读

运动控制(四)直流电机扭力计算与选型

在这篇文章中,我们将探讨基于扭矩和速度需求为串联机械手的关节选择电机。今天我们将只考虑两个因素来计算扭矩需求:第一,连杆的角加速度;第二,机器人负载和连杆本身的重力。让我们从最简单的情况开始,一个电机连接到一个连杆上,使得连杆的运动方向垂直于重力,就像我在这里展示的这样。

图片
继续阅读

运动控制(三)直流电机转速与扭力

当我们通过测试不同电压下的电机速度来确定电机速度常数时,我们发现当比较值小于某个值时,电机完全不会运转。这可能一直都是这样,但这里还有一个需要考虑的因素。我们说电机在电压变小时不动的原因是因为没有足够的功率克服电机内部的静摩擦。然而,在早些时候,我们学到电机的转矩与我们提供的电流有关。转矩是克服摩擦所需要的,因为摩擦是一种力,而转矩也是一种力。如果我们给电机提供更多的电流,电机可能在较低的速度下会有更好的表现。

我们的微控制器以及大多数微控制器一般不会提供很大的电流,因为微控制器内部的所有小导线都非常小且脆弱,流过大量电流很容易损坏微控制器。因此,尽管我们能够进行电压变化测试,但我们并没有给电机提供太多电流。我希望能够使用微控制器改变电机的电压,同时让电机根据需要吸取尽可能多的电流。

继续阅读

运动控制(二)直流电机PWM控制

让我们进行一次测试,以在不同电压下获取电机的速度常数。

在这里我们将遇到一个问题:Adruino 是一个数字控制器,所有的微控制器现在都是数字的。这意味着这个装置内部基本上是由开关组成的。Adruino上的每个引脚要么处于开启状态,要么处于关闭状态,但不能处于中间状态。所以我们如何改变电压来测试电机在例如 4 伏特或 3 伏特下的速度呢?

为了解释我们如何做到这一点,让我们深入思考一下当我们突然打开电机的开关时会发生什么。当我们突然从 0 伏特变为 5 伏特时,电机不会立刻从 0 RPM 增加到 350 RPM,因为电机具有一定的惯性。电机开始转动并需要一些时间才能达到速度。当我们关闭开关时,反向的过程发生,电机开始减速,它不会立即停止。实际上,当我们关闭开关时,电机减速的速度比加速的速度更慢。

继续阅读

运动控制(一)直流电机电压与转速

之前我们学习了如何控制称为RC伺服电机的设备。我们了解到,伺服电机是指一个包含电机和传感器的设备,这样我们就可以控制设备的旋转位置。我们从RC伺服电机开始学习,因为它们易于理解,但这些设备并不特别精确,动作也不特别平滑。如果你想构建更精确且动作更平滑的机器人,你需要学习如何进行自己的运动控制。这就是我们将在本单元中学习的内容。

每个电机都有一个常数,称为电机常数(Kv),它将电压与速度、电流与扭矩联系起来。计算公式如下:

继续阅读

传感器(二)响应曲线

我们之前学到传感器通过将物理特性作为输入,并将电气特性作为输出。一张展示输入与输出关系的图表被称为传感器响应曲线。传感器响应曲线可以用来定义和理解许多不同的传感器特性,包括传感器常见的错误类型。我们将首先看一个假设的例子,再来看一些实际的例子。

作为一种可变电阻传感器,电位计(Potentialmeter)将旋转角度(物理输入)转换为电阻(电气输出)。因此,电位计的传感器响应曲线会以旋转角度为X轴,以电阻为Y轴。在传感器响应曲线中,物理特性总是在X轴上,电气特性在Y轴上。需要注意的是,传感器可能会有不止一种电气输出。例如,我们可以规定电位计需要5伏的输入,然后我们可以在Y轴上放电压而不是电阻。

继续阅读

传感器(一)简介和开关

介绍

传感器(sensor)是任何一种设备,它接受诸如光线强度、物体的位置、温度、湿度、物体速度等物理属性作为输入,并将其转换为电气属性,如电压、电流或电阻。

图片

比如在一个机器人项目中,传感器主要用于两个不同的目的:一是提供机器人自身状态的信息,例如关节角度;二是提供环境信息,例如空气的温度或湿度。

继续阅读

小白的AIGC课(6)— Whisper API

Whiper是openai旗下的一款声音转文本的大模型,API 提供两个语音转文本端点,转录(Transcribe)和翻译(Translate),基于最先进的开源 large-v2 Whisper 模型。它们可用于:

  • 将音频转录成音频所用的任何语言。
  • 将音频翻译并转录成英文。

文件上传目前限制为 25 MB,支持以下输入文件类型:mp3、mp4、mpeg、mpga、m4a、wav 和 webm。

继续阅读

机器视觉(三)运动检测

在这篇文章中,我们将探讨机器视觉中的运动检测。有两种非常常见的方法来实现这个目标:第一种称为差分运动检测(motion by difference ),第二种称为光流(optical flow)。差分运动检测是一种简单且计算量不大的方法,但它提供的信息有限。您可以判断是否发生了运动,并确定运动发生的区域,但无法很好地了解运动的方向和速度。另一方面,光流计算量很大,但能提供大量信息。您可以得到图像中不同小区域的运动速度和方向向量。光流需要先了解一种称为遮罩(masking)的机器视觉方法,因此今天我们只讨论差分运动检测。我将首先介绍这种方法的理论背景,然后在我们的Python代码中设置差分运动检测,并进行一些实验以了解其效果。

继续阅读

机器视觉(二)背景减法

我们再来看一个图像减法的应用,这个应用叫做背景减法。我们之前讨论过的图像减法应用是颜色减法,这种方法只有在我们知道所寻找对象的颜色时才有效。而背景减法则不同,即使我们不知道所寻找对象的颜色,它也能起作用。但是,背景减法只在图像非常静止且我们寻找的对象进入或离开视野时才有效。让我们通过编写一些代码来学习背景减法的工作原理。

在背景减法中,我们只想看到视野中新的或不同的东西。我们可以通过拍摄一张照片,将其保存为某个变量,然后等到一个新对象进入视野,再拍摄一张新照片。我们可以将旧图像减去新图像,这样就会得到第三张图像,显示两张图像之间的不同之处。让我们编写一些代码来实现这一点。首先,我们要改变的是,不再将图像分解为各个颜色分量,而是使用一个内置的OpenCV函数将彩色图像转换为灰度图像,这个函数叫做cvtColorcvtColor需要两个输入参数:我们想要转换的图像和一个算法调用,告诉它我们想要如何转换颜色。我们将使用COLOR_BGR2GRAY,使用OpenCV内置的红绿蓝到灰度转换。这种转换不会将图像分解为各个颜色分量,而是以一种模拟人眼感知颜色的方式进行转换。

继续阅读