上传了所有todo任务,为底盘新增了超级电容模块
This commit is contained in:
parent
9c9ea14bde
commit
6d4a0cb148
21
README.md
21
README.md
|
@ -87,7 +87,26 @@
|
||||||
} Motor_Controller_s;
|
} Motor_Controller_s;
|
||||||
```
|
```
|
||||||
|
|
||||||
数据类型单一、结构不复杂的类型以`_t`后缀结尾(表明这是一种数据,type);复杂的结构体类型使用`_s`结尾,表明其功能和内涵多(structure)。
|
数据类型单一、结构不复杂的类型以`_t`后缀结尾(表明这是一种数据,type);复杂的结构体类型使用`_s`结尾,表明其功能和内涵多(structure)。对于某个bsp、module,其类型结构体应该称为`xxxInstance`:
|
||||||
|
|
||||||
|
```c
|
||||||
|
typedef struct _
|
||||||
|
{
|
||||||
|
CAN_HandleTypeDef *can_handle; // can句柄
|
||||||
|
CAN_TxHeaderTypeDef txconf; // CAN报文发送配置
|
||||||
|
uint32_t tx_id; // 发送id
|
||||||
|
uint32_t tx_mailbox; // CAN消息填入的邮箱号
|
||||||
|
uint8_t tx_buff[8]; // 发送缓存,最大为8
|
||||||
|
uint8_t rx_buff[8]; // 接收缓存
|
||||||
|
uint32_t rx_id; // 接收id
|
||||||
|
uint8_t rx_len; // 接收长度,可能为0-8
|
||||||
|
// 接收的回调函数,用于解析接收到的数据
|
||||||
|
void (*can_module_callback)(struct _ *); // callback needs an instance to tell among registered ones
|
||||||
|
} CANInstance;
|
||||||
|
#pragma pack()
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## BSP层(Board Sopport Package)
|
## BSP层(Board Sopport Package)
|
||||||
|
|
||||||
|
|
241
TODO.md
241
TODO.md
|
@ -0,0 +1,241 @@
|
||||||
|
# Work To be done & optimized
|
||||||
|
|
||||||
|
- **待完成**:不完成可能导致整车功能不完整
|
||||||
|
- **待优化**:对已有的功能进行性能提高/模块解耦/可维护性增强
|
||||||
|
- **待添加**:不紧急的/锦上添花的功能
|
||||||
|
|
||||||
|
**==标为黄色高亮的代表紧急程度高。==**
|
||||||
|
|
||||||
|
## BSP
|
||||||
|
|
||||||
|
### 待完成
|
||||||
|
|
||||||
|
#### bsp_buzzer
|
||||||
|
|
||||||
|
- [ ] 添加初始化完成时的音乐播放
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### 待优化
|
||||||
|
|
||||||
|
#### bsp_buzzer
|
||||||
|
|
||||||
|
需要和**monitor**模块配合。
|
||||||
|
|
||||||
|
- [ ] 增加错误或异常提示音
|
||||||
|
- [ ] 增加功能提示音
|
||||||
|
|
||||||
|
#### bsp_led
|
||||||
|
|
||||||
|
需要和**monitor**模块配合。这同时会影响到module层的led_task,放在这一并解决。
|
||||||
|
|
||||||
|
- [ ] 增加错误或异常流水灯
|
||||||
|
- [ ] 增加功能点灯
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### 待添加
|
||||||
|
|
||||||
|
#### bsp_spi
|
||||||
|
|
||||||
|
- [ ] 增加spi的板级支持包,供IMU使用和其他外接模块使用
|
||||||
|
|
||||||
|
#### bsp_iic
|
||||||
|
|
||||||
|
- [ ] 增加iic的板级支持包,供磁力计和OLED屏等使用
|
||||||
|
- [ ] 增加软件iic的支持包
|
||||||
|
|
||||||
|
#### bsp_gpio
|
||||||
|
|
||||||
|
- [ ] 增加GPIO引脚的控制(有待商榷是否需要单独添加,HAL实际上已经提供较好的封装)
|
||||||
|
|
||||||
|
#### bsp_usb
|
||||||
|
|
||||||
|
- [ ] 增加usb的支持,用于虚拟串口或和PC进行高速通信
|
||||||
|
|
||||||
|
#### bsp_blueteetch
|
||||||
|
|
||||||
|
- [ ] 增加蓝牙功能,方便调试和测试
|
||||||
|
|
||||||
|
#### bsp_wifi
|
||||||
|
|
||||||
|
- [ ] 增加无线网络功能,方便调试和测试
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Module
|
||||||
|
|
||||||
|
### 待完成
|
||||||
|
|
||||||
|
#### ==servo_motor==
|
||||||
|
|
||||||
|
舵机模块,需要预先定义90/180/360连续旋转的电机类型,并且能够设定max和min位置。
|
||||||
|
|
||||||
|
- [ ] 编写舵机模块
|
||||||
|
|
||||||
|
#### ==monitor==
|
||||||
|
|
||||||
|
应用和模块监视功能,用于提供掉线和异常检测与应对机制,和底层的buzzer、led、oled等配合提供快速的问题定位。
|
||||||
|
|
||||||
|
- [ ] 编写monitor
|
||||||
|
|
||||||
|
#### LKMotor
|
||||||
|
|
||||||
|
LK系列电机,目前仅用于平衡步兵驱动轮。后续可能使用其他瓴控电机。
|
||||||
|
|
||||||
|
- [ ] 重构LKMotor模块
|
||||||
|
|
||||||
|
#### HTMotor
|
||||||
|
|
||||||
|
海泰04电机。目前仅用于平衡步兵关节电机。
|
||||||
|
|
||||||
|
- [ ] 重构海泰电机模块
|
||||||
|
|
||||||
|
#### imu
|
||||||
|
|
||||||
|
- [ ] 增加角速度的反馈,并且能够获取加速度值(目前看来修改反馈数据类型定义即可)
|
||||||
|
|
||||||
|
#### refereeUI
|
||||||
|
|
||||||
|
- [ ] 提供UI绘制封装
|
||||||
|
- [ ] 绘制电容剩余容量/当前底盘状态/当前云台状态/底盘位置/射表
|
||||||
|
- [ ] 绘制视觉识别UI/识别状态/击打状态
|
||||||
|
|
||||||
|
#### ==master_machine==
|
||||||
|
|
||||||
|
- [ ] 增加IMU数据的时间戳
|
||||||
|
- [ ] 增加加速度计数据
|
||||||
|
- [ ] 重构seasky protocol的接口
|
||||||
|
- [ ] 增加数据未更新的处理
|
||||||
|
|
||||||
|
#### LQR
|
||||||
|
|
||||||
|
- [ ] 通用的LQR控制器
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### 待优化
|
||||||
|
|
||||||
|
#### imu
|
||||||
|
|
||||||
|
需要重写部分数据结构,并在bsp_spi完成之后移植到新的bsp上。
|
||||||
|
|
||||||
|
- [ ] 重构imu模块
|
||||||
|
|
||||||
|
#### motor_task
|
||||||
|
|
||||||
|
- [ ] 给不同的伺服机构添加不同的执行频率
|
||||||
|
|
||||||
|
#### remote_control
|
||||||
|
|
||||||
|
- [ ] 将键盘数据解析替换为位域操作
|
||||||
|
|
||||||
|
#### referee
|
||||||
|
|
||||||
|
- [ ] 优化三个裁判系统模块的组织关系
|
||||||
|
|
||||||
|
#### message_center
|
||||||
|
|
||||||
|
- [ ] 增加队列剩余信息和数据时间戳的支持
|
||||||
|
|
||||||
|
#### can_comm
|
||||||
|
|
||||||
|
- [ ] 增加can_comm数据未更新的处理
|
||||||
|
|
||||||
|
#### controller
|
||||||
|
|
||||||
|
- [ ] 增加前馈数据
|
||||||
|
|
||||||
|
#### user_lib
|
||||||
|
|
||||||
|
- [ ] 将所有通用的计算函数和常用函数汇集在此
|
||||||
|
|
||||||
|
#### dji_motor
|
||||||
|
|
||||||
|
- [ ] 增加3508和2006的开环零位校准函数
|
||||||
|
- [ ] 为实例增加低通滤波系数变量,使不同电机有不同的配置
|
||||||
|
|
||||||
|
### 待添加
|
||||||
|
|
||||||
|
#### step_motor
|
||||||
|
|
||||||
|
- [ ] 增加步进电机模块
|
||||||
|
|
||||||
|
#### referee_communication
|
||||||
|
|
||||||
|
- [ ] 增加裁判系统多机通信功能
|
||||||
|
|
||||||
|
#### controller
|
||||||
|
|
||||||
|
- [ ] 增加扰动观测器,可能需要新增模块
|
||||||
|
- [ ] 增加模型控制器,可能需要新增模块
|
||||||
|
|
||||||
|
#### master_process
|
||||||
|
|
||||||
|
- [ ] 兼容其他通信方式,如can,spi,usb等
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## APP
|
||||||
|
|
||||||
|
### 待完成
|
||||||
|
|
||||||
|
#### ==robot_cmd==
|
||||||
|
|
||||||
|
- [ ] 键盘控制
|
||||||
|
- [ ] 鼠标控制
|
||||||
|
- [ ] 双板兼容
|
||||||
|
|
||||||
|
#### ==chassis==
|
||||||
|
|
||||||
|
- [ ] 根据裁判系统的功率数据和超级电容,进行输出限幅
|
||||||
|
- [ ] 双板兼容
|
||||||
|
|
||||||
|
#### ==shoot==
|
||||||
|
|
||||||
|
- [ ] 优化单发模式的位置闭环(是否要改成速度闭环,然后定时?)
|
||||||
|
- [ ] 增加卡弹检测和反转
|
||||||
|
- [ ] 弹仓盖控制(需待servo_motor完成)
|
||||||
|
|
||||||
|
- [ ] 双发射机构兼容
|
||||||
|
- [ ] 42mm发射机构兼容
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### 待优化
|
||||||
|
|
||||||
|
#### robot_cmd
|
||||||
|
|
||||||
|
- [ ] 解耦各个应用的运行模式
|
||||||
|
- [ ] 优化消息发布和接收性能
|
||||||
|
|
||||||
|
#### gimbal
|
||||||
|
|
||||||
|
- [ ] 增加不同模式之间的过渡(是否有必要?)
|
||||||
|
- [ ] 增加底盘速度前馈控制
|
||||||
|
|
||||||
|
#### chassis
|
||||||
|
|
||||||
|
- [ ] 根据电机的实际速度计算底盘的真实运动
|
||||||
|
- [ ] 若为双板,根据IMU的数据对电机实际速度进行融合
|
||||||
|
|
||||||
|
- [ ] 增加不同模式之间的过渡(是否有必要?)
|
||||||
|
|
||||||
|
#### shoot
|
||||||
|
|
|
@ -33,10 +33,11 @@
|
||||||
#include "ins_task.h"
|
#include "ins_task.h"
|
||||||
static CANCommInstance *chasiss_can_comm; // 双板通信CAN comm
|
static CANCommInstance *chasiss_can_comm; // 双板通信CAN comm
|
||||||
IMU_Data_t *Chassis_IMU_data;
|
IMU_Data_t *Chassis_IMU_data;
|
||||||
#endif // CHASSIS_BOARD
|
#endif // CHASSIS_BOARD
|
||||||
|
|
||||||
static referee_info_t *referee_data; // 裁判系统的数据
|
static referee_info_t *referee_data; // 裁判系统的数据
|
||||||
// static SuperCAP* cap; 尚未增加超级电容
|
static SuperCapInstance *cap; // 超级电容
|
||||||
static DJIMotorInstance *motor_lf; // left right forward back
|
static DJIMotorInstance *motor_lf; // left right forward back
|
||||||
static DJIMotorInstance *motor_rf;
|
static DJIMotorInstance *motor_rf;
|
||||||
static DJIMotorInstance *motor_lb;
|
static DJIMotorInstance *motor_lb;
|
||||||
static DJIMotorInstance *motor_rb;
|
static DJIMotorInstance *motor_rb;
|
||||||
|
@ -151,7 +152,14 @@ void ChassisInit()
|
||||||
motor_rb = DJIMotorInit(&right_back_config);
|
motor_rb = DJIMotorInit(&right_back_config);
|
||||||
|
|
||||||
referee_data = RefereeInit(&huart6);
|
referee_data = RefereeInit(&huart6);
|
||||||
// SupercapInit();
|
|
||||||
|
SuperCap_Init_Config_s cap_conf = {
|
||||||
|
.can_config = {
|
||||||
|
.can_handle = &hcan2,
|
||||||
|
.tx_id = 0x302,
|
||||||
|
.rx_id = 0x301,
|
||||||
|
}};
|
||||||
|
cap = SuperCapInit(&cap_conf);
|
||||||
|
|
||||||
chassis_sub = SubRegister("chassis_cmd", sizeof(Chassis_Ctrl_Cmd_s));
|
chassis_sub = SubRegister("chassis_cmd", sizeof(Chassis_Ctrl_Cmd_s));
|
||||||
chassis_pub = PubRegister("chassis_feed", sizeof(Chassis_Upload_Data_s));
|
chassis_pub = PubRegister("chassis_feed", sizeof(Chassis_Upload_Data_s));
|
||||||
|
|
|
@ -5,4 +5,4 @@ void ChassisInit();
|
||||||
|
|
||||||
void ChassisTask();
|
void ChassisTask();
|
||||||
|
|
||||||
#endif //CHASSIS_H
|
#endif // CHASSIS_H
|
|
@ -5,4 +5,4 @@ void GimbalInit();
|
||||||
|
|
||||||
void GimbalTask();
|
void GimbalTask();
|
||||||
|
|
||||||
#endif //GIMBAL_H
|
#endif // GIMBAL_H
|
|
@ -4,7 +4,6 @@
|
||||||
|
|
||||||
> TODO:
|
> TODO:
|
||||||
>
|
>
|
||||||
> 1. 增加数据长度可变的协议支持
|
|
||||||
> 1. 对`CANCommGet()`进行修改,使得其可以返回数据是否更新的相关信息。
|
> 1. 对`CANCommGet()`进行修改,使得其可以返回数据是否更新的相关信息。
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -32,7 +32,7 @@ typedef struct
|
||||||
uint16_t ecd; // 0-8191,刻度总共有8192格
|
uint16_t ecd; // 0-8191,刻度总共有8192格
|
||||||
uint16_t last_ecd; // 上一次读取的编码器值
|
uint16_t last_ecd; // 上一次读取的编码器值
|
||||||
float angle_single_round; // 单圈角度
|
float angle_single_round; // 单圈角度
|
||||||
float speed_angle_per_sec; // 度/秒 rounds per minute
|
float speed_angle_per_sec; // 角速度,单位为:度/秒 rounds per minute
|
||||||
int16_t given_current; // 实际电流
|
int16_t given_current; // 实际电流
|
||||||
uint8_t temperate; // 温度 Celsius
|
uint8_t temperate; // 温度 Celsius
|
||||||
int16_t total_round; // 总圈数,注意方向
|
int16_t total_round; // 总圈数,注意方向
|
||||||
|
|
|
@ -15,7 +15,7 @@ static referee_info_t referee_info;
|
||||||
static uint8_t Judge_Self_ID; // 当前机器人的ID
|
static uint8_t Judge_Self_ID; // 当前机器人的ID
|
||||||
static uint16_t Judge_SelfClient_ID; // 发送者机器人对应的客户端ID
|
static uint16_t Judge_SelfClient_ID; // 发送者机器人对应的客户端ID
|
||||||
|
|
||||||
static void RCRxCallback()
|
static void RefereeRxCallback()
|
||||||
{
|
{
|
||||||
JudgeReadData(referee_usart_instance->recv_buff);
|
JudgeReadData(referee_usart_instance->recv_buff);
|
||||||
}
|
}
|
||||||
|
@ -23,7 +23,7 @@ static void RCRxCallback()
|
||||||
referee_info_t *RefereeInit(UART_HandleTypeDef *referee_usart_handle)
|
referee_info_t *RefereeInit(UART_HandleTypeDef *referee_usart_handle)
|
||||||
{
|
{
|
||||||
USART_Init_Config_s conf;
|
USART_Init_Config_s conf;
|
||||||
conf.module_callback = RCRxCallback;
|
conf.module_callback = RefereeRxCallback;
|
||||||
conf.usart_handle = referee_usart_handle;
|
conf.usart_handle = referee_usart_handle;
|
||||||
conf.recv_buff_size = RE_RX_BUFFER_SIZE;
|
conf.recv_buff_size = RE_RX_BUFFER_SIZE;
|
||||||
referee_usart_instance = USARTRegister(&conf);
|
referee_usart_instance = USARTRegister(&conf);
|
||||||
|
|
|
@ -67,7 +67,7 @@ static void sbus_to_rc(volatile const uint8_t *sbus_buf)
|
||||||
* 对sbus_to_rc的简单封装
|
* 对sbus_to_rc的简单封装
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
static void RCRxCallback()
|
static void RefereeRxCallback()
|
||||||
{
|
{
|
||||||
sbus_to_rc(rc_usart_instance->recv_buff);
|
sbus_to_rc(rc_usart_instance->recv_buff);
|
||||||
}
|
}
|
||||||
|
@ -75,7 +75,7 @@ static void RCRxCallback()
|
||||||
RC_ctrl_t *RemoteControlInit(UART_HandleTypeDef *rc_usart_handle)
|
RC_ctrl_t *RemoteControlInit(UART_HandleTypeDef *rc_usart_handle)
|
||||||
{
|
{
|
||||||
USART_Init_Config_s conf;
|
USART_Init_Config_s conf;
|
||||||
conf.module_callback = RCRxCallback;
|
conf.module_callback = RefereeRxCallback;
|
||||||
conf.usart_handle = rc_usart_handle;
|
conf.usart_handle = rc_usart_handle;
|
||||||
conf.recv_buff_size = REMOTE_CONTROL_FRAME_SIZE;
|
conf.recv_buff_size = REMOTE_CONTROL_FRAME_SIZE;
|
||||||
rc_usart_instance = USARTRegister(&conf);
|
rc_usart_instance = USARTRegister(&conf);
|
||||||
|
|
Loading…
Reference in New Issue