mirror of
https://gitee.com/dlmu-cone/bf_original_balance_chassis
synced 2026-07-23 19:25:09 +08:00
test bmi088
This commit is contained in:
0
application/chassis/balance.h
Normal file
0
application/chassis/balance.h
Normal file
@@ -1,7 +1,7 @@
|
||||
# chassis
|
||||
|
||||
|
||||
|
||||
@Todo 使用条件编译,选择麦轮(全向轮),舵轮,平衡底盘
|
||||
## 工作流程
|
||||
|
||||
首先进行初始化,`ChasissInit()`会被`RobotInit()`调用,进行裁判系统、底盘电机的初始化。如果为双板模式,则还会初始化IMU,并且将消息订阅者和发布者的初始化改为`CANComm`的初始化。
|
||||
|
||||
0
application/chassis/mecanum.h
Normal file
0
application/chassis/mecanum.h
Normal file
0
application/chassis/steering.h
Normal file
0
application/chassis/steering.h
Normal file
@@ -8,6 +8,7 @@
|
||||
#include "message_center.h"
|
||||
#include "general_def.h"
|
||||
#include "dji_motor.h"
|
||||
#include "bmi088.h"
|
||||
// bsp
|
||||
#include "bsp_dwt.h"
|
||||
#include "bsp_log.h"
|
||||
@@ -45,8 +46,51 @@ static Shoot_Upload_Data_s shoot_fetch_data; // 从发射获取的反馈信息
|
||||
|
||||
static Robot_Status_e robot_state; // 机器人整体工作状态
|
||||
|
||||
BMI088Instance *bmi088; // 云台IMU
|
||||
BMI088_Data_t bmi088_data;
|
||||
void RobotCMDInit()
|
||||
{
|
||||
BMI088_Init_Config_s bmi088_config = {
|
||||
.cali_mode = BMI088_CALIBRATE_ONLINE_MODE,
|
||||
.work_mode = BMI088_BLOCK_TRIGGER_MODE,
|
||||
.spi_acc_config = {
|
||||
.spi_handle = &hspi1,
|
||||
.GPIOx = GPIOA,
|
||||
.cs_pin = GPIO_PIN_4,
|
||||
.spi_work_mode = SPI_IT_MODE,
|
||||
},
|
||||
.acc_int_config = {
|
||||
.GPIOx = GPIOC,
|
||||
.GPIO_Pin = GPIO_PIN_4,
|
||||
.exti_mode = GPIO_EXTI_MODE_RISING,
|
||||
},
|
||||
.spi_gyro_config = {
|
||||
.spi_handle = &hspi1,
|
||||
.GPIOx = GPIOB,
|
||||
.cs_pin = GPIO_PIN_0,
|
||||
.spi_work_mode = SPI_IT_MODE,
|
||||
},
|
||||
.gyro_int_config = {
|
||||
.GPIO_Pin = GPIO_PIN_5,
|
||||
.GPIOx = GPIOC,
|
||||
.exti_mode = GPIO_EXTI_MODE_RISING,
|
||||
},
|
||||
.heat_pwm_config = {
|
||||
.htim = &htim10,
|
||||
.channel = TIM_CHANNEL_1,
|
||||
.period = 1,
|
||||
},
|
||||
.heat_pid_config = {
|
||||
.Kp = 0.5,
|
||||
.Ki = 0,
|
||||
.Kd = 0,
|
||||
.DeadBand = 0.1,
|
||||
.Improve = PID_Trapezoid_Intergral | PID_Integral_Limit | PID_Derivative_On_Measurement,
|
||||
.IntegralLimit = 100,
|
||||
.MaxOut = 100,
|
||||
},
|
||||
};
|
||||
bmi088 = BMI088Register(&bmi088_config);
|
||||
rc_data = RemoteControlInit(&huart3); // 修改为对应串口,注意如果是自研板dbus协议串口需选用添加了反相器的那个
|
||||
vision_recv_data = VisionInit(&huart1); // 视觉通信串口
|
||||
|
||||
@@ -275,6 +319,7 @@ static void EmergencyHandler()
|
||||
/* 机器人核心控制任务,200Hz频率运行(必须高于视觉发送频率) */
|
||||
void RobotCMDTask()
|
||||
{
|
||||
BMI088Acquire(bmi088,&bmi088_data) ;
|
||||
// 从其他应用获取回传数据
|
||||
#ifdef ONE_BOARD
|
||||
SubGetMessage(chassis_feed_sub, (void *)&chassis_fetch_data);
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
#include "message_center.h"
|
||||
#include "general_def.h"
|
||||
#include "bmi088.h"
|
||||
#include "bmi088.h"
|
||||
|
||||
static attitude_t *gimba_IMU_data; // 云台IMU数据
|
||||
static DJIMotorInstance *yaw_motor, *pitch_motor;
|
||||
@@ -15,12 +14,32 @@ static Subscriber_t *gimbal_sub; // cmd控制消息订阅者
|
||||
static Gimbal_Upload_Data_s gimbal_feedback_data; // 回传给cmd的云台状态信息
|
||||
static Gimbal_Ctrl_Cmd_s gimbal_cmd_recv; // 来自cmd的控制信息
|
||||
|
||||
//static BMI088Instance *bmi088; // 云台IMU
|
||||
static BMI088Instance *bmi088; // 云台IMU
|
||||
void GimbalInit()
|
||||
{
|
||||
gimba_IMU_data = INS_Init(); // IMU先初始化,获取姿态数据指针赋给yaw电机的其他数据来源
|
||||
//gimba_IMU_data = INS_Init(); // IMU先初始化,获取姿态数据指针赋给yaw电机的其他数据来源
|
||||
BMI088_Init_Config_s imu_config = {
|
||||
.work_mode = BMI088_BLOCK_PERIODIC_MODE,
|
||||
.spi_acc_config = {
|
||||
.spi_handle = &hspi1,
|
||||
.GPIOx = GPIOA,
|
||||
.cs_pin = GPIO_PIN_4,
|
||||
.spi_work_mode = SPI_BLOCK_MODE,
|
||||
},
|
||||
.spi_gyro_config = {
|
||||
.spi_handle = &hspi1,
|
||||
.GPIOx = GPIOA,
|
||||
.cs_pin = GPIO_PIN_4,
|
||||
.spi_work_mode = SPI_BLOCK_MODE,
|
||||
},
|
||||
.heat_pwm_config = {
|
||||
.htim = &htim10,
|
||||
.channel = TIM_CHANNEL_1,
|
||||
.period = 1,
|
||||
}
|
||||
|
||||
// bmi088=BMI088Register(&imu_config);
|
||||
};
|
||||
bmi088=BMI088Register(&imu_config);
|
||||
// YAW
|
||||
Motor_Init_Config_s yaw_config = {
|
||||
.can_init_config = {
|
||||
@@ -149,7 +168,7 @@ void GimbalTask()
|
||||
// ...
|
||||
|
||||
// 设置反馈数据,主要是imu和yaw的ecd
|
||||
//gimbal_feedback_data.gimbal_imu_data = *gimba_IMU_data;
|
||||
gimbal_feedback_data.gimbal_imu_data = *gimba_IMU_data;
|
||||
gimbal_feedback_data.yaw_motor_single_round_angle = yaw_motor->measure.angle_single_round;
|
||||
|
||||
// 推送消息
|
||||
|
||||
@@ -31,12 +31,12 @@ void RobotInit()
|
||||
|
||||
#if defined(ONE_BOARD) || defined(GIMBAL_BOARD)
|
||||
RobotCMDInit();
|
||||
GimbalInit();
|
||||
ShootInit();
|
||||
//GimbalInit();
|
||||
//ShootInit();
|
||||
#endif
|
||||
|
||||
#if defined(ONE_BOARD) || defined(CHASSIS_BOARD)
|
||||
ChassisInit();
|
||||
//ChassisInit();
|
||||
#endif
|
||||
|
||||
OSTaskInit(); // 创建基础任务
|
||||
@@ -49,12 +49,12 @@ void RobotTask()
|
||||
{
|
||||
#if defined(ONE_BOARD) || defined(GIMBAL_BOARD)
|
||||
RobotCMDTask();
|
||||
GimbalTask();
|
||||
ShootTask();
|
||||
//GimbalTask();
|
||||
//ShootTask();
|
||||
#endif
|
||||
|
||||
#if defined(ONE_BOARD) || defined(CHASSIS_BOARD)
|
||||
ChassisTask();
|
||||
//ChassisTask();
|
||||
#endif
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user