Browse Source

新增udp clinet 每次测量每次发送

缩短前进避障距离
确定正压范围
找纠速度限位放大
FW3.2
LIN\54376 12 hours ago
parent
commit
def6828641
  1. 4
      .settings/language.settings.xml
  2. 1
      BASE/Inc/MSP/msp_PaintThickness.h
  3. 82
      BASE/Src/BSP/bsp_client_setting.c
  4. 16
      BASE/Src/MSP/msp_PaintThickness.c
  5. 17
      Core/Protobuf/PSource/bsp_GV.pb.h
  6. 6
      Core/Protobuf/Proto/bsp_GV.proto
  7. 4
      Core/Src/FSM.c
  8. 3
      Core/Src/main.c
  9. 4
      Core/Src/robot_state.c

4
.settings/language.settings.xml

@ -5,7 +5,7 @@
<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/> <provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/> <provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/> <provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
<provider class="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" console="false" env-hash="1328381158025398140" id="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" keep-relative-paths="false" name="MCU ARM GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true"> <provider class="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" console="false" env-hash="1328381157137894459" id="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" keep-relative-paths="false" name="MCU ARM GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<language-scope id="org.eclipse.cdt.core.gcc"/> <language-scope id="org.eclipse.cdt.core.gcc"/>
<language-scope id="org.eclipse.cdt.core.g++"/> <language-scope id="org.eclipse.cdt.core.g++"/>
</provider> </provider>
@ -16,7 +16,7 @@
<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/> <provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/> <provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/> <provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
<provider class="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" console="false" env-hash="1328381158025398140" id="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" keep-relative-paths="false" name="MCU ARM GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true"> <provider class="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" console="false" env-hash="1328381157137894459" id="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" keep-relative-paths="false" name="MCU ARM GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<language-scope id="org.eclipse.cdt.core.gcc"/> <language-scope id="org.eclipse.cdt.core.gcc"/>
<language-scope id="org.eclipse.cdt.core.g++"/> <language-scope id="org.eclipse.cdt.core.g++"/>
</provider> </provider>

1
BASE/Inc/MSP/msp_PaintThickness.h

@ -11,6 +11,7 @@
#include "stdint.h" #include "stdint.h"
extern int32_t* PaintThickness; extern int32_t* PaintThickness;
extern int32_t* PaintThickness_Count;
extern void Paint_Thickness_intialize(); extern void Paint_Thickness_intialize();

82
BASE/Src/BSP/bsp_client_setting.c

