- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下代码可以来回转动伺服系统,一遍又一遍。我让它工作了,但是我怎样才能创建一个函数来将它设置到一定程度……例如 60?
我当前的代码:
public static void Main()
{
PWM servo = new PWM(PWMChannels.PWM_PIN_D5, 100, .5, false);
servo.Start();
while (true)
{
double startValue, endValue;
for (startValue = 4.712; startValue < 10.995; startValue = startValue + 0.0005)
{
endValue = System.Math.Sin(startValue) * 0.5 + 0.5;
servo.DutyCycle = endValue;
}
}
}
例如,我如何设置 60 度,然后再将其设置为 164 度?
最佳答案
您需要运行您的代码,对 Helm 机位置进行一些测量,然后将这些测量值返回给您的程序,以便它可以适本地 self 调整。这称为调整和校准。
你最终应该得到一个函数,它的输入是一个所需的角度,而它的输出是你需要向伺服系统发出命令的 PWM 值。在移动伺服之前调用此函数。
注意:你代码中的循环有点奇怪,所以我不知道你的特定伺服是如何控制的。 PWM 控件根据其占空比工作,即高电平与低电平的时间比率,即 0 到 100%。对于这个答案,这等同于 0.0 到 1.0 的 PWM 值。当然,您必须自己将这些想法和方程式整合到您的代码中。
确定您的校准系数(假设伺服控制是线性的,在最简单的变换中将是 gain
和 offset
。y = mx + b
,其中 gain
为 m
,offset
为 b
。):
我正在做一些假设并任意选择数字,但假设测量值是:
我们称这些度量为:
x1 = angle1 = -10;
y1 = pwm1 = 0;
x2 = angle2 = 80;
y2 = pwm2 = 1;
x
有两个值,y
有两个值,因此您可以求解联立方程 y1 = x1 * m + b
和 y2 = x2 * m + b
。由于 m
是 gain
而 b
是 offset
,我们最终得到以下等式:
y = (1/90) * x + (1/9)
或
gain = 1/90;
offset = 1/9;
dacValue = gain * angle + offset;
现在,假设伺服是可重复的,并且 PWM 控制是线性的,当需要 45 度时,您将使用上面的等式应用系数并得到 0.6111 的答案。你用这个命令你的 PWM,你的伺服应该移动。如果你测量伺服位置,它应该在 45 度。
请注意,由于伺服系统、电子电路、机械连接等方面的变化,系统中每个伺服系统的增益和偏移可能会有所不同。如果修改了系统的任何部分,您可能需要重新校准那个伺服系统。
如果范围不是线性的,这会变得更加复杂(例如, Helm 机移动更接近最大值,而最小值更小)。您需要使用二次方程、高阶方程或完全不同的方程。选择取决于您在伺服位置上能够容忍多少误差。
如果 Helm 机不可重复(例如,每次达到特定的 PWM 值, Helm 机都会停在不同的点),控制也会很困难。
另请注意,这是开环控制,至少是您的系统。在伺服系统中,存在一个非常相似的控制回路。它不是PWM 角度
,而是PWM 位置
,其中位置可能未校准到某个真实世界的角度。这就是为什么您需要在程序中处理该工作。
关于c# - 如何使 Helm 机转到某个角度,例如 60 度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23721950/
有没有办法根据全局 values.yaml 有条件地安装 helm 子图?我将所有内部服务和组件都作为子图表,其中之一是消息队列图表。在我的开发和测试环境(本地 k8s)中,我使用 RabbitMQ,
我是 Helm 新手。 我在父图表中有一个默认值。我想默认在每个子图中使用这个值,但也有可能覆盖特定子图的值。 例子: # Parent-chart values.yaml global: sch
我正在使用 Helm chart 来部署大约 15 个微服务。有一个带有 requirements.yaml 的父 Helm chart 其中所有必需的微服务都列为依赖项。 sample requir
我正在为我的应用程序创建一个 Helm chart 。在模板目录中,我有一个包含这个的 config-map.yaml {{- with Values.xyz }} xyz.abc-def: {{ .
我已将图表发布到Chartmuseum。是的,我已经运行了“helm repo更新”。 $ helm search chartmuseum/ NAME C
我正在尝试找到一种方法来删除 Helm 中所有已部署的版本。 看来 Helm does not support删除所有版本,使用 --all否则。 是否有另一种方法可以在一个命令中删除所有 Helm
我想知道helm template --debug之间哪个最好 和 helm install --dry-run --debug 谢谢 最佳答案 两个命令的区别在于helm install --dry
我已经使用 helm 在我的 GKE 集群上部署了 jupyterhub。但是,当我运行 helm list --all(或 helm list --failed 等)时,我看不到任何输出。 我可以确
我正在尝试使用 OCI 注册表 (ACR) 来存储我的 helm 图表。我找到了推送和拉取图表的方法,但我无法以 OCI native 方式登录注册表。 目前我可以通过以下方式登录: az acr l
我正在使用 helm 图表(带有子图表)来部署我的应用程序。我正在使用值文件来设置值。 我正在寻找一种在我的值文件(或任何其他地方)中设置对我的值文件有效的变量的方法。 我的值文件中有一些部分(服务)
我有一个包含以下键/值对的值文件: domains: - name: "one.dev.beta.com" - name: "two.dev.beta.com" - name: "thre
我正在尝试在我的 helm 模板中提供一个条件,以使用 regexMatch 函数检查有效(或相当无效)的主机名。 这是我正在使用的代码行: {{- if regexMatch "(?:[0-9]{1
我有一个带有可选组件的 Helm chart 。似乎支持可选组件的首选方法是将它们分成单独的图表并用标签切换它们。 我试过了,但我的可选组件需要知道图表其余部分的变量(特定服务的地址)。这会导致事情破
我目前正在为多容器应用程序编写 Helm 图表。我们有一堆微服务容器(我们称它们为“应用程序”),它们在通过 K8s 处理的方式上非常相似,并且可以(因此应该)由相同的 Helm 模板处理以避免重复。
我正在安装 prometheus-redis-exporter Helm chart .其Deployment对象有一种注入(inject)注解的方法: # deployment.yaml ...
我无法摆脱这种状态:PENDING_INSTALL .这导致 terraform 无法部署。有没有办法不删除? # helm status core-api LAST DEPLOYED: Mon Ju
我正在寻找一种解决方案,将我的 values.yaml 中的列表转换为逗号分隔的列表。 值.yaml app: logfiletoexclude: - "/var/log/containe
我有一个 k8s 资源的通用模板,我想将其扩展 n 次(如果您好奇,这样我就可以创建 mongo 集群的 n 个成员,并且他们使用 statefulset 资源,以便每个成员都有一个稳定的网络姓名)。
我正在为 Web 服务开发一组 Helm 模板,该模板将整数 ID 作为其配置的一部分。该 Id 成为服务端点的一部分,编码为网络安全的 base64 字符集: 0=A 1=B 2=C ... 26=
我正在尝试将字典从一个 helm 模板传递到另一个 helm 模板,但它在被调用模板中解析为 null。 调用模板 - deployment.yaml 调用模板 - storageNodeAffini
我是一名优秀的程序员,十分优秀!