mirror of
https://gitee.com/dlmu-cone/tronone-h7-scaffold
synced 2026-07-24 11:37:44 +08:00
add some files
This commit is contained in:
@@ -1,8 +1,81 @@
|
||||
//
|
||||
// Created by esqwt on 2026/3/2.
|
||||
//
|
||||
#ifndef CHASSIS_OMNI_H
|
||||
#define CHASSIS_OMNI_H
|
||||
|
||||
#ifndef TRONONEH7_SCAFFOLD_CHASSIS_OMNI_H
|
||||
#define TRONONEH7_SCAFFOLD_CHASSIS_OMNI_H
|
||||
#include "stdint.h"
|
||||
#include "dji_motor.h"
|
||||
#include "pid.h"
|
||||
|
||||
#endif // TRONONEH7_SCAFFOLD_CHASSIS_OMNI_H
|
||||
// 定义底盘控制命令结构体 (由于chassis_ctrl.h为空,在此定义以适配逻辑)
|
||||
typedef struct
|
||||
{
|
||||
float speed[3]; // x, y, z (旋转) 速度设定值
|
||||
float follow_angle; // 跟随角度 (底盘与云台夹角)
|
||||
float yaw_speed; // 当前Yaw轴角速度 (作为前馈或反馈)
|
||||
float real_angle; // 底盘当前实际角度 (用于坐标系转换)
|
||||
uint8_t if_enable; // 底盘使能标志
|
||||
uint8_t if_free; // 底盘自由模式标志 (不跟随)
|
||||
} Chassis_Ctrl_Cmd_s;
|
||||
|
||||
// 定义功率控制所需的外部数据结构
|
||||
typedef struct
|
||||
{
|
||||
uint16_t chassis_power_limit; // 来自裁判系统的功率限制
|
||||
float remain_energy; // 来自超级电容的剩余能量
|
||||
uint16_t chassis_power_buffer; // 缓冲能量 (可选)
|
||||
} Chassis_Power_Info_s;
|
||||
|
||||
// 全向轮底盘对象结构体
|
||||
typedef struct
|
||||
{
|
||||
// 电机实例指针 (LF, RF, LB, RB)
|
||||
DJIMotorInstance *moto_chassis[4];
|
||||
|
||||
// 速度环PID实例 (每个轮子一个)
|
||||
PIDInstance pid_speed[4];
|
||||
|
||||
// 跟随环串级PID实例
|
||||
PIDInstance pid_follow_angle_outer; // 外环 (角度)
|
||||
PIDInstance pid_follow_angle_inner; // 内环 (角速度)
|
||||
|
||||
// 控制数据
|
||||
Chassis_Ctrl_Cmd_s cmd;
|
||||
|
||||
// 内部计算状态变量
|
||||
float offset_angle;
|
||||
float offset_speed;
|
||||
float follow_increment;
|
||||
|
||||
// 功率控制参数
|
||||
struct {
|
||||
float super_power_health;
|
||||
float super_power_week;
|
||||
uint16_t chassis_normal_speed_limit;
|
||||
} power_config;
|
||||
|
||||
} Chassis_Omni_t;
|
||||
|
||||
/**
|
||||
* @brief 初始化全向轮底盘对象
|
||||
* @param chassis 底盘对象指针
|
||||
* @param lf 左前电机指针
|
||||
* @param rf 右前电机指针
|
||||
* @param lb 左后电机指针
|
||||
* @param rb 右后电机指针
|
||||
*/
|
||||
void Chassis_Omni_Init(Chassis_Omni_t *chassis, DJIMotorInstance *lf, DJIMotorInstance *rf, DJIMotorInstance *lb, DJIMotorInstance *rb);
|
||||
|
||||
/**
|
||||
* @brief 底盘控制任务函数,建议在RTOS任务中周期调用
|
||||
* @param chassis 底盘对象指针
|
||||
*/
|
||||
void Chassis_Omni_Update(Chassis_Omni_t *chassis);
|
||||
|
||||
/**
|
||||
* @brief 功率控制逻辑,根据裁判系统和超电状态限制目标速度
|
||||
* @param chassis 底盘对象指针
|
||||
* @param power_info 功率状态信息
|
||||
* @param raw_cmd 原始控制命令 (通常来自上层FSM)
|
||||
*/
|
||||
void Chassis_Omni_PowerControl(Chassis_Omni_t *chassis, Chassis_Power_Info_s *power_info, Chassis_Ctrl_Cmd_s *raw_cmd);
|
||||
|
||||
#endif // CHASSIS_OMNI_H
|
||||
Reference in New Issue
Block a user