注册 登录
查看: 1021|回复: 18

【直立车】直立车怎么控制向前向后呢?

[复制链接]
发表于 2014-12-5 12:05:11 | 显示全部楼层 |阅读模式
直立调出来了,加入速度会破坏直立环啊。。。求大家给个思路

本帖被以下淘专辑推荐:

  • · 直立|主题: 3, 订阅: 0
回复

使用道具 举报

发表于 2014-12-6 15:00:38 | 显示全部楼层
我其实在想能不能通过调节零位来控制前进后退,前进就把直立时的零位向前调一点,然后车辆就会前倾,但是重力会把车继续拉下去,那么电机自然要向前转来找回平衡,反复下去就向前走喽
回复 支持 0 反对 1

使用道具 举报

发表于 2014-12-5 14:23:15 | 显示全部楼层
请问你的直立是用野火例程调的吗
回复 支持 反对

使用道具 举报

发表于 2014-12-5 14:57:47 | 显示全部楼层
本来加了速度环都要重新调的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-12-5 15:23:11 | 显示全部楼层
Ray______ 发表于 2014-12-5 14:57
本来加了速度环都要重新调的

我想请教一下。速度控制的方法。比如在直立环里面,我算出了一个电机的占空比的值。如果有速度环,我还会算出一个之 。这两个值怎么处理呢?
回复 支持 反对

使用道具 举报

发表于 2014-12-5 16:14:35 | 显示全部楼层
叠加,记得加方向(正负)
回复 支持 反对

使用道具 举报

发表于 2014-12-5 16:22:51 | 显示全部楼层
我和世界不一样 发表于 1417764191
我想请教一下。速度控制的方法。比如在直立环里面,我算出了一个电机的占空比的值。如果有速度环,我还会算出一个之 。这两个值怎么处理呢?
这样不科学吧,占空比怎么能是自己算出来的呢?,要直立静止或者要向前向后走的话,电机占空比不都是程序自行运算的吗。也许你理解错了吧
来自PC客户端 来自PC客户端
回复 支持 反对

使用道具 举报

发表于 2014-12-5 16:26:12 | 显示全部楼层
加入速度环的话,如果我记得没错的话,它的极性应该是相反的。要静止直立,直接设Speed = 0;
而要前进的话,可以设Speed = 10r/s或者别的数据,单位你也可以用m/s。这样一来,岂不是方便多了
来自PC客户端 来自PC客户端
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-12-5 18:05:12 | 显示全部楼层
草原上的星星 发表于 2014-12-5 16:22
这样不科学吧,占空比怎么能是自己算出来的呢?,要直立静止或者要向前向后走的话,电机占空比不都是程序 ...

现在只有直立的程序:::我是这样算的。
Duty_L=Kp*(Angle-Angle_set)+Kd*Angle_Speed;
Duty_R=Duty_L;
然后把这个Duty就给PWM了啊。

请问对吗。
回复 支持 反对

使用道具 举报

发表于 2014-12-5 18:27:02 | 显示全部楼层
我和世界不一样 发表于 1417773912
现在只有直立的程序:::我是这样算的。
Duty_L=Kp*(Angle-Angle_set)+Kd*Angle_Speed;
Duty_R=Duty_L;
然后把这个Duty就给PWM了啊。

请问对吗。
不知道你那几个参数是什么意思。最终的输出一般是这样的:
Speed_L = AngleControlOut+SpeedControlOut - DirectionControlOut;   //左轮总速度
Speed_R = AngleControlOut+SpeedControlOut + DirectionControlOut;  //右轮总速度
你现在还没有速度控制和方向控制,后面那两个自然就没有了,可以看作是0,那么就有:
Speed_L = AngleControlOut;  //左轮总速度
Speed_R = AngleControlOut;  //右轮总速度
而AngleControlOut = angle * P_ANGLE  + angle_dot * D_ANGLE ;  //直立时所要的速度

没有你那么复杂
来自PC客户端 来自PC客户端
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-12-5 22:00:34 | 显示全部楼层
草原上的星星 发表于 2014-12-5 18:27
不知道你那几个参数是什么意思。最终的输出一般是这样的:
Speed_L = AngleControlOut+SpeedControlOut -  ...

好的。真心谢谢你了。。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-12-6 12:31:50 | 显示全部楼层
草原上的星星 发表于 2014-12-5 18:27
不知道你那几个参数是什么意思。最终的输出一般是这样的:
Speed_L = AngleControlOut+SpeedControlOut -  ...

我想请问下你的速度控制的周期是不是比较长?比如直立周期5ms。速度控制的周期100ms。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-12-6 15:39:21 | 显示全部楼层
山鹰/SamFisher 发表于 2014-12-6 15:00
我其实在想能不能通过调节零位来控制前进后退,前进就把直立时的零位向前调一点,然后车辆就会前倾,但是重 ...

简单地试过一下,那样的话,速度感觉控制不住。
回复 支持 反对

使用道具 举报

发表于 2014-12-6 21:11:09 | 显示全部楼层
我和世界不一样 发表于 1417851561
简单地试过一下,那样的话,速度感觉控制不住。
这是肯定的啊,这样控制得住才怪呢。因为如果这样的话,从一开始速度就是不受控制的,不是吗
来自PC客户端 来自PC客户端
回复 支持 反对

使用道具 举报

发表于 2014-12-6 21:13:27 | 显示全部楼层
我和世界不一样 发表于 1417840310
我想请问下你的速度控制的周期是不是比较长?比如直立周期5ms。速度控制的周期100ms。
嗯,确实是这样的。当时我看技术报告中别人这么做的,然后我也这么做了
来自PC客户端 来自PC客户端
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-12-6 22:20:10 | 显示全部楼层
草原上的星星 发表于 2014-12-6 21:13
嗯,确实是这样的。当时我看技术报告中别人这么做的,然后我也这么做了

我现在周期性中断5ms,对平衡进行控制。每100ms读取速度,算出一个速度环的输出量。。这个量分20次加进去。这样做对吗
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-12-9 21:36:52 | 显示全部楼层
草原上的星星 发表于 2014-12-6 21:13
嗯,确实是这样的。当时我看技术报告中别人这么做的,然后我也这么做了

你好,我想请问你有没有加电机的死区电压啊

回复 支持 反对

使用道具 举报

发表于 2014-12-11 13:59:45 | 显示全部楼层
我和世界不一样 发表于 1418132212
你好,我想请问你有没有加电机的死区电压啊
加了一点,不过这要视实际情况而定,有时不加也是可以的
来自PC客户端 来自PC客户端
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-12-13 16:15:04 | 显示全部楼层
草原上的星星 发表于 2014-12-11 13:59
加了一点,不过这要视实际情况而定,有时不加也是可以的

我现在已经加上速度环了。能够初步实现速度控制了。

根据  Speed_L = AngleControlOut+SpeedControlOut - DirectionControlOut;   //左轮总速度
         Speed_R = AngleControlOut+SpeedControlOut + DirectionControlOut;  //右轮总速度

现在我加上了转向控制,发现跳动很严重啊。根本无法转向。。(用虚拟示波器看过,当DirectionControlOut置为0,AngleControlOut输出平滑,小车稳定。当加上一点DirectionControlOut之后,AngleControlOut抖动非常厉害,所以导致整车在不停地颤动)。。请问这个可能是什么原因呢




回复 支持 反对

使用道具 举报

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

本版积分规则

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