@ -16,6 +16,7 @@ void decode_received_data_from_client(uint8_t *buffer, uint16_t length);
struct UARTHandler *client_setting_Handler; //相当于当前行及下一行这两个结构体与绑定的共享地址 struct UARTHandler *client_setting_Handler; //相当于当前行及下一行这两个结构体与绑定的共享地址
DispacherController *client_setting_dispacher; DispacherController *client_setting_dispacher;
int LastCount;
void client_setting_intialize(struct UARTHandler *Handler) void client_setting_intialize(struct UARTHandler *Handler)
{ {
@ -35,79 +36,42 @@ void client_setting_intialize(struct UARTHandler *Handler)
void UpdateIV()//往安卓发的 void UpdateIV()//往安卓发的
{ {
//根据提供的缓冲区和大小创建一个输出流对象
pb_ostream_t IV_o_stream = pb_ostream_from_buffer(
&client_setting_Handler->Tx_Buf[2],
sizeof(client_setting_Handler->Tx_Buf) - 2);
//将 IV 结构体中的数值按照 Protobuf 协议进行编码,并将编码后的字节流存储到 client_setting_Handler->Tx_Buf 数组(从第三个元素开始) if(GV.Robot_PaintThickness_Count > LastCount)
pb_encode(&IV_o_stream, IV_struct_define_fields, &IV); {
}
else
{
return;
}
client_setting_Handler->Tx_Buf[0] = 0x01;
client_setting_Handler->Tx_Buf[1] = 0x03;
client_setting_Handler->Tx_Buf[2] = 0x02;
client_setting_Handler->TxCount = 7;
client_setting_Handler->Tx_Buf[0] = 0x55;
client_setting_Handler->Tx_Buf[1] = 0x55;
client_setting_Handler->TxCount = IV_o_stream.bytes_written + 4;
uint16_t crc=MB_CRC16(&(client_setting_Handler->Tx_Buf[0]), IV_o_stream.bytes_written + 2); client_setting_Handler->Tx_Buf[3] = (GV.Robot_PaintThickness>>8) &0xff;
client_setting_Handler->Tx_Buf[4] = GV.Robot_PaintThickness & 0xff;
client_setting_Handler->Tx_Buf[IV_o_stream.bytes_written + 2] = (crc>>8) &0xff; uint16_t crc=MB_CRC16(&(client_setting_Handler->Tx_Buf[0]), 5);
client_setting_Handler->Tx_Buf[IV_o_stream.bytes_written + 3] = crc & 0xff;;
client_setting_Handler->Tx_Buf[6] = (crc>>8) &0xff;
client_setting_Handler->Tx_Buf[5] = crc & 0xff;
client_setting_Handler->UART_Tx(client_setting_Handler); client_setting_Handler->UART_Tx(client_setting_Handler);
LastCount = GV.Robot_PaintThickness_Count;
} }
void decode_received_data_from_client(uint8_t *buffer, uint16_t length) void decode_received_data_from_client(uint8_t *buffer, uint16_t length)
{ {
uint8_t data[20]; uint8_t data[2000];
memcpy(data,buffer,length); memcpy(data,buffer,length);
//if (*buffer == 0x55 && *(buffer + 1) == 0x55 && length >= 4)
if (buffer[0] == 0x55 && buffer[1] == 0x55 && length >= 4)
{
uint16_t crc_check = ((buffer[length - 1] << 8) | buffer[length - 2]);
uint16_t crc_check1 = MB_CRC16(buffer, length - 2);
/* CRC 校验正确 */
if (crc_check == MB_CRC16(buffer, length - 2))
{
//if (*(buffer + 2) == 0x01 && *(buffer + 3) == 0x01) //01 01 设置PV
if (buffer[2] == 0x01 && buffer[3] == 0x01) //01 01 设置PV
{
PV_struct_define decoded_PV = PV_struct_define_init_default;
pb_istream_t i_pv_stream =
{ 0 };
i_pv_stream = pb_istream_from_buffer(&buffer[4], length - 4);
pb_decode(&i_pv_stream, PV_struct_define_fields, &decoded_PV);
//将CV写入EEPROM
//CV_struct_define saved_cV = GF_BSP_EEPROM_Get_CV();
GV.PV = decoded_PV;
GF_BSP_EEPROM_Set_CV(CV);
}
else if (*(buffer + 2) == 0x02 && *(buffer + 3) == 0x01) //设置PV
{
}
else if (*(buffer + 2) == 0x03 && *(buffer + 3) == 0x01) //返回IV
{
}
else
{
}
}
else
{
//Decode Error;
//log_error("wire sensor decoding failed");
LOGFF(DL_ERROR, "androidd decoding failed");
}
}
} }
// client_setting_Handler->Tx_Buf[0]='1'; // client_setting_Handler->Tx_Buf[0]='1';
// client_setting_Handler->Tx_Buf[1]=','; // client_setting_Handler->Tx_Buf[1]=',';

16
BASE/Src/MSP/msp_PaintThickness.c

@ -14,6 +14,10 @@ void GF_PT_Inquiry();//inqure data from the, in fact this is a modbus 03 functio
int32_t* PaintThickness; int32_t* PaintThickness;
int32_t PaintThickness_LastLength;
int32_t* PaintThickness_Count;
struct UARTHandler *PaintThickness_sensor; struct UARTHandler *PaintThickness_sensor;
DispacherController *PaintThickness_sensor_dispacherController; DispacherController *PaintThickness_sensor_dispacherController;
@ -51,6 +55,16 @@ void decode_PaintThickness(uint8_t *buffer, uint16_t length)
{ {
//memcpy(data_PaintThickness,buffer,length); //memcpy(data_PaintThickness,buffer,length);
LOG("start decoding and the length is %d",length); LOG("start decoding and the length is %d",length);
if(length >= PaintThickness_LastLength + 5)
{
*PaintThickness_Count = *PaintThickness_Count + 1;
}
else
{
return;
}
/* 校验 */ /* 校验 */
//;<:> //;<:>
uint8_t crc_check[4] = {';','<',':','>'}; uint8_t crc_check[4] = {';','<',':','>'};
@ -78,7 +92,7 @@ void decode_PaintThickness(uint8_t *buffer, uint16_t length)
*PaintThickness = atof(PaintThickness_in) * 10; *PaintThickness = atof(PaintThickness_in) * 10;
PaintThickness_LastLength = length;
HardWareErrorController->Set_PCOMHardWare(HardWareErrorController,"PaintThickness_sensor",1); HardWareErrorController->Set_PCOMHardWare(HardWareErrorController,"PaintThickness_sensor",1);
LOG("decode_PaintThickness succeeded and the force is %d",*PaintThickness); LOG("decode_PaintThickness succeeded and the force is %d",*PaintThickness);

17
Core/Protobuf/PSource/bsp_GV.pb.h

@ -43,6 +43,7 @@ typedef struct _GV_struct_define {
int32_t Robot_ForceValue; int32_t Robot_ForceValue;
int32_t Robot_DynamometerValue; int32_t Robot_DynamometerValue;
int32_t Robot_PaintThickness; int32_t Robot_PaintThickness;
int32_t Robot_PaintThickness_Count;
int32_t Robot_Speed_mpm; int32_t Robot_Speed_mpm;
bool has_Robot_Ultrasonic; bool has_Robot_Ultrasonic;
MSP_UltrasonicParameters Robot_Ultrasonic; MSP_UltrasonicParameters Robot_Ultrasonic;
@ -55,8 +56,8 @@ extern "C" {
#endif #endif
/* Initializer values for message structs */ /* Initializer values for message structs */
#define GV_struct_define_init_default {false, PV_struct_define_init_default, false, MotorParameters_init_default, false, MotorParameters_init_default, false, SP_MSP_U7_Button_init_default, 0, false, ErrorData_init_default, false, MSP_TL720DParameters_init_default, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, false, MSP_UltrasonicParameters_init_default, 0} #define GV_struct_define_init_default {false, PV_struct_define_init_default, false, MotorParameters_init_default, false, MotorParameters_init_default, false, SP_MSP_U7_Button_init_default, 0, false, ErrorData_init_default, false, MSP_TL720DParameters_init_default, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, false, MSP_UltrasonicParameters_init_default, 0}
#define GV_struct_define_init_zero {false, PV_struct_define_init_zero, false, MotorParameters_init_zero, false, MotorParameters_init_zero, false, SP_MSP_U7_Button_init_zero, 0, false, ErrorData_init_zero, false, MSP_TL720DParameters_init_zero, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, false, MSP_UltrasonicParameters_init_zero, 0} #define GV_struct_define_init_zero {false, PV_struct_define_init_zero, false, MotorParameters_init_zero, false, MotorParameters_init_zero, false, SP_MSP_U7_Button_init_zero, 0, false, ErrorData_init_zero, false, MSP_TL720DParameters_init_zero, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, false, MSP_UltrasonicParameters_init_zero, 0}
/* Field tags (for use in manual encoding/decoding) */ /* Field tags (for use in manual encoding/decoding) */
#define GV_struct_define_PV_tag 1 #define GV_struct_define_PV_tag 1
@ -76,8 +77,9 @@ extern "C" {
#define GV_struct_define_Robot_ForceValue_tag 15 #define GV_struct_define_Robot_ForceValue_tag 15
#define GV_struct_define_Robot_DynamometerValue_tag 16 #define GV_struct_define_Robot_DynamometerValue_tag 16
#define GV_struct_define_Robot_PaintThickness_tag 17 #define GV_struct_define_Robot_PaintThickness_tag 17
#define GV_struct_define_Robot_Speed_mpm_tag 18 #define GV_struct_define_Robot_PaintThickness_Count_tag 18
#define GV_struct_define_Robot_Ultrasonic_tag 19 #define GV_struct_define_Robot_Speed_mpm_tag 19
#define GV_struct_define_Robot_Ultrasonic_tag 20
#define GV_struct_define_Emergency_tag 21 #define GV_struct_define_Emergency_tag 21
/* Struct field encoding specification for nanopb */ /* Struct field encoding specification for nanopb */
@ -99,8 +101,9 @@ X(a, STATIC, SINGULAR, INT32, Robot_ChgLength, 14) \
X(a, STATIC, SINGULAR, INT32, Robot_ForceValue, 15) \ X(a, STATIC, SINGULAR, INT32, Robot_ForceValue, 15) \
X(a, STATIC, SINGULAR, INT32, Robot_DynamometerValue, 16) \ X(a, STATIC, SINGULAR, INT32, Robot_DynamometerValue, 16) \
X(a, STATIC, SINGULAR, INT32, Robot_PaintThickness, 17) \ X(a, STATIC, SINGULAR, INT32, Robot_PaintThickness, 17) \
X(a, STATIC, SINGULAR, INT32, Robot_Speed_mpm, 18) \ X(a, STATIC, SINGULAR, INT32, Robot_PaintThickness_Count, 18) \
X(a, STATIC, OPTIONAL, MESSAGE, Robot_Ultrasonic, 19) \ X(a, STATIC, SINGULAR, INT32, Robot_Speed_mpm, 19) \
X(a, STATIC, OPTIONAL, MESSAGE, Robot_Ultrasonic, 20) \
X(a, STATIC, SINGULAR, INT32, Emergency, 21) X(a, STATIC, SINGULAR, INT32, Emergency, 21)
#define GV_struct_define_CALLBACK NULL #define GV_struct_define_CALLBACK NULL
#define GV_struct_define_DEFAULT NULL #define GV_struct_define_DEFAULT NULL
@ -119,7 +122,7 @@ extern const pb_msgdesc_t GV_struct_define_msg;
/* Maximum encoded size of messages (where known) */ /* Maximum encoded size of messages (where known) */
#define BSP_GV_PB_H_MAX_SIZE GV_struct_define_size #define BSP_GV_PB_H_MAX_SIZE GV_struct_define_size
#define GV_struct_define_size 1087 #define GV_struct_define_size 1099
#ifdef __cplusplus #ifdef __cplusplus
} /* extern "C" */ } /* extern "C" */

6
Core/Protobuf/Proto/bsp_GV.proto

@ -32,9 +32,11 @@ message GV_struct_define
int32 Robot_ForceValue = 15; int32 Robot_ForceValue = 15;
int32 Robot_DynamometerValue = 16; int32 Robot_DynamometerValue = 16;
int32 Robot_PaintThickness = 17; int32 Robot_PaintThickness = 17;
int32 Robot_Speed_mpm = 18; int32 Robot_PaintThickness_Count = 18;
MSP_UltrasonicParameters Robot_Ultrasonic = 19; int32 Robot_Speed_mpm = 19;
MSP_UltrasonicParameters Robot_Ultrasonic = 20;
int32 Emergency = 21; int32 Emergency = 21;
}; };

4
Core/Src/FSM.c

@ -236,7 +236,7 @@ void Dangerous_Test()
} }
//前进避障计数 //前进避障计数
if(GV.Robot_Ultrasonic.USValue_4 <= 5000 if(GV.Robot_Ultrasonic.USValue_4 <= 4500
&& GV.Robot_Ultrasonic.USValue_4 != 0) && GV.Robot_Ultrasonic.USValue_4 != 0)
{ {
GV.Robot_Ultrasonic.USValue_Count_4 ++; GV.Robot_Ultrasonic.USValue_Count_4 ++;
@ -288,7 +288,7 @@ void Dym_Test()
{ {
//计数,置位标志 //计数,置位标志
//前进探边计数 //前进探边计数
if(GV.Robot_Ultrasonic.Dym_Value <= 10300 || GV.Robot_Ultrasonic.Dym_Value >= 11000) if(GV.Robot_Ultrasonic.Dym_Value <= 10500 || GV.Robot_Ultrasonic.Dym_Value >= 15000)
{ {
GV.Robot_Ultrasonic.Dym_Value_Count ++; GV.Robot_Ultrasonic.Dym_Value_Count ++;
if(GV.Robot_Ultrasonic.Dym_Value_Count >= 3) if(GV.Robot_Ultrasonic.Dym_Value_Count >= 3)

3
Core/Src/main.c

@ -267,6 +267,7 @@ void CV_GV_Init()
CMCUValue_in = &GV.Robot_ForceValue; CMCUValue_in = &GV.Robot_ForceValue;
DynamometerValue_in = &GV.Robot_DynamometerValue; DynamometerValue_in = &GV.Robot_DynamometerValue;
PaintThickness = &GV.Robot_PaintThickness; PaintThickness = &GV.Robot_PaintThickness;
PaintThickness_Count = &GV.Robot_PaintThickness_Count;
USValue_in = &GV.Robot_Ultrasonic; USValue_in = &GV.Robot_Ultrasonic;
//Error Config //Error Config
@ -312,6 +313,8 @@ void GF_Robot_Init()
T_F4_Remote_Controller_intialize(&RS_485_3_UART_Handler); T_F4_Remote_Controller_intialize(&RS_485_3_UART_Handler);
Paint_Thickness_intialize(&RS_485_4_UART_Handler); Paint_Thickness_intialize(&RS_485_4_UART_Handler);
client_setting_intialize(&LPUART1_UART_Handler);
GF_BSP_FDCAN_Init(); GF_BSP_FDCAN_Init();
GF_BSP_CANHandler_Init(can1_sendListPeriod, can1_DispacherPeriod, GF_BSP_CANHandler_Init(can1_sendListPeriod, can1_DispacherPeriod,
can2_sendListPeriod, can2_DispacherPeriod); can2_sendListPeriod, can2_DispacherPeriod);

4
Core/Src/robot_state.c

@ -346,9 +346,9 @@ void VehicleAutoTurn(double InclinometerAngle, double expectationAngle, double K
deltaAngle=-deltaAngle; deltaAngle=-deltaAngle;
} }
if(deltaSpeed >= 400) if(deltaSpeed >= 500)
{ {
deltaSpeed = 400; deltaSpeed = 500;
} }
GV.LeftFrontMotor.Target_Velcity=0; GV.LeftFrontMotor.Target_Velcity=0;

Loading…
Cancel
Save