智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 2194|回复: 5
打印 上一主题 下一主题

[软件类] 吉他手老师求助

[复制链接]

6

主题

21

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1954

优秀会员奖章在线王奖章

威望
605
贡献
157
兑换币
0
注册时间
2012-2-22
在线时间
596 小时
毕业学校
安大
跳转到指定楼层
1#
发表于 2012-4-13 12:53:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
void SpeedControl(void) {
    float fDelta;
    float fP, fI;
    g_fCarSpeed = (g_nLeftMotorPulseSigma +
                   g_nRightMotorPulseSigma) / 2;
    g_nLeftMotorPulseSigma = g_nRightMotorPulseSigma = 0;
    g_fCarSpeed *= CAR_SPEED_CONSTANT;
    fDelta = CAR_SPEED_SETfDelta - g_fCarSpeed;

    fP = fDelta * SPEED_CONTROL_P;
    fI = fDelta * SPEED_CONTROL_I;

    g_fSpeedControlIntegral += fI;

    g_fSpeedControlOutOld = g_fSpeedControlOutNew;
    g_fSpeedControlOutNew = fP + g_fSpeedControlIntegral;
}
void SpeedControlOutput(void) {
    float fValue;
    fValue = g_fSpeedControlOutNew - g_fSpeedControlOutOld;
    g_fSpeedControlOut = fValue * (g_nSpeedControlPeriod + 1) /
                             SPEED_CONTROL_PERIOD +
                             g_fSpeedControlOutOld;
}
用上面的算法,增大 SPEED_CONTROL_P小车能在4-5厘米范围内来回摆动,不能保持静止,增大 fI = fDelta * SPEED_CONTROL_I小车向一方向跑,是怎么回事?

200

主题

2621

帖子

1

精华

杰出人士

蜗牛

Rank: 12Rank: 12Rank: 12

积分
12488

优秀会员奖章活跃会员奖章论坛骨干奖章论坛元老奖章在线王奖章资源大师奖章

QQ
威望
5973
贡献
3101
兑换币
1999
注册时间
2011-10-21
在线时间
1707 小时
2#
发表于 2012-4-13 16:14:50 | 只看该作者
借鉴的是思路不是照搬程序
回复 支持 反对

使用道具 举报

6

主题

118

帖子

0

精华

高级会员

Rank: 4

积分
844
威望
482
贡献
136
兑换币
2
注册时间
2012-2-23
在线时间
114 小时
3#
发表于 2012-6-10 14:23:40 | 只看该作者
qinlu123 发表于 2012-4-13 16:14
借鉴的是思路不是照搬程序

if(!MOTOR_LEFT_SPEED_POSITIVE)  g_nLeftMotorPulse = -g_nLeftMotorPulse;   
   if(!MOTOR_RIGHT_SPEED_POSITIVE)  g_nRightMotorPulse = -g_nRightMotorPulse;
   g_nLeftMotorPulseSigma += g_nLeftMotorPulse;
    g_nRightMotorPulseSigma += g_nRightMotorPulse;
上式代码中g_nLeftMotorPulse   与 g_nLeftMotorPulseSigma有什么区别吗?有点不懂。。。。谢谢。。。坐等回复
回复 支持 反对

使用道具 举报

6

主题

118

帖子

0

精华

高级会员

Rank: 4

积分
844
威望
482
贡献
136
兑换币
2
注册时间
2012-2-23
在线时间
114 小时
4#
发表于 2012-6-10 14:24:31 | 只看该作者
if(!MOTOR_LEFT_SPEED_POSITIVE)  g_nLeftMotorPulse = -g_nLeftMotorPulse;   
   if(!MOTOR_RIGHT_SPEED_POSITIVE)  g_nRightMotorPulse = -g_nRightMotorPulse;
   g_nLeftMotorPulseSigma += g_nLeftMotorPulse;
    g_nRightMotorPulseSigma += g_nRightMotorPulse;
上式代码中g_nLeftMotorPulse   与 g_nLeftMotorPulseSigma有什么区别吗?有点不懂。。。。谢谢。。。坐等回复
回复 支持 反对

使用道具 举报

2

主题

44

帖子

0

精华

高级会员

Rank: 4

积分
524
威望
289
贡献
171
兑换币
36
注册时间
2012-2-26
在线时间
32 小时
5#
发表于 2013-1-16 18:01:02 | 只看该作者
张景张景 发表于 2012-6-10 14:24
if(!MOTOR_LEFT_SPEED_POSITIVE)  g_nLeftMotorPulse = -g_nLeftMotorPulse;   
   if(!MOTOR_RIGHT_SPEED ...

那个问题看明白了么 ??我也不懂
回复 支持 反对

使用道具 举报

5

主题

23

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
458
威望
213
贡献
141
兑换币
132
注册时间
2013-5-20
在线时间
52 小时
毕业学校
北京理工大学
6#
发表于 2013-5-23 20:28:12 | 只看该作者
这个问题应该是怎么解决啊!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-11 03:52 , Processed in 0.050393 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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