首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python:超调目标,需要矢量或PID调整?

Python:超调目标,需要矢量或PID调整?
EN

Stack Overflow用户
提问于 2019-12-06 06:21:19
回答 1查看 67关注 0票数 2

所以,我正在使用一架无人机,我想把它放在两个物体之间的中心,然而,无人机会在移动操作中超调,然后以相反的方向回到中心,再次超调并无休止地这样做。有没有一种方法可以补偿,或者使用某种PID,使其不会超出中心?

要查看实时效果,请访问:UAV cant center

我现在使用的代码:

代码语言:javascript
复制
if (sensor.left > sensor.right):
    velocity_x = 0.2
    print('Moving left')
if (sensor.left < sensor.right):
    velocity_x = -0.2
    print('Moving right')
if (sensor.left == sensor.right):
    velocity_x = 0

uav.move(velocity_x,velocity_y)

有什么建议可以让它保持更稳定吗?我认为向量更适合保持它的稳定性,但是没有关于使用什么的参考点。我在网上看到了一些使用向量的教程,但它们都存在同样的“超调”问题。

下面是传感器和调试信息的输出:n center,停止!在中间,反转速度!

代码语言:javascript
复制
front=1.924
back=0.66
left=0.516
right=0.447
Moving left
Front = 1.924 
Back = 0.66 
Left = 0.516 
Right = 0.447 
Vel X = 0.0 
Vel Y = 0.1 
--------------------------------
front=1.926
back=0.669
left=0.525
right=0.445
Moving left
Front = 1.926 
Back = 0.669 
Left = 0.525 
Right = 0.445 
Vel X = 0.0 
Vel Y = 0.1 
--------------------------------
front=1.921
back=0.668
left=0.535
right=0.445
Moving left
Front = 1.921 
Back = 0.668 
Left = 0.535 
Right = 0.445 
Vel X = 0.0 
Vel Y = 0.1 
--------------------------------
front=1.912
back=0.676
left=0.54
right=0.443
Moving left
Front = 1.912 
Back = 0.676 
Left = 0.54 
Right = 0.443 
Vel X = 0.0 
Vel Y = 0.1 
EN

回答 1

Stack Overflow用户

发布于 2019-12-06 06:40:34

我相信这样的东西会根据硬件限制来接受取值范围,代码是这样的:

代码语言:javascript
复制
if (sensor.left > sensor.right):
    velocity_x = 0.2/i    #<====
    print('Moving left to center')
if (sensor.left < sensor.right):
    velocity_x = -0.2/i   #<====
    print('Moving right to center')
if (sensor.left == sensor.right):
    velocity_x = 0
i+=0.1 # i initial value is equal to 1 <====
uav.move(velocity_x,velocity_y)

或者可能想要更改最后一条if语句,因为期望现实世界中的这些传感器完全相等是不公平的。

代码语言:javascript
复制
from __experimental__ import approx
if (sensor.left ~= sensor.right):
    velocity_x = 0

使用这个近似等于运算符取决于您的python版本,但您可以在一个小函数中使用它,并在您的条件语句中使用它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59204131

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档