diff --git a/MDK-ARM/CtrBoard-H7_ALL.uvoptx b/MDK-ARM/CtrBoard-H7_ALL.uvoptx
index 6dee191..20d3e7f 100644
--- a/MDK-ARM/CtrBoard-H7_ALL.uvoptx
+++ b/MDK-ARM/CtrBoard-H7_ALL.uvoptx
@@ -1291,6 +1291,18 @@
0
0
+
+ 10
+ 81
+ 1
+ 0
+ 0
+ 0
+ ..\User\component\bezier_curve.c
+ bezier_curve.c
+ 0
+ 0
+
@@ -1301,7 +1313,7 @@
0
11
- 81
+ 82
1
0
0
@@ -1313,7 +1325,7 @@
11
- 82
+ 83
1
0
0
@@ -1325,7 +1337,7 @@
11
- 83
+ 84
1
0
0
@@ -1337,7 +1349,7 @@
11
- 84
+ 85
1
0
0
@@ -1357,7 +1369,7 @@
0
12
- 85
+ 86
1
0
0
@@ -1369,7 +1381,7 @@
12
- 86
+ 87
1
0
0
@@ -1381,7 +1393,7 @@
12
- 87
+ 88
1
0
0
@@ -1401,7 +1413,7 @@
0
13
- 88
+ 89
1
0
0
@@ -1413,7 +1425,7 @@
13
- 89
+ 90
1
0
0
@@ -1425,7 +1437,7 @@
13
- 90
+ 91
1
0
0
@@ -1437,7 +1449,7 @@
13
- 91
+ 92
5
0
0
@@ -1449,7 +1461,7 @@
13
- 92
+ 93
1
0
0
@@ -1461,7 +1473,7 @@
13
- 93
+ 94
1
0
0
@@ -1473,7 +1485,7 @@
13
- 94
+ 95
1
0
0
@@ -1485,7 +1497,7 @@
13
- 95
+ 96
1
0
0
@@ -1497,7 +1509,7 @@
13
- 96
+ 97
1
0
0
@@ -1509,7 +1521,7 @@
13
- 97
+ 98
1
0
0
@@ -1521,7 +1533,7 @@
13
- 98
+ 99
1
0
0
@@ -1541,7 +1553,7 @@
0
14
- 99
+ 100
1
0
0
@@ -1553,7 +1565,7 @@
14
- 100
+ 101
1
0
0
diff --git a/MDK-ARM/CtrBoard-H7_ALL.uvprojx b/MDK-ARM/CtrBoard-H7_ALL.uvprojx
index 49064c2..95adbae 100644
--- a/MDK-ARM/CtrBoard-H7_ALL.uvprojx
+++ b/MDK-ARM/CtrBoard-H7_ALL.uvprojx
@@ -1458,6 +1458,11 @@
1
..\User\component\limiter.c
+
+ bezier_curve.c
+ 1
+ ..\User\component\bezier_curve.c
+
diff --git a/MDK-ARM/CtrBoard-H7_ALL/CtrBoard-H7_ALL.axf b/MDK-ARM/CtrBoard-H7_ALL/CtrBoard-H7_ALL.axf
deleted file mode 100644
index 9000d26..0000000
Binary files a/MDK-ARM/CtrBoard-H7_ALL/CtrBoard-H7_ALL.axf and /dev/null differ
diff --git a/User/component/bezier_curve.c b/User/component/bezier_curve.c
new file mode 100644
index 0000000..a57193a
--- /dev/null
+++ b/User/component/bezier_curve.c
@@ -0,0 +1,24 @@
+#include "bezier_curve.h"
+
+// 三次贝塞尔曲线,二维
+void bezier_curve_3rd(const float p0[2], const float p1[2], const float p2[2], const float p3[2], float t, float out[2]) {
+ float u = 1.0f - t;
+ float tt = t * t;
+ float uu = u * u;
+ float uuu = uu * u;
+ float ttt = tt * t;
+ out[0] = uuu * p0[0] + 3 * uu * t * p1[0] + 3 * u * tt * p2[0] + ttt * p3[0];
+ out[1] = uuu * p0[1] + 3 * uu * t * p1[1] + 3 * u * tt * p2[1] + ttt * p3[1];
+}
+
+// 三次贝塞尔曲线,三维
+void bezier_curve_3rd_3d(const float p0[3], const float p1[3], const float p2[3], const float p3[3], float t, float out[3]) {
+ float u = 1.0f - t;
+ float tt = t * t;
+ float uu = u * u;
+ float uuu = uu * u;
+ float ttt = tt * t;
+ for (int i = 0; i < 3; ++i) {
+ out[i] = uuu * p0[i] + 3 * uu * t * p1[i] + 3 * u * tt * p2[i] + ttt * p3[i];
+ }
+}
\ No newline at end of file
diff --git a/User/component/bezier_curve.h b/User/component/bezier_curve.h
new file mode 100644
index 0000000..3e89de9
--- /dev/null
+++ b/User/component/bezier_curve.h
@@ -0,0 +1,20 @@
+/*
+ 各类滤波器。
+*/
+
+#pragma once
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+// 三次贝塞尔曲线,二维
+void bezier_curve_3rd(const float p0[2], const float p1[2], const float p2[2], const float p3[2], float t, float out[2]);
+
+// 三次贝塞尔曲线,三维
+void bezier_curve_3rd_3d(const float p0[3], const float p1[3], const float p2[3], const float p3[3], float t, float out[3]);
+
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/User/module/chassis.h b/User/module/chassis.h
index 2b35bb9..c2485d9 100644
--- a/User/module/chassis.h
+++ b/User/module/chassis.h
@@ -98,7 +98,7 @@ typedef struct{
joint_params ratio; /* 关节减速比 */
joint_limits limit; /* 关节的最小和最大角度,单位:弧度 */
Kinematics_LinkLength_t length; /* 关节长度,单位:米 */
- Kinematics_LegOffset_t offset; /* 关节偏移,单位:米 */
+ // Kinematics_LegOffset_t offset; /* 关节偏移,单位:米 */
Kinematics_DirectionSign_t sign; /* 关节侧向标志(左前/左后为-1,右前/右后为1) */
}Chassis_Mech_Params_t;
diff --git a/User/module/config.c b/User/module/config.c
new file mode 100644
index 0000000..9160b7b
--- /dev/null
+++ b/User/module/config.c
@@ -0,0 +1,144 @@
+/*
+ * 配置相关
+ */
+
+#include "config.h"
+
+#include
+#include
+
+#include "bsp/flash.h"
+
+#define CONFIG_BASE_ADDRESS (ADDR_FLASH_SECTOR_11)
+
+#define JOINT_CALF_OFFSET (2.7321f * 12.66)
+
+Config_t param_default = {
+
+ .uart = {
+ .left_leg = BSP_UART_LEFT_LEG,
+ .right_leg = BSP_UART_RIGHT_LEG,
+ },
+ .cali = {
+ .bmi088 = {
+ .gyro_offset = {0.0f, 0.0f, 0.0f},
+ },
+ },
+ .chassis = {
+ .type = CHASSIS_TYPE_QUADRUPED,
+
+ .torque_pid_param = {
+ .k = 1.0f, /* 控制器增益 */
+ .p = 1.0f, /* 比例项增益 */
+ .i = 0.0f, /* 积分项增益 */
+ .d = 0.0f, /* 微分项增益 */
+ .i_limit = 0.0f, /* 积分项上限 */
+ .out_limit = 0.0f, /* 输出绝对值限制 */
+ .d_cutoff_freq = 10.0f, /* D项低通截止频率 */
+ .range = -1.0f, /* 计算循环误差时使用,大于0时启用 */
+ },
+
+ .low_pass_cutoff_freq = {
+ .in = -1.0f,
+ .out = -1.0f,
+ },
+
+ .mech_param = {
+ .length = {
+ .hip = 0.05f,
+ .thigh = 0.20f,
+ .calf = 0.20f,
+ },
+ .limit = {
+ .max = {
+ .named = {
+ .lf_hip = 1.57f, /* 左前腿髋关节最大角度,单位:弧度 */
+ .lf_thigh = 1.57f, /* 左前腿大腿最大角度,单位:弧度 */
+ .lf_calf = 1.57f, /* 左前腿小腿最大角度,单位:弧度 */
+ .rf_hip = 1.57f, /* 右前腿髋关节最大角度,单位:弧度 */
+ .rf_thigh = 1.57f, /* 右前腿大腿最大角度,单位:弧度 */
+ .rf_calf = 1.57f, /* 右前腿小腿最大角度,单位:弧度 */
+ .lr_hip = 1.57f, /* 左后腿髋关节最大角度,单位:弧度 */
+ .lr_thigh = 1.57f, /* 左后腿大腿最大角度,单位:弧度 */
+ .lr_calf = 1.57f, /* 左后腿小腿最大角度,单位:弧度 */
+ .rr_hip = 1.57f, /* 右后腿髋关节最大角度,单位:弧度 */
+ .rr_thigh = 1.57f, /* 右后腿大腿最大角度,单位:弧度 */
+ .rr_calf = 1.57f, /* 右后腿小腿最大角度,单位:弧度 */
+ }
+ },
+ .min = {
+ .named = {
+ .lf_hip = 1.57f, /* 左前腿髋关节最大角度,单位:弧度 */
+ .lf_thigh = 1.57f, /* 左前腿大腿最大角度,单位:弧度 */
+ .lf_calf = 1.57f, /* 左前腿小腿最大角度,单位:弧度 */
+ .rf_hip = 1.57f, /* 右前腿髋关节最大角度,单位:弧度 */
+ .rf_thigh = 1.57f, /* 右前腿大腿最大角度,单位:弧度 */
+ .rf_calf = 1.57f, /* 右前腿小腿最大角度,单位:弧度 */
+ .lr_hip = 1.57f, /* 左后腿髋关节最大角度,单位:弧度 */
+ .lr_thigh = 1.57f, /* 左后腿大腿最大角度,单位:弧度 */
+ .lr_calf = 1.57f, /* 左后腿小腿最大角度,单位:弧度 */
+ .rr_hip = 1.57f, /* 右后腿髋关节最大角度,单位:弧度 */
+ .rr_thigh = 1.57f, /* 右后腿大腿最大角度,单位:弧度 */
+ .rr_calf = 1.57f, /* 右后腿小腿最大角度,单位:弧度 */
+ }
+ }
+ },
+ .zero_point = {
+ .named = {
+ .lf_hip = 1.98f, /* 左前腿髋关节零点角度,单位:弧度 */
+ .lf_thigh = -2.86f, /* 左前腿大腿零点角度,单位:弧度 */
+ .lf_calf = -32.367f, /* 左前腿小腿零点角度,单位:弧度 */
+ .rf_hip = 5.56f, /* 右前腿髋关节零点角度,单位:弧度 */
+ .rf_thigh = 12.92f, /* 右前腿大腿零点角度,单位:弧度 */
+ .rf_calf = 37.047f, /* 右前腿小腿零点角度,单位:弧度 */
+ .lr_hip = 4.76f, /* 左后腿髋关节零点角度,单位:弧度 */
+ .lr_thigh = -4.57f, /* 左后腿大腿零点角度,单位:弧度 */
+ .lr_calf = -35.847f, /* 左后腿小腿零点角度,单位:弧度 */
+ .rr_hip = 2.42f, /* 右后腿髋关节零点角度,单位:弧度 */
+ .rr_thigh = 8.85f, /* 右后腿大腿零点角度,单位:弧度 */
+ .rr_calf = 38.55f, /* 右后腿小腿零点角度,单位:弧度 */
+ }
+ },
+ .sign = {
+ .leg = {
+ [0] = { .hip = -1, .thigh = -1, .calf = -1 }, /* 左前腿 */
+ [1] = { .hip = 1, .thigh = 1, .calf = 1 }, /* 右前腿 */
+ [2] = { .hip = -1, .thigh = -1, .calf = -1 }, /* 左后腿 */
+ [3] = { .hip = 1, .thigh = 1, .calf = 1 }, /* 右后腿 */
+ }
+ },
+ .ratio = {
+ .named = {
+ .lf_hip = 6.33f, /* 左前腿髋关节减速比 */
+ .lf_thigh = 6.33f, /* 左前腿大腿减速比 */
+ .lf_calf = 12.66f, /* 左前腿小腿减速比 */
+ .rf_hip = 6.33f, /* 右前腿髋关节减速比 */
+ .rf_thigh = 6.33f, /* 右前腿大腿减速比 */
+ .rf_calf = 12.66f, /* 右前腿小腿减速比 */
+ .lr_hip = 6.33f, /* 左后腿髋关节减速比 */
+ .lr_thigh = 6.33f, /* 左后腿大腿减速比 */
+ .lr_calf = 12.66f, /* 左后腿小腿减速比 */
+ .rr_hip = 6.33f, /* 右后腿髋关节减速比 */
+ .rr_thigh = 6.33f, /* 右后腿大腿减速比 */
+ .rr_calf = 12.66f, /* 右后腿小腿减速比 */
+ }
+ },
+
+ },
+
+
+ },
+}; /* param_default */
+
+
+
+/**
+ * \brief 获取配置信息
+ *
+ * \param cfg 配置信息
+ */
+void Config_Get(Config_t *cfg) {
+ //直接把param_default传进去
+ if (cfg == NULL) return; // 检查参数是否为NULL
+ memcpy(cfg, ¶m_default, sizeof(Config_t)); // 复制默认配置到cfg
+}