Compare commits
3 Commits
6179339e82
...
2e854ade02
Author | SHA1 | Date | |
---|---|---|---|
2e854ade02 | |||
bd16e41962 | |||
4bc5997670 |
2
.gitignore
vendored
2
.gitignore
vendored
@ -17,7 +17,7 @@
|
||||
*.dbg*
|
||||
*.uvguix.*
|
||||
.mxproject
|
||||
|
||||
*.axf
|
||||
RTE/
|
||||
Templates/
|
||||
Examples/
|
||||
|
@ -26,7 +26,7 @@
|
||||
<ToolsetNumber>0x4</ToolsetNumber>
|
||||
<ToolsetName>ARM-ADS</ToolsetName>
|
||||
<TargetOption>
|
||||
<CLKADS>12000000</CLKADS>
|
||||
<CLKADS>25000000</CLKADS>
|
||||
<OPTTT>
|
||||
<gFlags>1</gFlags>
|
||||
<BeepAtEnd>1</BeepAtEnd>
|
||||
@ -117,11 +117,6 @@
|
||||
<pMon>BIN\CMSIS_AGDI.dll</pMon>
|
||||
</DebugOpt>
|
||||
<TargetDriverDllRegistry>
|
||||
<SetRegEntry>
|
||||
<Number>0</Number>
|
||||
<Key>ST-LINKIII-KEIL_SWO</Key>
|
||||
<Name>-U00160029510000164E574E32 -O206 -SF1000 -C0 -A0 -I0 -HNlocalhost -HP7184 -P1 -N00("ARM CoreSight SW-DP (ARM Core") -D00(2BA01477) -L00(0) -TO131090 -TC10000000 -TT10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO15 -FD20000000 -FC1000 -FN1 -FF0STM32F4xx_1024.FLM -FS08000000 -FL0100000 -FP0($$Device:STM32F407IGHx$CMSIS\Flash\STM32F4xx_1024.FLM)</Name>
|
||||
</SetRegEntry>
|
||||
<SetRegEntry>
|
||||
<Number>0</Number>
|
||||
<Key>ARMRTXEVENTFLAGS</Key>
|
||||
@ -145,7 +140,7 @@
|
||||
<SetRegEntry>
|
||||
<Number>0</Number>
|
||||
<Key>CMSIS_AGDI</Key>
|
||||
<Name>-X"Any" -UAny -O206 -S0 -C0 -P00000000 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO65554 -TC10000000 -TT10000000 -TP20 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO15 -FD20000000 -FC1000 -FN1 -FF0STM32F4xx_1024.FLM -FS08000000 -FL0100000 -FP0($$Device:STM32F407IGHx$CMSIS\Flash\STM32F4xx_1024.FLM)</Name>
|
||||
<Name>-X"Any" -UAny -O206 -S8 -C0 -P00000000 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO65554 -TC10000000 -TT10000000 -TP20 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO15 -FD20000000 -FC1000 -FN1 -FF0STM32F4xx_1024.FLM -FS08000000 -FL0100000 -FP0($$Device:STM32F407IGHx$CMSIS\Flash\STM32F4xx_1024.FLM)</Name>
|
||||
</SetRegEntry>
|
||||
<SetRegEntry>
|
||||
<Number>0</Number>
|
||||
@ -173,12 +168,72 @@
|
||||
<Ww>
|
||||
<count>3</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>huart->ErrorCode</ItemText>
|
||||
<ItemText>UP,0x0A</ItemText>
|
||||
</Ww>
|
||||
<Ww>
|
||||
<count>4</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>UP,0x0A</ItemText>
|
||||
<ItemText>chassis,0x0A</ItemText>
|
||||
</Ww>
|
||||
<Ww>
|
||||
<count>5</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>cmd,0x0A</ItemText>
|
||||
</Ww>
|
||||
<Ww>
|
||||
<count>6</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>nucbuf,0x0A</ItemText>
|
||||
</Ww>
|
||||
<Ww>
|
||||
<count>7</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>cmd_fromnuc</ItemText>
|
||||
</Ww>
|
||||
<Ww>
|
||||
<count>8</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>NUC_send,0x0A</ItemText>
|
||||
</Ww>
|
||||
<Ww>
|
||||
<count>9</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>NUC_send</ItemText>
|
||||
</Ww>
|
||||
<Ww>
|
||||
<count>10</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>nuc_raw,0x0A</ItemText>
|
||||
</Ww>
|
||||
<Ww>
|
||||
<count>11</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>ang_58</ItemText>
|
||||
</Ww>
|
||||
<Ww>
|
||||
<count>12</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>ang_66</ItemText>
|
||||
</Ww>
|
||||
<Ww>
|
||||
<count>13</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>cmd_fromnuc,0x0A</ItemText>
|
||||
</Ww>
|
||||
<Ww>
|
||||
<count>14</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>Nuc,0x0A</ItemText>
|
||||
</Ww>
|
||||
<Ww>
|
||||
<count>15</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>rec_flag</ItemText>
|
||||
</Ww>
|
||||
<Ww>
|
||||
<count>16</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>ctrl</ItemText>
|
||||
</Ww>
|
||||
</WatchWindow1>
|
||||
<Tracepoint>
|
||||
@ -225,10 +280,10 @@
|
||||
<pMultCmdsp></pMultCmdsp>
|
||||
<DebugDescription>
|
||||
<Enable>1</Enable>
|
||||
<EnableFlashSeq>0</EnableFlashSeq>
|
||||
<EnableFlashSeq>1</EnableFlashSeq>
|
||||
<EnableLog>0</EnableLog>
|
||||
<Protocol>2</Protocol>
|
||||
<DbgClock>1000000</DbgClock>
|
||||
<DbgClock>10000000</DbgClock>
|
||||
</DebugDescription>
|
||||
</TargetOption>
|
||||
</Target>
|
||||
@ -267,7 +322,7 @@
|
||||
|
||||
<Group>
|
||||
<GroupName>Application/User/Core</GroupName>
|
||||
<tvExp>1</tvExp>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<cbSel>0</cbSel>
|
||||
<RteFlg>0</RteFlg>
|
||||
@ -407,7 +462,7 @@
|
||||
|
||||
<Group>
|
||||
<GroupName>Drivers/STM32F4xx_HAL_Driver</GroupName>
|
||||
<tvExp>1</tvExp>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<cbSel>0</cbSel>
|
||||
<RteFlg>0</RteFlg>
|
||||
@ -679,7 +734,7 @@
|
||||
|
||||
<Group>
|
||||
<GroupName>Drivers/CMSIS</GroupName>
|
||||
<tvExp>1</tvExp>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<cbSel>0</cbSel>
|
||||
<RteFlg>0</RteFlg>
|
||||
@ -699,7 +754,7 @@
|
||||
|
||||
<Group>
|
||||
<GroupName>Middlewares/FreeRTOS</GroupName>
|
||||
<tvExp>1</tvExp>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<cbSel>0</cbSel>
|
||||
<RteFlg>0</RteFlg>
|
||||
@ -883,7 +938,7 @@
|
||||
|
||||
<Group>
|
||||
<GroupName>User/bsp</GroupName>
|
||||
<tvExp>1</tvExp>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<cbSel>0</cbSel>
|
||||
<RteFlg>0</RteFlg>
|
||||
@ -1163,7 +1218,7 @@
|
||||
|
||||
<Group>
|
||||
<GroupName>User/Algorithm</GroupName>
|
||||
<tvExp>1</tvExp>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<cbSel>0</cbSel>
|
||||
<RteFlg>0</RteFlg>
|
||||
@ -1335,7 +1390,7 @@
|
||||
|
||||
<Group>
|
||||
<GroupName>Application/User/USB_DEVICE/App</GroupName>
|
||||
<tvExp>1</tvExp>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<cbSel>0</cbSel>
|
||||
<RteFlg>0</RteFlg>
|
||||
@ -1379,7 +1434,7 @@
|
||||
|
||||
<Group>
|
||||
<GroupName>Application/User/USB_DEVICE/Target</GroupName>
|
||||
<tvExp>1</tvExp>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<cbSel>0</cbSel>
|
||||
<RteFlg>0</RteFlg>
|
||||
@ -1399,7 +1454,7 @@
|
||||
|
||||
<Group>
|
||||
<GroupName>Middlewares/USB_Device_Library</GroupName>
|
||||
<tvExp>1</tvExp>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<cbSel>0</cbSel>
|
||||
<RteFlg>0</RteFlg>
|
||||
|
@ -17,8 +17,8 @@
|
||||
<TargetCommonOption>
|
||||
<Device>STM32F407IGHx</Device>
|
||||
<Vendor>STMicroelectronics</Vendor>
|
||||
<PackID>Keil.STM32F4xx_DFP.2.15.0</PackID>
|
||||
<PackURL>http://www.keil.com/pack/</PackURL>
|
||||
<PackID>Keil.STM32F4xx_DFP.3.0.0</PackID>
|
||||
<PackURL>https://www.keil.com/pack/</PackURL>
|
||||
<Cpu>IRAM(0x20000000-0x2001BFFF) IRAM2(0x2001C000-0x2001FFFF) IROM(0x8000000-0x80FFFFF) CLOCK(25000000) FPU2 CPUTYPE("Cortex-M4") TZ</Cpu>
|
||||
<FlashUtilSpec></FlashUtilSpec>
|
||||
<StartupFile></StartupFile>
|
||||
|
Binary file not shown.
@ -98,12 +98,14 @@ int8_t Chassis_Control(Chassis_t *c, CMD_t *ctrl, CAN_Output_t *out) {
|
||||
c->pos088.bmi088.filtered_gyro.z = LowPassFilter2p_Apply(&(c->filled[0]), c->pos088.bmi088.gyro.z);
|
||||
|
||||
/*初始数据*/
|
||||
|
||||
c->NUC_send.send[0] = 0;
|
||||
c->move_vec.Vx = 0;
|
||||
c->move_vec.Vy = 0;
|
||||
c->move_vec.Vw = 0;
|
||||
c->to_nuc.send = 0;
|
||||
c->sick_cali.is_reach = 0;
|
||||
|
||||
c->vofa_send[0]= KalmanFilter(&c->extKalman[0] , c->sick_cali.sick_dis[0]);
|
||||
c->vofa_send[1]= KalmanFilter(&c->extKalman[1] , c->sick_cali.sick_dis[1]);
|
||||
c->vofa_send[1]= KalmanFilter(&c->extKalman[1] , c->sick_cali.sick_dis[1]);
|
||||
c->vofa_send[2]= KalmanFilter(&c->extKalman[2] , c->sick_cali.sick_dis[2]);
|
||||
|
||||
|
||||
@ -111,6 +113,7 @@ int8_t Chassis_Control(Chassis_t *c, CMD_t *ctrl, CAN_Output_t *out) {
|
||||
|
||||
switch (c->chassis_ctrl.ctrl) {
|
||||
case RCcontrol:
|
||||
c->to_nuc.send = 0;
|
||||
switch (c->chassis_ctrl.mode) {
|
||||
case Normal:
|
||||
c->move_vec.Vw = ctrl->Vw * 8000;
|
||||
@ -128,9 +131,9 @@ int8_t Chassis_Control(Chassis_t *c, CMD_t *ctrl, CAN_Output_t *out) {
|
||||
break;
|
||||
case Chassis_Adjust_Sick:
|
||||
|
||||
sick_calibration(c, ctrl, out);
|
||||
c->NUC_send.send[0] = (c->sick_cali.is_reach == 1) ? 1 : 0;
|
||||
break;
|
||||
// sick_calibration(c, ctrl, out);
|
||||
// c->to_nuc.send = (c->sick_cali.is_reach == 1) ? 1 : 0;
|
||||
break;
|
||||
|
||||
}
|
||||
break;
|
||||
@ -138,26 +141,26 @@ int8_t Chassis_Control(Chassis_t *c, CMD_t *ctrl, CAN_Output_t *out) {
|
||||
case AUTO:
|
||||
switch (c->chassis_ctrl.mode) {
|
||||
case AUTO_MID360:
|
||||
c->move_vec.Vw = -ctrl->cmd_MID360.posw * 1000;
|
||||
c->move_vec.Vy = ctrl->cmd_MID360.posy * 1000;
|
||||
c->move_vec.Vx = -ctrl->cmd_MID360.posx * 1000;
|
||||
abs_limit_fp(&c->move_vec.Vx, 5000.0f);
|
||||
// c->move_vec.Vw = -ctrl->cmd_MID360.posw * 1000;
|
||||
// c->move_vec.Vy = ctrl->cmd_MID360.posy * 1000;
|
||||
// c->move_vec.Vx = -ctrl->cmd_MID360.posx * 1000;
|
||||
c->move_vec.Vw =-ctrl->cmd_MID360.posw * 3000;
|
||||
|
||||
abs_limit_fp(&c->move_vec.Vx, 5000.0f);
|
||||
abs_limit_fp(&c->move_vec.Vy, 5000.0f);
|
||||
abs_limit_fp(&c->move_vec.Vw, 5000.0f);
|
||||
// c->NUC_send.send[0] = 1;
|
||||
|
||||
break;
|
||||
case AUTO_MID360_Pitch:
|
||||
c->move_vec.Vw = -ctrl->cmd_MID360.posw * 1000;
|
||||
c->move_vec.Vy = ctrl->cmd_MID360.posy * 1000;
|
||||
c->move_vec.Vx = -ctrl->cmd_MID360.posx * 1000;
|
||||
// c->move_vec.Vw = -ctrl->cmd_MID360.posw * 1000;
|
||||
// c->move_vec.Vy = ctrl->cmd_MID360.posy * 1000;
|
||||
// c->move_vec.Vx = -ctrl->cmd_MID360.posx * 1000;
|
||||
abs_limit_fp(&c->move_vec.Vx, 5000.0f);
|
||||
abs_limit_fp(&c->move_vec.Vy, 5000.0f);
|
||||
abs_limit_fp(&c->move_vec.Vw, 5000.0f);
|
||||
break;
|
||||
case AUTO_MID360_Adjust:
|
||||
c->move_vec.Vw = ctrl->Vw * 6000;
|
||||
c->move_vec.Vx = ctrl->Vy * 6000;
|
||||
c->move_vec.Vy = ctrl->Vx * 6000;
|
||||
case REPOSITION:
|
||||
c->to_nuc.send = 1;
|
||||
|
||||
break;
|
||||
|
||||
|
@ -103,12 +103,6 @@ typedef struct
|
||||
fp32 Vw;
|
||||
fp32 mul;//油门倍率
|
||||
}ChassisMove_Vec;
|
||||
typedef struct
|
||||
{
|
||||
|
||||
fp32 send[4];
|
||||
|
||||
}NUC_send_t;
|
||||
|
||||
/**
|
||||
* @brief
|
||||
@ -194,9 +188,12 @@ typedef struct{
|
||||
int is_reach;
|
||||
}sick_cali;
|
||||
|
||||
NUC_send_t NUC_send;
|
||||
struct {
|
||||
fp32 send;
|
||||
}to_nuc;
|
||||
|
||||
|
||||
|
||||
}Chassis_t;
|
||||
|
||||
int8_t Chassis_init(Chassis_t *c,const Chassis_Param_t *param,float target_freq);
|
||||
|
@ -75,7 +75,7 @@ static const ConfigParam_t param ={
|
||||
|
||||
/*投球*/
|
||||
.LaunchCfg = {
|
||||
.m2006_init = -150.0f, // M2006初始角度
|
||||
.m2006_init = -130.0f, // M2006初始角度
|
||||
.m2006_trig = 0.0f, // M2006触发角度
|
||||
.go_pull_pos = -214.0f, // go上升去合并扳机,扳机位置
|
||||
.go_up_speed = 12.0f, // 上升速度
|
||||
@ -88,14 +88,15 @@ static const ConfigParam_t param ={
|
||||
.go_init = -50, //仅用在go上电,初始位置
|
||||
.go_release_pos=-200,
|
||||
.Pitch_angle =66,
|
||||
|
||||
.go_up_speed =12,
|
||||
.go_down_speed =6,
|
||||
},
|
||||
.PassCfg={
|
||||
.go_wait =-10,
|
||||
.go_release_pos =-150,
|
||||
.Pitch_angle=66,
|
||||
.go_up_speed =12,
|
||||
.go_down_speed =5,
|
||||
.go_down_speed =6,
|
||||
},
|
||||
.MID360Cfg={
|
||||
|
||||
|
@ -317,6 +317,10 @@ int8_t Pitch_Process(UP_t *u, CAN_Output_t *out,CMD_t *c)
|
||||
up_motor_target_t *target=&u->motor_target ;
|
||||
LaunchContext_t *LaunchContext = &u->LaunchContext;
|
||||
// 可根据实际需要传入不同的起始和末位置,起始:当前位置
|
||||
LaunchContext->LaunchCfg.go_up_speed= cfg->go_up_speed;
|
||||
LaunchContext->LaunchCfg.go_down_speed= cfg->go_down_speed
|
||||
;
|
||||
|
||||
Pitch_Launch_Sequence(u, LaunchContext, u->motorfeedback.go_data.Pos, cfg->go_release_pos, out);
|
||||
|
||||
|
||||
@ -399,7 +403,14 @@ int8_t UP_AUTO_Control(UP_t *u,CAN_Output_t *out,CMD_t *c){
|
||||
LaunchContext_t *LaunchContext = &u->LaunchContext;
|
||||
MID360Context_t *MID360Context=&u->MID360Context;
|
||||
MID360Cfg_t *MID360Cfg = &u->MID360Context.MID360Cfg;
|
||||
if(u->MID360Context.Curve==CURVE_58){
|
||||
MID360Cfg->go_release_pos=CurveChange(LowPassFilter2p_Apply(&u->filled[0],c->pos)-0.25,3.2,4.3,&u->MID360Context.Curve);
|
||||
}
|
||||
else {
|
||||
MID360Cfg->go_release_pos=CurveChange(LowPassFilter2p_Apply(&u->filled[0],c->pos)-0.05,3.2,4.3,&u->MID360Context.Curve);
|
||||
|
||||
}
|
||||
|
||||
if (u->MID360Context.Curve == CURVE_58) {
|
||||
target->Pitch_angle = 58;
|
||||
} else {
|
||||
|
@ -73,6 +73,8 @@ typedef struct {
|
||||
fp32 go_init; // GO电机触发位置,初始位置,后续更改用于发射的位置
|
||||
fp32 Pitch_angle; //俯仰角度,以oid为准
|
||||
fp32 go_release_pos;//go松开,发射位置
|
||||
fp32 go_up_speed;
|
||||
fp32 go_down_speed;
|
||||
|
||||
} PitchCfg_t;
|
||||
|
||||
|
@ -67,10 +67,9 @@ int8_t GO_SendData( GO_MotorData_t *go_data,GO_MotorCmd_t *go_cmd,float pos, flo
|
||||
|
||||
// 计算66度曲线(偏上)
|
||||
// 计算66度曲线(偏上)
|
||||
static float curve_66(float d) {
|
||||
static float curve_66(float d) {
|
||||
return 3.7028f * d * d + 11.2126f * d -142.9446f;
|
||||
}
|
||||
|
||||
// 计算58度曲线(偏下)
|
||||
// 计算58度曲线(偏下)
|
||||
static float curve_58(float d) {
|
||||
@ -83,6 +82,9 @@ static float curve_58(float d) {
|
||||
曲线x重合区,根据当前函数和变化方向切换
|
||||
*/
|
||||
int abdddd=0;
|
||||
fp32 ang_58;
|
||||
fp32 ang_66;
|
||||
|
||||
float CurveChange(float d, float x, float y, CurveType *cs)
|
||||
{
|
||||
if (d<3.2) abdddd++;
|
||||
@ -98,8 +100,10 @@ float CurveChange(float d, float x, float y, CurveType *cs)
|
||||
|
||||
// 根据当前曲线返回结果
|
||||
if (*cs == CURVE_58) {
|
||||
ang_58=d;
|
||||
return curve_58(d);
|
||||
} else {
|
||||
ang_66=d;
|
||||
return curve_66(d);
|
||||
}
|
||||
}
|
||||
|
@ -83,7 +83,7 @@ typedef struct __attribute__((packed)) {
|
||||
|
||||
typedef struct __attribute__((packed))
|
||||
{
|
||||
uint8_t status;
|
||||
fp32 status;
|
||||
} Protocol_UpDataCMD_t;
|
||||
|
||||
/* 视觉 -> 电控 上层机构数据结构体*/
|
||||
|
@ -87,7 +87,7 @@ return 0;
|
||||
|
||||
int8_t CMD_ParseNuc(CMD_t *cmd,CMD_NUC_t *n){
|
||||
if(cmd == NULL) return -1;
|
||||
if(n == NULL) return -1;
|
||||
if(n == NULL) return -1;
|
||||
|
||||
cmd->cmd_status = n->status_fromnuc;
|
||||
cmd->raw_status = n->ctrl_status;
|
||||
@ -112,6 +112,16 @@ int8_t CMD_ParseNuc(CMD_t *cmd,CMD_NUC_t *n){
|
||||
cmd ->cmd_pick .posw =n->camera.data3 ;
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
cmd->cmd_MID360.posx = 0;
|
||||
cmd->cmd_MID360.posy = 0;
|
||||
cmd->cmd_MID360.posw = 0;
|
||||
|
||||
cmd->pos =0 ;
|
||||
|
||||
|
||||
break ;
|
||||
|
||||
|
||||
}
|
||||
@ -159,7 +169,7 @@ int8_t CMD_DR16(CMD_t *cmd,const CMD_RC_t *rc) {
|
||||
|
||||
if(rc->dr16.sw_r ==CMD_SW_MID) cmd ->CMD_mode =AUTO_MID360; //左中,右中,无模式
|
||||
|
||||
if(rc->dr16.sw_r ==CMD_SW_DOWN) cmd ->CMD_mode =Normal; //左中,右下,视觉
|
||||
if(rc->dr16.sw_r ==CMD_SW_DOWN) cmd ->CMD_mode =REPOSITION; //左中,右下,视觉
|
||||
|
||||
}
|
||||
else if(rc->dr16.sw_l==CMD_SW_DOWN)
|
||||
@ -193,7 +203,7 @@ int8_t CMD_LD(CMD_t *cmd,const CMD_RC_t *rc){
|
||||
if(cmd ->CMD_CtrlType ==AUTO){
|
||||
|
||||
/*自动下的*/
|
||||
if (rc->LD.key_C ==CMD_SW_UP) cmd ->CMD_mode =AUTO_MID360_Adjust;
|
||||
if (rc->LD.key_C ==CMD_SW_UP) cmd ->CMD_mode =Normal;
|
||||
else {
|
||||
|
||||
if(rc->LD.key_E ==CMD_SW_DOWN ) cmd ->CMD_mode =Normal;
|
||||
|
@ -26,7 +26,7 @@ typedef enum{
|
||||
|
||||
AUTO_MID360,
|
||||
AUTO_MID360_Pitch,
|
||||
AUTO_MID360_Adjust,//雷达调整
|
||||
REPOSITION,//雷达调整
|
||||
|
||||
UP_Adjust,//上层调整
|
||||
Chassis_Adjust_Sick,
|
||||
@ -43,7 +43,8 @@ typedef enum{
|
||||
}CMD_mode_t;
|
||||
typedef struct {
|
||||
uint8_t status_fromnuc;
|
||||
uint8_t ctrl_status;
|
||||
uint8_t ctrl_status;
|
||||
|
||||
struct
|
||||
{
|
||||
fp32 vx;
|
||||
|
@ -170,28 +170,34 @@ int8_t NUC_PackIMU(NUC_t *nuc, const AHRS_Quaternion_t *quat, const AHRS_Accl_t
|
||||
int8_t NUC_PackCMD(NUC_t *nuc, const NUC_send_t *send){
|
||||
nuc->to_nuc.cmd.head = HEAD;
|
||||
nuc->to_nuc.cmd.id = IMU_ID;
|
||||
nuc->to_nuc.cmd.type = TYPE;
|
||||
nuc->to_nuc.cmd.end = TAIL;
|
||||
// memcpy((void *)&(nuc->to_nuc.cmd.package.status), (const void *)send,sizeof(*send));
|
||||
memcpy((void *)&(nuc->to_nuc.cmd.package.status), (const void *)send,sizeof(*send));
|
||||
/*在这里添加你们的控制命令*/
|
||||
return DEVICE_OK;
|
||||
}
|
||||
|
||||
int8_t NUC_StartSend(NUC_t *nuc, bool cmd_update){
|
||||
if (cmd_update) {
|
||||
// if (HAL_UART_Transmit_DMA(
|
||||
// BSP_UART_GetHandle(BSP_UART_NUC), (uint8_t *)&(nuc->to_nuc.cmd),
|
||||
// sizeof(nuc->to_nuc.cmd) + sizeof(nuc->to_nuc.imu)) == HAL_OK)
|
||||
/*仅发送cmd数据*/
|
||||
if (HAL_UART_Transmit_DMA(
|
||||
BSP_UART_GetHandle(BSP_UART_NUC), (uint8_t *)&(nuc->to_nuc.cmd),
|
||||
sizeof(nuc->to_nuc.cmd) + sizeof(nuc->to_nuc.imu)) == HAL_OK)
|
||||
sizeof(nuc->to_nuc.cmd) ) == HAL_OK)
|
||||
|
||||
|
||||
return DEVICE_OK;
|
||||
else
|
||||
return DEVICE_ERR;
|
||||
} else {
|
||||
if (HAL_UART_Transmit_DMA(BSP_UART_GetHandle(BSP_UART_NUC),
|
||||
(uint8_t *)&(nuc->to_nuc.imu),
|
||||
sizeof(nuc->to_nuc.imu)) == HAL_OK)
|
||||
return DEVICE_OK;
|
||||
else
|
||||
return DEVICE_ERR;
|
||||
}
|
||||
}
|
||||
// else {
|
||||
// if (HAL_UART_Transmit_DMA(BSP_UART_GetHandle(BSP_UART_NUC),
|
||||
// (uint8_t *)&(nuc->to_nuc.imu),
|
||||
// sizeof(nuc->to_nuc.imu)) == HAL_OK)
|
||||
// return DEVICE_OK;
|
||||
// else
|
||||
// return DEVICE_ERR;
|
||||
// }
|
||||
}
|
||||
|
||||
|
@ -9,6 +9,11 @@
|
||||
#include "Algorithm/ahrs.h"
|
||||
#include "Module/Chassis.h"
|
||||
|
||||
typedef struct
|
||||
{
|
||||
fp32 send;
|
||||
|
||||
}NUC_send_t;
|
||||
|
||||
typedef struct {
|
||||
uint8_t id;
|
||||
@ -25,7 +30,6 @@ typedef struct {
|
||||
|
||||
typedef struct {
|
||||
uint8_t head;
|
||||
uint8_t type; // 0x01 控制帧
|
||||
uint8_t id;
|
||||
Protocol_UpDataCMD_t package;
|
||||
uint8_t end;
|
||||
|
@ -88,7 +88,7 @@ void Task_Chassis(void *argument)
|
||||
osMessageQueueReset(task_runtime.msgq.can.output.chassis3508);//清空队列
|
||||
osMessageQueuePut(task_runtime.msgq.can.output.chassis3508, &out.motor_CHASSIS3508, 0, 0); //发送数据
|
||||
osMessageQueueReset(task_runtime.msgq.cmd.raw.nuc_send);//清空队列
|
||||
osMessageQueuePut(task_runtime.msgq.cmd.raw.nuc_send, &chassis.NUC_send, 0, 0); //发送数据
|
||||
osMessageQueuePut(task_runtime.msgq.cmd.raw.nuc_send, &chassis.to_nuc, 0, 0); //发送数据
|
||||
vofa_send[0] = chassis.vofa_send[0];
|
||||
vofa_send[1] = chassis.vofa_send[1];
|
||||
vofa_send[2] = chassis.vofa_send[2];
|
||||
|
@ -16,7 +16,7 @@ static CMD_NUC_t Nuc;
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
int rec_flag=0;
|
||||
|
||||
void Task_cmd(void *argument){
|
||||
(void)argument; /*未使用传递参数 消除警告*/
|
||||
@ -38,14 +38,16 @@ void Task_cmd(void *argument){
|
||||
osKernelLock(); /*锁住RTOS内核调度*/
|
||||
|
||||
/*将各任务接收到的原始数据解析为通用的控制命令*/
|
||||
|
||||
|
||||
|
||||
/*注意,不能将nuc和码盘导航一块使用*/
|
||||
|
||||
if(osMessageQueueGet(task_runtime.msgq.cmd.raw.nuc, &Nuc,0 ,0) ==osOK) //nuc
|
||||
CMD_ParseNuc(&cmd,&Nuc);
|
||||
|
||||
|
||||
if((osMessageQueueGet(task_runtime.msgq.cmd.raw.nuc, &Nuc,0 ,0) ==osOK)){ //nuc
|
||||
}
|
||||
else
|
||||
{
|
||||
memset(&Nuc, 0, sizeof(CMD_NUC_t));
|
||||
}
|
||||
CMD_ParseNuc(&cmd,&Nuc);
|
||||
|
||||
if(osMessageQueueGet(task_runtime.msgq.cmd.raw.rc, &rc_ctrl, 0, 0) == osOK)//遥控器
|
||||
CMD_ParseRc(&cmd, &rc_ctrl);
|
||||
|
||||
|
@ -11,7 +11,7 @@
|
||||
#include "task\user_task.h"
|
||||
#include "can_use.h"
|
||||
#include "cmd.h"
|
||||
|
||||
#include "nuc.h"
|
||||
/* Private typedef ---------------------------------------------------------- */
|
||||
/* Private define ----------------------------------------------------------- */
|
||||
/* Private macro ------------------------------------------------------------ */
|
||||
|
@ -23,6 +23,8 @@ fp32 send[4]={11.0f,45.0,1.f,4.0f};
|
||||
int a=0;
|
||||
|
||||
|
||||
|
||||
|
||||
void Task_nuc(void *argument){
|
||||
(void)argument; /**/
|
||||
|
||||
@ -45,29 +47,37 @@ void Task_nuc(void *argument){
|
||||
last_online_tick = tick;
|
||||
}
|
||||
else{
|
||||
if (tick - last_online_tick > 300) NUC_HandleOffline(&cmd_fromnuc, &nuc_raw);
|
||||
if (tick - last_online_tick > 300)
|
||||
NUC_HandleOffline(&cmd_fromnuc, &nuc_raw);
|
||||
}
|
||||
|
||||
if (nuc_raw.unc_online) {
|
||||
osMessageQueueReset(task_runtime.msgq.cmd.raw.nuc);
|
||||
osMessageQueuePut(task_runtime.msgq.cmd.raw.nuc,&(cmd_fromnuc),0,0);
|
||||
}
|
||||
else
|
||||
osMessageQueueReset(task_runtime.msgq.cmd.raw.nuc);
|
||||
|
||||
|
||||
osMessageQueueGet(task_runtime.msgq.nuc.quat, &(quat), NULL, 0);
|
||||
osMessageQueueGet(task_runtime.msgq.nuc.accl, &(accl), NULL, 0);
|
||||
osMessageQueueGet(task_runtime.msgq.nuc.gyro, &(gyro), NULL, 0);
|
||||
|
||||
// osMessageQueueGet(task_runtime.msgq.cmd.raw.nuc_send, &NUC_send, NULL, 0);
|
||||
|
||||
|
||||
bool cmd_update = (osMessageQueueGet(task_runtime.msgq.cmd.raw.nuc_send,
|
||||
&(NUC_send), NULL, 0) == osOK);
|
||||
|
||||
NUC_PackIMU(&nuc_raw, &quat, &accl, &gyro);
|
||||
// NUC_PackIMU(&nuc_raw, &quat, &accl, &gyro);
|
||||
if (cmd_update) {
|
||||
NUC_PackCMD(&nuc_raw,&NUC_send);
|
||||
|
||||
NUC_StartSend(&nuc_raw,cmd_update);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
// NUC_StartSend(&nuc_raw, cmd_update);
|
||||
|
||||
tick += delay_tick; /* 计算下一个唤醒时刄1ķ*/
|
||||
|
@ -18,7 +18,7 @@
|
||||
#define TASK_FREQ_UP (900u)
|
||||
|
||||
#define TASK_FREQ_CTRL_CMD (500u)
|
||||
#define TASK_FREQ_NUC (250u)
|
||||
#define TASK_FREQ_NUC (500u)
|
||||
#define TASK_FREQ_CAN (1000u)
|
||||
#define TASK_FREQ_RC (1000u)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user