如图:已知四个轮子的速度以及左右前后轮子的间距,求解四个轮子对称中心的线速度和角速度?
大概就是这样,由于不是人工智能专业,给你找了这个,哈哈
PWM, 线性速度,左右轮子速度和角速度的关系
机器人线性速度: RobotV
左右轮速度: LeftWheelV RightWheelV
角速度: YawRate
RobotV = ( LeftWheelV + RightWheelV ) / 2 //公式1
YawRate = delta_t * abs( LeftWheelV - RightWheelV ) //公式2
PWM 与轮子的关系:
xxxxWheelV = PWM *factor + offset //公式3
在实际运行中发现,左右轮的性能因为硬件有所差异,所以 delta_t, factor, offset 对左右两边来讲是不一样的。所以它们各有一套参数。这些参数的确定是要通过大量的数据采集后进行分析得出来的。下面我们讨论如何确定公式2,3中的参数
3. 左右轮子速度和PID控制
PWM与轮子转速的关系并不是不变的,当电池放电一段时间后,要增大factor的值才能达到期望的速度。这就是PID的作用,PID要求给一个初始PWM值,上面的公式3就可以算出这个初始值,剩下就交给反馈调整了, ROS有个pid类。
1。左上图 Forward left wheel 前行左轮
2。左下图 Backward left wheel 后退左轮
3。右上图 Forward right wheel 前行右轮
4。右下图 Backward right wheel 后退右轮
横坐标是PWM值,纵坐标是速度(m/s)
采样数据的结果非常完美,标准的线性关系图。同时也能看出来左右两轮确实有不一致的地方,但是前进后退的数据很统一。这样就可以测出factor, offset两个参数,左右两轮个一套。
5.左右轮速度差与角速度实验数据分析
公式2的分析比较复杂,但是一旦确定就不变了,除非改变环境。分析出delta_t
转弯分为10种类型:
1,左轮不转,右轮PWM从20至100的区间平均取10个值,向前跑10轮。每轮跑360度,测出角速度和线速度。
2,右轮不转,左轮PWM从20至100的区间平均取10个值,向前跑10轮。每轮跑360度,测出角速度和线速度。
3,左轮比右轮转的慢,速度差逐渐加大取10个值,向前跑10轮。每轮跑360度,测出角速度和线速度。
4,右轮比左轮转的慢,速度差逐渐加大取10个值,向前跑10轮。每轮跑360度,测出角速度和线速度。
5,左轮向前,右轮向后,速度差逐渐加大取10个值,顺时针跑10轮。每轮跑360度,测出角速度和线速度。
6, 左轮不转,右轮PWM从20至100的区间平均取10个值,向后跑10轮。每轮跑360度,测出角速度和线速度。
7,右轮不转,左轮PWM从20至100的区间平均取10个值,向后跑10轮。每轮跑360度,测出角速度和线速度。
8,左轮比右轮转的慢,速度差逐渐加大取10个值,向后跑10轮。每轮跑360度,测出角速度和线速度。
9,右轮比左轮转的慢,速度差逐渐加大取10个值,向后跑10轮。每轮跑360度,测出角速度和线速度。
10,左轮向后,右轮向前,速度差逐渐加大取10个值,逆时针跑10轮。每轮跑360度,测出角速度和线速度。