|
|
|
@ -189,7 +189,7 @@ static void Move_Halt_AngleError(void) |
|
|
|
{ |
|
|
|
if (Rd_GetTime() - uiLastTime >= 600 * g_stCV.Paint_Gun_Shutdown_Distance / g_stIV.RobotMoveSpeed) |
|
|
|
{ |
|
|
|
MsgCenter_SendTo(MODULE_NAME_MOTOR, COMMON_CMD_STOP_ALL, NULL, 0); |
|
|
|
MsgCenter_SendTo(MODULE_NAME_MOTOR, CMD_STOP_ALL, NULL, 0); |
|
|
|
} |
|
|
|
return; |
|
|
|
} |
|
|
|
@ -202,7 +202,7 @@ static void Move_Halt_AngleError(void) |
|
|
|
{ |
|
|
|
if(Rd_GetTime() - g_stAngleError_Ctl.m_ipaintOffCount > 1000) |
|
|
|
{ |
|
|
|
MsgCenter_SendTo(MODULE_NAME_CUSTOM, COMMON_CMD_STOP_ALL, NULL, 0);//先关枪
|
|
|
|
MsgCenter_SendTo(MODULE_NAME_CUSTOM, CMD_STOP_ALL, NULL, 0);//先关枪
|
|
|
|
g_stAngleError_Ctl.m_iAnglelock = 1; |
|
|
|
return; |
|
|
|
} |
|
|
|
@ -252,8 +252,16 @@ static void Custom_ModuleHandler(const Msg_t *pstMsg) |
|
|
|
if (pstMsg->m_uiDataLen >= sizeof(uiFailtCode)) |
|
|
|
{ |
|
|
|
RD_MEMCPY(uiFailtCode, pstMsg->m_aucData, sizeof(uiFailtCode)); |
|
|
|
if (uiFailtCode[0] == 1) g_stIV.Left_Motor_Err = uiFailtCode[1]; |
|
|
|
else g_stIV.Right_Motor_Err = uiFailtCode[1]; |
|
|
|
if (uiFailtCode[0] == 1) |
|
|
|
{ |
|
|
|
g_stIV.Left_Motor_Err = uiFailtCode[1]; |
|
|
|
MsgCenter_SendTo(MODULE_NAME_DAEMON, DAEMON_SET_LEFT_MOTOR, NULL, 0); |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
g_stIV.Right_Motor_Err = uiFailtCode[1]; |
|
|
|
MsgCenter_SendTo(MODULE_NAME_DAEMON, DAEMON_SET_RIGHT_MOTOR, NULL, 0); |
|
|
|
} |
|
|
|
} |
|
|
|
break; |
|
|
|
} |
|
|
|
@ -266,6 +274,11 @@ static void Custom_ModuleHandler(const Msg_t *pstMsg) |
|
|
|
if (1 == iCurrentSpeed[0]) |
|
|
|
{ |
|
|
|
g_stIV.CurrentSpeed = iCurrentSpeed[1]; |
|
|
|
MsgCenter_SendTo(MODULE_NAME_DAEMON, DAEMON_SET_LEFT_MOTOR, NULL, 0); |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
MsgCenter_SendTo(MODULE_NAME_DAEMON, DAEMON_SET_RIGHT_MOTOR, NULL, 0); |
|
|
|
} |
|
|
|
} |
|
|
|
break; |
|
|
|
@ -301,7 +314,7 @@ static void Custom_ModuleHandler(const Msg_t *pstMsg) |
|
|
|
g_ichangLineState = 1; // 走到这说明换道第一次转完了
|
|
|
|
break; |
|
|
|
} |
|
|
|
case COMMON_CMD_STOP_ALL: |
|
|
|
case CMD_STOP_ALL: |
|
|
|
{ |
|
|
|
HAL_GPIO_WritePin(OUT_1_GPIO_Port, OUT_1_Pin, 1); |
|
|
|
g_stAngleError_Ctl.m_iPaintState = 1; |
|
|
|
@ -382,8 +395,7 @@ static void Custom_ModuleHandler(const Msg_t *pstMsg) |
|
|
|
iVehicleSpeed = g_stCV.Speed_m_per_min*iSpeedSelection/30; |
|
|
|
} |
|
|
|
g_stIV.RobotMoveSpeed = iVehicleSpeed; |
|
|
|
MsgCenter_SendTo(MODULE_NAME_RBCORE, RBCORE_GET_VEHICLE_SPEED, (void *)&iVehicleSpeed, sizeof(int)); |
|
|
|
MsgCenter_SendTo(MODULE_NAME_MOTOR, MOTOR_GET_VEHICLE_SPEED, (void *)&iVehicleSpeed, sizeof(int)); |
|
|
|
MsgCenter_SendTo(MODULE_NAME_MOTOR, GET_VEHICLE_SPEED, (void *)&iVehicleSpeed, sizeof(int)); |
|
|
|
|
|
|
|
Move_Halt_AngleError(); |
|
|
|
|
|
|
|
@ -459,12 +471,18 @@ static void Custom_ModuleHandler(const Msg_t *pstMsg) |
|
|
|
CH13_S2_Value = g_stMK32.CH13_S2; |
|
|
|
} |
|
|
|
|
|
|
|
int aiMotorSpeed[2] = {0}; //0索引表示左,1索引表示右,多轮时到对应motor的MOTOR_CMD_SET_SPEED命令自行处理
|
|
|
|
// 自动巡航
|
|
|
|
if (g_stMK32.CH5_SB == -1000) |
|
|
|
{ |
|
|
|
if (g_stPV.RunMode == 1) |
|
|
|
{ |
|
|
|
MsgCenter_SendTo(MODULE_NAME_RBCORE, RBCORE_CMD_MANUAL_FORWARD, NULL, 0); |
|
|
|
if (iVehicleSpeed >= 0) |
|
|
|
{ |
|
|
|
aiMotorSpeed[0] = iVehicleSpeed * 10; |
|
|
|
aiMotorSpeed[1] = iVehicleSpeed * 10; |
|
|
|
MsgCenter_SendTo(MODULE_NAME_MOTOR, MOTOR_SET_SPEED, aiMotorSpeed, sizeof(aiMotorSpeed)); |
|
|
|
} |
|
|
|
} |
|
|
|
else if (g_stPV.RunMode == 2 || g_stPV.RunMode == 3) |
|
|
|
{ |
|
|
|
@ -485,7 +503,12 @@ static void Custom_ModuleHandler(const Msg_t *pstMsg) |
|
|
|
{ |
|
|
|
if (g_stPV.RunMode == 1) |
|
|
|
{ |
|
|
|
MsgCenter_SendTo(MODULE_NAME_RBCORE, RBCORE_CMD_MANUAL_BACKWARD, NULL, 0); |
|
|
|
if (iVehicleSpeed >= 0) |
|
|
|
{ |
|
|
|
aiMotorSpeed[0] = -iVehicleSpeed * 10; |
|
|
|
aiMotorSpeed[1] = -iVehicleSpeed * 10; |
|
|
|
MsgCenter_SendTo(MODULE_NAME_MOTOR, MOTOR_SET_SPEED, aiMotorSpeed, sizeof(aiMotorSpeed)); |
|
|
|
} |
|
|
|
} |
|
|
|
else if (g_stPV.RunMode == 2 || g_stPV.RunMode == 3) |
|
|
|
{ |
|
|
|
@ -512,7 +535,7 @@ static void Custom_ModuleHandler(const Msg_t *pstMsg) |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
MsgCenter_SendTo(MODULE_NAME_MOTOR, COMMON_CMD_STOP_ALL, NULL, 0); |
|
|
|
MsgCenter_SendTo(MODULE_NAME_MOTOR, CMD_STOP_ALL, NULL, 0); |
|
|
|
} |
|
|
|
break; |
|
|
|
} |
|
|
|
@ -525,8 +548,13 @@ static void Custom_ModuleHandler(const Msg_t *pstMsg) |
|
|
|
{ |
|
|
|
if (g_stPV.RunMode == 1) |
|
|
|
{ |
|
|
|
MsgCenter_SendTo(MODULE_NAME_RBCORE, RBCORE_CMD_MANUAL_FORWARD, NULL, 0); |
|
|
|
} |
|
|
|
if (iVehicleSpeed >= 0) |
|
|
|
{ |
|
|
|
aiMotorSpeed[0] = iVehicleSpeed * 10; |
|
|
|
aiMotorSpeed[1] = iVehicleSpeed * 10; |
|
|
|
MsgCenter_SendTo(MODULE_NAME_MOTOR, MOTOR_SET_SPEED, aiMotorSpeed, sizeof(aiMotorSpeed)); |
|
|
|
} |
|
|
|
} |
|
|
|
else if (g_stPV.RunMode == 2 || g_stPV.RunMode == 3) |
|
|
|
{ |
|
|
|
if (0 == g_stAngleError_Ctl.m_iAnglelock) |
|
|
|
@ -545,7 +573,12 @@ static void Custom_ModuleHandler(const Msg_t *pstMsg) |
|
|
|
{ |
|
|
|
if (g_stPV.RunMode == 1) |
|
|
|
{ |
|
|
|
MsgCenter_SendTo(MODULE_NAME_RBCORE, RBCORE_CMD_MANUAL_BACKWARD, NULL, 0); |
|
|
|
if (iVehicleSpeed >= 0) |
|
|
|
{ |
|
|
|
aiMotorSpeed[0] = -iVehicleSpeed * 10; |
|
|
|
aiMotorSpeed[1] = -iVehicleSpeed * 10; |
|
|
|
MsgCenter_SendTo(MODULE_NAME_MOTOR, MOTOR_SET_SPEED, aiMotorSpeed, sizeof(aiMotorSpeed)); |
|
|
|
} |
|
|
|
} |
|
|
|
else if (g_stPV.RunMode == 2 || g_stPV.RunMode == 3) |
|
|
|
{ |
|
|
|
@ -563,19 +596,29 @@ static void Custom_ModuleHandler(const Msg_t *pstMsg) |
|
|
|
} |
|
|
|
else if (abs(angle - 0) <= g_stCV.Joy_Sticker_Angle_Allowance) |
|
|
|
{ |
|
|
|
MsgCenter_SendTo(MODULE_NAME_RBCORE, RBCORE_CMD_MANUAL_TURNRIGHT, NULL, 0); |
|
|
|
if (g_stCV.LeftTurnSpeed > 0 && g_stCV.RightTurnSpeed > 0) |
|
|
|
{ |
|
|
|
aiMotorSpeed[0] = g_stCV.LeftTurnSpeed; |
|
|
|
aiMotorSpeed[1] = -g_stCV.RightTurnSpeed; |
|
|
|
MsgCenter_SendTo(MODULE_NAME_MOTOR, MOTOR_SET_SPEED, aiMotorSpeed, sizeof(aiMotorSpeed)); |
|
|
|
} |
|
|
|
} |
|
|
|
else if (abs(angle - 180) <= g_stCV.Joy_Sticker_Angle_Allowance || abs(angle - (-180)) <= g_stCV.Joy_Sticker_Angle_Allowance) |
|
|
|
{ |
|
|
|
MsgCenter_SendTo(MODULE_NAME_RBCORE, RBCORE_CMD_MANUAL_TURNLEFT, NULL, 0); |
|
|
|
if (g_stCV.LeftTurnSpeed > 0 && g_stCV.RightTurnSpeed > 0) |
|
|
|
{ |
|
|
|
aiMotorSpeed[0] = -g_stCV.LeftTurnSpeed; |
|
|
|
aiMotorSpeed[1] = g_stCV.RightTurnSpeed; |
|
|
|
MsgCenter_SendTo(MODULE_NAME_MOTOR, MOTOR_SET_SPEED, aiMotorSpeed, sizeof(aiMotorSpeed)); |
|
|
|
} |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
MsgCenter_SendTo(MODULE_NAME_MOTOR, COMMON_CMD_STOP_ALL, NULL, 0); |
|
|
|
MsgCenter_SendTo(MODULE_NAME_MOTOR, CMD_STOP_ALL, NULL, 0); |
|
|
|
} |
|
|
|
break; |
|
|
|
} |
|
|
|
case COMMON_CMD_SHOW_INFO: |
|
|
|
case CMD_SHOW_INFO: |
|
|
|
{ |
|
|
|
lua_print("MK32 Info\nRxIndex:%d\tIsOnline:%d\n", g_stMK32.RxIndex, g_stMK32.IsOnline); |
|
|
|
lua_print("CH0_RY_H\t%d\n", g_stMK32.CH0_RY_H); |
|
|
|
|