gpt4 book ai didi

c - 如何使用平方反比定律将光强度转换为线性值

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:46:21 24 4
gpt4 key购买 nike

我正在尝试为机器人编写一些嵌入式固件,机器人将以与光强度成正比的速度向光源移动,这样当机器人接近光源时,它会以线性速率减速。

它的正面有一个光传感器,它将当前的光强度写入变量current_light_intensity,范围为1(低光强度,远)到4095(高光强度,近)。我正在寻找一种算法,将这个值转换为变量 motor_speed,在整数 1 到 8 的范围内,用于控制电机速度(1 是最慢的,8 是最快的)。

至关重要的是,我希望机器人随着距离线性减速(即,假设光强度在距光源 8 米处最低,我希望速度每降低一米)。目前我的光源与速度成正比。然而,光线的增加与距离的平方成反比,这意味着目前我的机器人在大部分距离内全速朝着光线移动,然后在接近时突然减速,因为强度猛增,这对我来说是问题。任何算法建议将不胜感激。语言是 C。

最佳答案

如果 current_light_intensity 确实与当前光强度成正比,那么您可以这样做:

distance = 1.0/sqrt(current_light_intensity); /* range is 1/sqrt(4095) to 1 */
distance = (distance-1.0/sqrt(4095.0))/(1.0 - 1.0/sqrt(4095.0)); /* scaled to [0,1] */
motor_speed = ceil(8.0 * distance);

如果(通常情况下)系统中存在大量非线性(例如光电传感器饱和度),您可能需要手动调整速度(强度)功能,这不是很困难。只需构建一个阈值强度数组,用作查找表。然后用原型(prototype)做一些实验,并调整数组中的值直到行为看起来正确。

关于c - 如何使用平方反比定律将光强度转换为线性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22801067/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com