智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 3364|回复: 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 | 只看该作者
蜜汁尴尬
回复 支持 反对

使用道具 举报

6

主题

670

帖子

1

精华

常驻嘉宾

Rank: 8Rank: 8

积分
5002

优秀会员奖章活跃会员奖章在线王奖章论坛元老奖章

QQ
威望
2192
贡献
1684
兑换币
120
注册时间
2015-11-19
在线时间
563 小时
毕业学校
新东方烹饪学院
3#
发表于 2017-6-1 17:44:42 | 只看该作者
楼主试验过没 感觉效果咋样 我现在只用一个动态P感觉转向不太稳
回复 支持 反对

使用道具 举报

3

主题

25

帖子

0

精华

中级会员

Rank: 3Rank: 3

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

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

使用道具 举报

7

主题

365

帖子

0

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
7770
威望
3761
贡献
2379
兑换币
2406
注册时间
2013-4-19
在线时间
815 小时
5#
发表于 2017-6-1 17:57:05 | 只看该作者
赞,非常好。
outdir = err * kp_dir + gyro_x*1.5;
最简单的这样也能跑
回复 支持 反对

使用道具 举报

7

主题

365

帖子

0

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
7770
威望
3761
贡献
2379
兑换币
2406
注册时间
2013-4-19
在线时间
815 小时
6#
发表于 2017-6-1 17:57:13 | 只看该作者
赞,非常好。
outdir = err * kp_dir + gyro_x*1.5;
最简单的这样也能跑
回复 支持 反对

使用道具 举报

7

主题

365

帖子

0

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
7770
威望
3761
贡献
2379
兑换币
2406
注册时间
2013-4-19
在线时间
815 小时
7#
发表于 2017-6-1 17:58:18 | 只看该作者
直立车不用转向陀螺仪,上不了层次。
回复 支持 反对

使用道具 举报

3

主题

25

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
462
威望
236
贡献
128
兑换币
143
注册时间
2016-12-16
在线时间
49 小时
毕业学校
西南交通大学
8#
 楼主| 发表于 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 小时
毕业学校
西南交通大学
9#
 楼主| 发表于 2017-6-1 18:02:41 | 只看该作者
1325536866 发表于 2017-6-1 17:58
直立车不用转向陀螺仪,上不了层次。

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

使用道具 举报

6

主题

670

帖子

1

精华

常驻嘉宾

Rank: 8Rank: 8

积分
5002

优秀会员奖章活跃会员奖章在线王奖章论坛元老奖章

QQ
威望
2192
贡献
1684
兑换币
120
注册时间
2015-11-19
在线时间
563 小时
毕业学校
新东方烹饪学院
10#
发表于 2017-6-1 18:13:42 | 只看该作者
搬砖工 发表于 2017-6-1 17:54
试验了得,以前圆环转向转不动,但十字还会骑路肩,加了之后好多了

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-26 02:41 , Processed in 0.145417 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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