From bb13f0c06ddd83ef26bf9ee057ba61b53e45695f Mon Sep 17 00:00:00 2001 From: liumin Date: Mon, 3 Nov 2025 06:34:55 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=AF=BC=E8=88=AA=E4=BB=AA?= =?UTF-8?q?=E9=94=99=E8=AF=AF=E8=A7=A3=E5=86=B3=E8=87=AA=E5=8A=A8=E6=A8=A1?= =?UTF-8?q?=E5=BC=8F=E5=88=B9=E8=BD=A6=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vscode/settings.json | 3 ++ .../eth-xip/sf/app/app_differential_drive.c | 32 +++++++++---------- .../app_demo/eth-xip/sf/app/app_turntable.c | 12 +++---- .../app_demo/eth-xip/sf/interface_can.c | 2 +- .../app_demo/eth-xip/sf/interface_ethernet.c | 21 ++++++++++++ 5 files changed, 47 insertions(+), 23 deletions(-) create mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..fc47100 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "cmake.sourceDirectory": "E:/liumin/1car/e3_176_ref/middleware/mbedtls/3rdparty" +} \ No newline at end of file diff --git a/boards/e3_176_ref/app_demo/eth-xip/sf/app/app_differential_drive.c b/boards/e3_176_ref/app_demo/eth-xip/sf/app/app_differential_drive.c index 3af0cc9..2bb7d04 100644 --- a/boards/e3_176_ref/app_demo/eth-xip/sf/app/app_differential_drive.c +++ b/boards/e3_176_ref/app_demo/eth-xip/sf/app/app_differential_drive.c @@ -304,7 +304,7 @@ void computeInverseKinematics(float linear_velocity_x, float yaw_rate, float max } else{} - printf("input_torq: left=%.1f right=%.1f yaw_rate=%.1f\n", left_speed_mps, right_speed_mps, yaw_rate); +// printf("input_torq: left=%.1f right=%.1f yaw_rate=%.1f\n", left_speed_mps, right_speed_mps, yaw_rate); motor_speed[0] = left_speed_mps; motor_speed[2] = left_speed_mps; @@ -312,9 +312,9 @@ void computeInverseKinematics(float linear_velocity_x, float yaw_rate, float max motor_speed[1] = right_speed_mps; motor_speed[3] = right_speed_mps; - adjust_torque_by_speed_diff( diff_data.left_front_motor_speed,diff_data.left_rear_motor_speed, &motor_speed[0], &motor_speed[2],100, 5); - adjust_torque_by_speed_diff( diff_data.right_front_motor_speed,diff_data.right_rear_motor_speed, &motor_speed[1], &motor_speed[3],100, 5); - + adjust_torque_by_speed_diff( diff_data.left_front_motor_speed,diff_data.left_rear_motor_speed, &motor_speed[0], &motor_speed[2],20, 5); + adjust_torque_by_speed_diff( diff_data.right_front_motor_speed,diff_data.right_rear_motor_speed, &motor_speed[1], &motor_speed[3],20, 5); +// // printf("speed: FL=%.1f FR=%.1f RL=%.1f RR=%.1f\n", diff_data.left_front_motor_speed, diff_data.right_front_motor_speed, diff_data.left_rear_motor_speed, diff_data.right_rear_motor_speed); @@ -572,7 +572,7 @@ static void diffInput(void *signal_id) diff_data.desired_speed = (float)((int16_t)(un_remote_control_input.bit_data.speed)); diff_data.desired_curvature = (float)((int16_t)(un_remote_control_input.bit_data.curvature)); // 单位转换 - diff_data.desired_speed = -diff_data.desired_speed * 0.01f; + diff_data.desired_speed = diff_data.desired_speed * 0.01f; diff_data.desired_curvature = diff_data.desired_curvature * 0.0001f; // 遥控器速度映射,参数含义为:输入速度,死区,最大输入,最大输出,低速输入,低速输出 diff_data.desired_speed = mapRemoteControlSpeed(diff_data.desired_speed, 0.1, 20, 5, 5, 0.5); @@ -605,7 +605,7 @@ static void diffInput(void *signal_id) diff_data.desired_curvature = (float)((int16_t)(un_auto_computer_input.bit_data.set_curvature)); // 单位转换 diff_data.desired_speed = diff_data.desired_speed * 0.01f; - diff_data.desired_curvature = - diff_data.desired_curvature * 0.0001f;// 20241016 增加转弯反相 + diff_data.desired_curvature = diff_data.desired_curvature * 0.0001f;// // 遥控器速度映射,参数含义为:输入速度,死区,最大输入,最大输出,低速输入,低速输出 diff_data.desired_speed = mapRemoteControlSpeed(diff_data.desired_speed, 0, 5, 10, 2.5, 5); diff_data.desired_curvature = mapRemoteControlSpeed(diff_data.desired_curvature, 0, 2, 2, 1, 1); @@ -627,7 +627,7 @@ static void diffInput(void *signal_id) } // diff_data.right_motor_speed = LOWPASS_FILTER(motor_speed_temp,right_speed_fiter[0]); - diff_data.right_motor_speed = motor_speed_temp; + diff_data.right_motor_speed = motor_speed_temp;// // right_speed_fiter[0] = diff_data.right_motor_speed; @@ -643,7 +643,7 @@ static void diffInput(void *signal_id) else if (signal_id == &un_motor_input2)// 处理第二个电机速度信号(右电机) { diff_data.left_front_motor_speed = -(float)( (int16_t)(un_motor_input1.bit_data.MotCon_1Signal4) ) /6.0; // 20250502 1号控制器增加反相 - diff_data.left_rear_motor_speed = (float)( (int16_t)un_motor_input2.bit_data.MotCon_1Signal3 ) / 6.0; + diff_data.left_rear_motor_speed = (float)( (int16_t) (un_motor_input2.bit_data.MotCon_1Signal3) ) / 6.0; if(fabs(diff_data.left_front_motor_speed) > fabs(diff_data.left_rear_motor_speed))//取速度较小的轮速 { @@ -654,7 +654,7 @@ static void diffInput(void *signal_id) motor_speed_temp = diff_data.left_front_motor_speed; } - diff_data.left_motor_speed = motor_speed_temp; + diff_data.left_motor_speed = motor_speed_temp; // // diff_data.left_motor_speed = LOWPASS_FILTER(motor_speed_temp,left_speed_fiter[0]);//低通滤波器 // left_speed_fiter[0] = diff_data.left_motor_speed; @@ -762,15 +762,15 @@ void diffParametersInit(void *signal_id) diff_data.min_Torq = (uint16_t)getParam("minTorq");//参数读取设定最大扭矩 -// printf("desired_speed: %f, desired_yaw_rate: %f\n", diff_data.desired_speed, diff_data.desired_yaw_rate); + printf("desired_speed: %f, desired_yaw_rate: %f\n", diff_data.desired_speed, diff_data.desired_yaw_rate); // printf("speed: %f, yaw_rate: %f\n", diff_data.speed, diff_data.yaw_rate); -// printf("speed: %f, yaw_rate: %f\n", diff_data.speed, diff_data.yaw_rate); + printf("speed: %f, yaw_rate: %f\n", diff_data.speed, diff_data.yaw_rate); -// printf("left_motor_speed = %f\n",diff_data.left_motor_speed); -// printf("right_motor_speed = %f\n",diff_data.right_motor_speed); + printf("left_motor_speed = %f\n",diff_data.left_motor_speed); + printf("right_motor_speed = %f\n",diff_data.right_motor_speed); -// printf("speed: FL=%.1f FR=%.1f RL=%.1f RR=%.1f\n", diff_data.left_front_motor_speed, diff_data.right_front_motor_speed, diff_data.left_rear_motor_speed, diff_data.right_rear_motor_speed); -// printf("torq: FL=%.1fNm FR=%.1fNm RL=%.1fNm RR=%.1fNm\n", diff_data.out_torq[0], diff_data.out_torq[1], diff_data.out_torq[2], diff_data.out_torq[3]); + printf("speed: FL=%.1f FR=%.1f RL=%.1f RR=%.1f\n", diff_data.left_front_motor_speed, diff_data.right_front_motor_speed, diff_data.left_rear_motor_speed, diff_data.right_rear_motor_speed); + printf("torq: FL=%.1fNm FR=%.1fNm RL=%.1fNm RR=%.1fNm\n", diff_data.out_torq[0], diff_data.out_torq[1], diff_data.out_torq[2], diff_data.out_torq[3]); float deffspeed = (float)((int16_t)(un_remote_control_input.bit_data.speed)); float deffcurvature = (float)((int16_t)(un_remote_control_input.bit_data.curvature)); @@ -778,7 +778,7 @@ void diffParametersInit(void *signal_id) deffspeed = deffspeed * 0.01f; deffcurvature = deffcurvature * 0.0001f; -// printf("remote speed = %f, remote curvature = %f\n", deffspeed, deffcurvature); + printf("remote speed = %f, remote curvature = %f\n", deffspeed, deffcurvature); timerStart(&diff_app_timer,1000,1);//1s调用一次 } diff --git a/boards/e3_176_ref/app_demo/eth-xip/sf/app/app_turntable.c b/boards/e3_176_ref/app_demo/eth-xip/sf/app/app_turntable.c index 347f035..c3f57e3 100644 --- a/boards/e3_176_ref/app_demo/eth-xip/sf/app/app_turntable.c +++ b/boards/e3_176_ref/app_demo/eth-xip/sf/app/app_turntable.c @@ -376,12 +376,12 @@ void turnableParametersInit(void *signal_id) turnable_data.min_pitch_postion = getParam("minYpos"); //俯仰位置最小限制值 turnable_data.max_pitch_postion = getParam("maxYpos"); //俯仰位置最大限制值 - printf( "turnable left A %f\n",turnable_data.out_left_motor_ampere); - printf( "turnable right A %f\n",turnable_data.out_right_motor_ampere); - printf( "turnable pitch A %f\n",turnable_data.out_pitch_motor_ampere); - printf( "desired speed %f\n",turnable_data.desired_speed); - printf( "speed %f\n",turnable_data.speed); - printf( "turnable state %d\n",turnable_data.turnable_state); +// printf( "turnable left A %f\n",turnable_data.out_left_motor_ampere); +// printf( "turnable right A %f\n",turnable_data.out_right_motor_ampere); +// printf( "turnable pitch A %f\n",turnable_data.out_pitch_motor_ampere); +// printf( "desired speed %f\n",turnable_data.desired_speed); +// printf( "speed %f\n",turnable_data.speed); +// printf( "turnable state %d\n",turnable_data.turnable_state); timerStart(&turnable_data.turnable_timer1,1000,1);//1s调用一次 diff --git a/boards/e3_176_ref/app_demo/eth-xip/sf/interface_can.c b/boards/e3_176_ref/app_demo/eth-xip/sf/interface_can.c index 2445a78..6bce3e4 100644 --- a/boards/e3_176_ref/app_demo/eth-xip/sf/interface_can.c +++ b/boards/e3_176_ref/app_demo/eth-xip/sf/interface_can.c @@ -1394,7 +1394,7 @@ void canInterfaceInit(void) // un_motor_output2.bit_data.set_torque = 30000; // un_motor_output2.bit_data.set_rotation_speed = 30000; // un_motor_output2.bit_data.mode = 0; -// can_fault_info.bit_data.navigator_state = 1; + can_fault_info.bit_data.navigator_state = 1; memset(&un_inf_can_kgf_output1, 0, sizeof(UnInfCanKGFOutput)); memset(&un_inf_can_kgf_output2, 0, sizeof(UnInfCanKGFOutput)); diff --git a/boards/e3_176_ref/app_demo/eth-xip/sf/interface_ethernet.c b/boards/e3_176_ref/app_demo/eth-xip/sf/interface_ethernet.c index 262a980..e0c444e 100644 --- a/boards/e3_176_ref/app_demo/eth-xip/sf/interface_ethernet.c +++ b/boards/e3_176_ref/app_demo/eth-xip/sf/interface_ethernet.c @@ -235,6 +235,13 @@ void udp_Callback_1(void *arg, struct udp_pcb *upcb, struct pbuf *p, const ip_ad { un_manual_computer_input.arr[i] = buf[i]; } + + udp_temp = ((un_manual_computer_input.bit_data.set_speed << 8) | (un_manual_computer_input.bit_data.set_speed >> 8));//趨ٶ 20240928 ޸ĸߵλ + un_manual_computer_input.bit_data.set_speed = udp_temp; + + udp_temp = ((un_manual_computer_input.bit_data.set_curvature << 8) | (un_manual_computer_input.bit_data.set_curvature >> 8));//趨 + un_manual_computer_input.bit_data.set_curvature = udp_temp; + publishMessage(&un_manual_computer_input, 1); // p->len = len; @@ -574,12 +581,26 @@ void udp_Callback_3(void *arg, struct udp_pcb *upcb, struct pbuf *p, const ip_ad static unsigned int received_size = 0; uint8_t *buf = (uint8_t *)(p->payload); + uint8_t ip_addr[4] = {0,0,0,0}; +//------------------------------------------------------------------------------------------------ + + //20250822 ӱˢдλIP + ip_addr[0] = addr->addr & 0xff; /* IADDR4 */ + ip_addr[1] = (addr->addr >> 8) & 0xff; /* IADDR3 */ + ip_addr[2] = (addr->addr >> 16) & 0xff; /* IADDR2 */ + ip_addr[3] = (addr->addr >> 24) & 0xff; /* IADDR1 */ + + // Ƿµ֡ͷ if ((0x80 == buf[1]) && (0xFF == buf[0])) { // ýչ received_size = 0; printf("⵽µ֡ͷ,ýչ\n"); + +printf("IPַ: %d.%d.%d.%d\n", ip_addr[0], ip_addr[1], ip_addr[2], ip_addr[3]); + + } // Ƿ㹻Ŀռ洢