智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 3139|回复: 22
打印 上一主题 下一主题

自立车转向的简单探究

[复制链接]

3

主题

25

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
462
威望
236
贡献
128
兑换币
143
注册时间
2016-12-16
在线时间
49 小时
毕业学校
西南交通大学
跳转到指定楼层
1#
发表于 2017-6-1 14:36:52 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
自立车的转向受到各方面的影响,比如赛道摩擦,电池电量。其原因在于普通的转向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
回复

使用道具 举报

3

主题

25

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
462
威望
236
贡献
128
兑换币
143
注册时间
2016-12-16
在线时间
49 小时
毕业学校
西南交通大学
2#
 楼主| 发表于 2017-6-1 15:39:30 | 显示全部楼层
蜜汁尴尬
回复 支持 反对

使用道具 举报

3

主题

25

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
462
威望
236
贡献
128
兑换币
143
注册时间
2016-12-16
在线时间
49 小时
毕业学校
西南交通大学
3#
 楼主| 发表于 2017-6-1 17:54:19 | 显示全部楼层
安小赞思密达 发表于 2017-6-1 17:44
楼主试验过没 感觉效果咋样 我现在只用一个动态P感觉转向不太稳

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

使用道具 举报

3

主题

25

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
462
威望
236
贡献
128
兑换币
143
注册时间
2016-12-16
在线时间
49 小时
毕业学校
西南交通大学
4#
 楼主| 发表于 2017-6-1 17:59:47 | 显示全部楼层
1325536866 发表于 2017-6-1 17:57
赞,非常好。
outdir = err * kp_dir + gyro_x*1.5;
最简单的这样也能跑

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

使用道具 举报

3

主题

25

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
462
威望
236
贡献
128
兑换币
143
注册时间
2016-12-16
在线时间
49 小时
毕业学校
西南交通大学
5#
 楼主| 发表于 2017-6-1 18:02:41 | 显示全部楼层
1325536866 发表于 2017-6-1 17:58
直立车不用转向陀螺仪,上不了层次。

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

使用道具 举报

3

主题

25

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
462
威望
236
贡献
128
兑换币
143
注册时间
2016-12-16
在线时间
49 小时
毕业学校
西南交通大学
6#
 楼主| 发表于 2017-6-1 18:31:35 | 显示全部楼层
安小赞思密达 发表于 2017-6-1 18:13
我是用的陀螺仪的值直接乘以一个Kd 没有用偏差变化量 你用的陀螺仪的值直接乘以一个定值?第二个是偏差变 ...

对,用了不同的微分
回复 支持 反对

使用道具 举报

3

主题

25

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
462
威望
236
贡献
128
兑换币
143
注册时间
2016-12-16
在线时间
49 小时
毕业学校
西南交通大学
7#
 楼主| 发表于 2017-6-1 18:33:34 | 显示全部楼层
安小赞思密达 发表于 2017-6-1 18:13
我是用的陀螺仪的值直接乘以一个Kd 没有用偏差变化量 你用的陀螺仪的值直接乘以一个定值?第二个是偏差变 ...

对,两项都用了
回复 支持 反对

使用道具 举报

3

主题

25

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
462
威望
236
贡献
128
兑换币
143
注册时间
2016-12-16
在线时间
49 小时
毕业学校
西南交通大学
8#
 楼主| 发表于 2017-6-1 20:04:42 | 显示全部楼层
安小赞思密达 发表于 2017-6-1 19:40
那要调的参数不又多了俩

我都是大致计算的,没咋调
回复 支持 反对

使用道具 举报

3

主题

25

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
462
威望
236
贡献
128
兑换币
143
注册时间
2016-12-16
在线时间
49 小时
毕业学校
西南交通大学
9#
 楼主| 发表于 2017-6-2 22:02:14 | 显示全部楼层
1325536866 发表于 2017-6-2 10:06
如果你玩过四轴,其实你可以尝试使用串级pid,外环偏差,内环角速度。

没玩过
回复 支持 反对

使用道具 举报

3

主题

25

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
462
威望
236
贡献
128
兑换币
143
注册时间
2016-12-16
在线时间
49 小时
毕业学校
西南交通大学
10#
 楼主| 发表于 2017-6-3 08:58:52 | 显示全部楼层

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

使用道具 举报

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

本版积分规则

关于我们|联系我们|小黑屋|亿加合和智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-5-5 03:41 , Processed in 0.056425 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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