智能车制作

标题: 自立车转向的简单探究 [打印本页]

作者: 搬砖工    时间: 2017-6-1 14:36
标题: 自立车转向的简单探究
自立车的转向受到各方面的影响,比如赛道摩擦,电池电量。其原因在于普通的转向PD算法没有反馈环节,导致转向差异。下面对小车过弯做一个简单探究。角速度w=v/r;近似的我们认为转弯半径r和小车寻线偏差err成反比即r=1/err.那么小车过弯需要的角速度我们已经计算出来了即w=v*err,也就是速度与寻线偏差的乘积。我们通过水平放置的陀螺仪检测当前的角速度,再根据需要的角速度做一个反馈,这样过弯的姿态就基本被控制下来了。下面给出我的代码再进行相关说明

W_err=speed_now*err*0.166;//根据寻线偏差和速度以及采集的陀螺仪值计算角速度偏差,这儿有个0.166这个角速度换算系
                                               数,因为我们所用的物理量都没有单位,我们也不知道单位,所以换算关系需要测定。
outdir = err * kp_dir +(errDot)*kd_dir-gyro_x*1.5+W_err*6;

可以看到整个公式有4项,前面两项为普通的寻线PD项;
第三项是根据陀螺仪也是给了一个D项,从姿态上限制转向过冲,寻线的D是从寻线上限制转向过冲的,两个D作用相同;
第四项是角速度反馈的P项,至于角速度反馈D项是否需要看情况吧。
关于角速度换算系数的测定方法:
1.在一个简单的赛道赛道上调好一组寻线PD,姿态调好了,就认为你的当前角速度与需要角速度是匹配的,即W_err是为零的。
2.这时候找到这个让W_err为零的系数就可以了。





补充内容 (2017-6-1 15:21):
W_err=speed_now*err*0.166-gyro_x

作者: 搬砖工    时间: 2017-6-1 15:39
蜜汁尴尬
作者: 安小赞思密达    时间: 2017-6-1 17:44
楼主试验过没 感觉效果咋样 我现在只用一个动态P感觉转向不太稳
作者: 搬砖工    时间: 2017-6-1 17:54
安小赞思密达 发表于 2017-6-1 17:44
楼主试验过没 感觉效果咋样 我现在只用一个动态P感觉转向不太稳

试验了得,以前圆环转向转不动,但十字还会骑路肩,加了之后好多了

作者: 1325536866    时间: 2017-6-1 17:57
赞,非常好。
outdir = err * kp_dir + gyro_x*1.5;
最简单的这样也能跑
作者: 1325536866    时间: 2017-6-1 17:57
赞,非常好。
outdir = err * kp_dir + gyro_x*1.5;
最简单的这样也能跑
作者: 1325536866    时间: 2017-6-1 17:58
直立车不用转向陀螺仪,上不了层次。
作者: 搬砖工    时间: 2017-6-1 17:59
1325536866 发表于 2017-6-1 17:57
赞,非常好。
outdir = err * kp_dir + gyro_x*1.5;
最简单的这样也能跑

我的最初版就是这样,但电池电压对转向的影响太大了才加了后面的

作者: 搬砖工    时间: 2017-6-1 18:02
1325536866 发表于 2017-6-1 17:58
直立车不用转向陀螺仪,上不了层次。

如果陀螺仪只起微分的作用的话还是太粗略了,所以想到加一个反馈环节

作者: 安小赞思密达    时间: 2017-6-1 18:13
搬砖工 发表于 2017-6-1 17:54
试验了得,以前圆环转向转不动,但十字还会骑路肩,加了之后好多了

我是用的陀螺仪的值直接乘以一个Kd 没有用偏差变化量 你用的陀螺仪的值直接乘以一个定值?第二个是偏差变化量乘以Kd?

作者: 搬砖工    时间: 2017-6-1 18:31
安小赞思密达 发表于 2017-6-1 18:13
我是用的陀螺仪的值直接乘以一个Kd 没有用偏差变化量 你用的陀螺仪的值直接乘以一个定值?第二个是偏差变 ...

对,用了不同的微分

作者: 搬砖工    时间: 2017-6-1 18:33
安小赞思密达 发表于 2017-6-1 18:13
我是用的陀螺仪的值直接乘以一个Kd 没有用偏差变化量 你用的陀螺仪的值直接乘以一个定值?第二个是偏差变 ...

对,两项都用了

作者: 安小赞思密达    时间: 2017-6-1 19:40
搬砖工 发表于 2017-6-1 18:33
对,两项都用了

那要调的参数不又多了俩

作者: 搬砖工    时间: 2017-6-1 20:04
安小赞思密达 发表于 2017-6-1 19:40
那要调的参数不又多了俩

我都是大致计算的,没咋调

作者: 1325536866    时间: 2017-6-2 10:06
如果你玩过四轴,其实你可以尝试使用串级pid,外环偏差,内环角速度。
作者: 搬砖工    时间: 2017-6-2 22:02
1325536866 发表于 2017-6-2 10:06
如果你玩过四轴,其实你可以尝试使用串级pid,外环偏差,内环角速度。

没玩过

作者: 搬砖工    时间: 2017-6-3 08:58
搬砖工 发表于 2017-6-2 22:02
没玩过

我试过speed_now*err*0.166-gyro_x只用这一项乘上一个系数也能跑,相当于根据偏差与速度计算目标角速度,在与当前角速度做差给了一个比例环节

作者: 竹鱼。    时间: 2017-6-5 10:29
搬砖工 发表于 2017-6-1 17:54
试验了得,以前圆环转向转不动,但十字还会骑路肩,加了之后好多了

赞,把转向pd动态联系起来。但是圆环和十字会这样我认为是图像补线的问题呢

作者: 搬砖工    时间: 2017-6-5 10:48
竹鱼。 发表于 2017-6-5 10:29
赞,把转向pd动态联系起来。但是圆环和十字会这样我认为是图像补线的问题呢

是张钜泽吗

作者: xgl    时间: 2017-6-5 20:09
楼主 能帮我说明一下普通寻线的D项就是偏差微分怎么计算的吗?我们现在用的PD控制 p项为偏差,d项为转向角速度,,,

作者: 搬砖工    时间: 2017-6-6 08:18
xgl 发表于 2017-6-5 20:09
楼主 能帮我说明一下普通寻线的D项就是偏差微分怎么计算的吗?我们现在用的PD控制 p项为偏差,d项为转向角 ...

就是用这次偏差减上次偏差 errDot = err - errLast;

作者: Traverlcq    时间: 2017-6-6 09:54
抢个沙发 值得一试 感谢楼主分享思路
作者: 搬砖工    时间: 2017-6-6 13:12
Traverlcq 发表于 2017-6-6 09:54
抢个沙发 值得一试 感谢楼主分享思路

嘿嘿,加油加油





欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2