找回密码
 马上注册

QQ登录

只需一步,快速开始

查看: 5305|回复: 7

移动槽和移动转向关系,两者如何互相转换。

[复制链接]
发表于 2020-1-8 16:09:43 | 显示全部楼层 |阅读模式
新人第一帖,先谢过论坛里的大神吧,通过论坛学了很多东西。
本贴只是我一个新人的一些简单猜想和推论,还没想到如何去做精准的的验证,有错误还请大神们指正。
最近一直在研究EV3的巡线程序,发现移动转向模块在寻线程序中非常好用,想在中鸣或其他器材中实现类似的功能。所以有了以下的一些推论,希望看到帖子的朋友无论是否认可我的推论,大家能沟通交流下,让我明白我的错误和不足,同时能给大家带来启发。
推论过程;
我们设电机的功率值是 X.
移动槽:MA=X       MD=X
移动槽的电机功率为分别控制的,这个不多说;



移动转向
同样我们设电机的功率值是 X,转向值为T,我们分别取T=0;50;100;-50;-100.这几个特殊值时观察两个电机转向变化

T=0>>>>>>>>MA=MD=X;
T=50>>>>>>>MA=X;MD=0;          T= -50>>>>>>>MA=0;MD=X;
T=100>>>>>>MA=X;MD=-X;         T= -100>>>>>>MA=-X;MD=X;
由此可以推导出MA,MD的功率值公式;        
MA=(1+2*T%)X/2
MD=(1-2*T%)X/2
之所以无法确定这个公式正确与否,是因为取得都是几个特殊值,不确定其他中间值是否也适用。不知道有没有大神可以帮忙论证下。



如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
发表于 2020-1-10 18:54:30 | 显示全部楼层
本帖最后由 wm_nemo 于 2020-1-10 18:56 编辑

T>0的时候左轮(A电机)速度是恒定拉满,为功率x。同理,T<0的时候右轮拉满。
这样来说公式应该是Va(左轮)=(T-|T|)/100*x+x
                              Vd(右轮)  =  (T+|T|)/100*x+x

按照你给的公式,T=0的时候左右轮都是一半的速度,而且在大于和小于零的时候两轮速度都在变化,好像不符合实际情况。

如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

 楼主| 发表于 2020-1-11 18:42:05 | 显示全部楼层
wm_nemo 发表于 2020-1-10 18:54
T>0的时候左轮(A电机)速度是恒定拉满,为功率x。同理,T

嗯嗯,是的,这两天验证时也发现问题了。
应该分情况,左转时(T<0):M(右)=X,M(左)=(1+2T%)X.
右转(T>0)时:M(左)=X,M(右)=(1-2T%)X.
感觉你用绝对值方法更方便。
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2023-1-3 19:58:07 | 显示全部楼层

图片
横坐标为移动转向度数
纵坐标为电机功率

实验功率设置的是50
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2023-1-3 20:02:25 | 显示全部楼层
如上图可知
移动转向度数为0时 左电机与右电机功率均为50
移动转向度数为-100~0时,右电机功率始终为50
移动转向度数为0~100时,左电机的功率始终为50

公式大家一起来梳理
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2023-1-3 22:46:28 | 显示全部楼层
本帖最后由 yep 于 2023-1-3 23:26 编辑
  1. power_motor = lambda angle,power: (angle * (100/abs(power*2)) +  power,float(power)) if angle <= 0 else (float(power), -1*angle * (100/abs(power*2)) + power)
  2. left,right=power_motor(-10,50)
  3. print(left,right)
复制代码
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2023-1-3 23:33:30 | 显示全部楼层
这里为两个值的映射关系:
以左电机为例
旋转角度   -100~0
目标功率   -50~50

旋转角度和目标功率变化方式 均为 由小到大。
所以 比例为 :旋转角度之差 ÷ 目标功率之差的绝对值
当我们的目标时 旋转值为-10时 则为   -10 * 比例 + 目标功率

Ps.这里只验算了功率为正的情况。
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2023-1-4 00:08:45 | 显示全部楼层
公式更新 当功率为负得情况上诉公式会出问题:

把原本得比例分母得绝对值去掉。
  1. power_motor = lambda angle,power: (angle * (100/(power*2)) +  power,float(power)) if angle <= 0 else (float(power), -1*angle * (100/(power*2)) + power)
  2. left,right=power_motor(-10,-50)
  3. print(left,right)
复制代码

如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|中文乐高 ( 桂ICP备13001575号-7 )

GMT+8, 2024-5-20 19:31 , Processed in 0.085222 second(s), 20 queries .

Powered by Discuz! X3.5

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表