直立车各环的调试_直立行走的车调试心得

关于

PID

,我所看到的最方便的方法。就是:

//====PID

计算

duty

= Kp_ang * angle ;

// =

比例系数

*

角度

duty += Kd_ang * angle_dot ;

// =

微分系数

*

角速度

duty += Kp_spd * speed ;

// =

比例系数

*

车速

duty += Ki_spd * position ;

// =

积分系数

*

车位移

//

说明:两个控制环

.

合并为

PWM

占空

,

驱动电机

.

//

1:

倾角控制环

(

角度

,

角速度

),

PD

运算

.

//

2:

车速控制环

(

车速

,

车位移

),

PI

运算

.

我也想这么做。不过目前暂时只做了第

1

步。

我用到了

PID

PWM=ut=Kp1*

角度

+Kd1*

角速度

+Kp2*

车速

+Ki2*

车位移。但是和传统的

PID

有点不太一样,一般

PID

就是单输入单输出,但这里给定为角度

0

和车位置

0

,输出为角度和车位置。其实用

PID

是最简洁、最粗

糙的方法,效果好的话都用到了现代控制,

Inputs

angle, angle_rate: the tilt angle of the scooter in radians and

its derivative in radians/sec

steer_knob: the reading from the steering knob, between -1 and +1.

Balance

balance_torque = 5.0 * (angle - rest_angle) + 0.4 * angle_rate

Limit top speed by tilting back

overspeed = max(0, cur_speed - 0.5)

if (overspeed > 0) {

overspeed_integral = min(0.4, overspeed_integral + min(0.2,

overspeed+0.05) * dt)

}

else {

overspeed_integral = max(0, overspeed_integral - 0.04*dt)

}

rest_angle = 0.4*overspeed + 0.7*overspeed_integral

Steer. Decrease steering rate at high speed

steer_cmd = 0.07/(0.3+abs(cur_speed)) * steer_knob

Track current speed

cur_speed += 1.2 * balance_torque * dt

Differential steering

left_motor_pwm = balance_torque + cur_speed + steer_cmd

right_motor_pwm = balance_torque + cur_speed - steer_cmd

Outputs

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值