2023-01-03 22:53:49 +08:00
|
|
|
|
# chassis
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 工作流程
|
|
|
|
|
|
|
|
|
|
首先进行初始化,`ChasissInit()`会被`RobotInit()`调用,进行裁判系统、底盘电机的初始化。如果为双板模式,则还会初始化IMU,并且将消息订阅者和发布者的初始化改为`CANComm`的初始化。
|
|
|
|
|
|
|
|
|
|
操作系统启动后,工作顺序为:
|
|
|
|
|
|
|
|
|
|
1. 从cmd模块获取数据(如果双板则从CANComm获取)
|
|
|
|
|
2. 判断当前控制数据的模式,如果为停止则停止所有电机
|
|
|
|
|
3. 根据控制数据,计算底盘的旋转速度
|
|
|
|
|
4. 根据控制数据中yaw电机的编码器值`angle_offset`,将控制数据映射到底盘坐标系下
|
|
|
|
|
5. 进行麦克纳姆轮的运动学解算,得到每个电机的设定值
|
|
|
|
|
6. 获取裁判系统的数据,并根据底盘功率限制对输出进行限幅
|
|
|
|
|
7. 由电机的反馈数据和IMU(如果有),计算底盘当前的真实运动速度
|
|
|
|
|
8. 设置底盘反馈数据,包括运动速度和裁判系统数据
|
2023-02-15 18:28:25 +08:00
|
|
|
|
9. 将反馈数据推送到消息中心(如果双板则通过CANComm发送)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### 后续支持平衡底盘
|
|
|
|
|
|
|
|
|
|
新增一个app balance_chassis
|