rt-robot 将智能车平台分为两个部分:车底盘和动力学模型
车底盘模块的作用在于定义小车的底盘类型,例如有多少个可以控制的轮子、小车的长宽等物理属性、运动学模型。例如两轮的车底盘搭配两轮差分动力学模型,我们就得到了两轮差分驱动的小车。
车底盘模块下面又包括车轮 (wheel) 模块和动力学模型模块 (kinematics)。
车轮模块需要实现一个能够闭环控制的车轮,因此需要用到电机、编码器和 闭环控制算法。
电机模块需要为不同电机提供统一的接口,能够实现闭环电机转速控制,包括:
- 直流电机
- 舵机
- 步进电机
- CAN接口电机
- 直流无刷电机
编码器模块需要为不同编码器提供统一的接口,能够测量得到当前电机的转速、运动方向等,包括:
- 单相编码器
- AB相编码器
控制器模块需要利用当前编码器测得的转速,和目标设定值,实现对电机的闭环控制,包括:
- 增量式PID
- 位置式PID
动力学模块包含各种小车物理学模型,需要实现小车运动速度 (Vx, Vy, w) 与不同电机转速 (rpm1, rpm2, rpm3, rpm4) 之间的双向切换,包括:
- 两轮差分驱动
- 四轮差分驱动
- 麦克纳姆轮驱动
- Ackerman模型
当前我们的小车坐标系定义如下:
除了全局坐标系外,我们定义了小车的前进方向为 Xr,与前进方向垂直的方向为 Yr,以小车车头逆时针旋转方向为旋转角速度 w 的正方向。