From ff14d338b1f1874331b41c4981343c693fad3beb Mon Sep 17 00:00:00 2001 From: Lizongdi <1210855344@qq.com> Date: Thu, 4 Jun 2026 14:36:10 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=82=E6=95=B0=E5=BA=8F=E5=88=97=E6=A0=BC?= =?UTF-8?q?=E5=BC=8F=E4=BF=AE=E6=94=B9=EF=BC=8C=E5=8E=BB=E9=99=A4=E5=A4=9A?= =?UTF-8?q?=E4=BD=99=E5=8F=82=E6=95=B0=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- kelaifen/Kelaifen_V6.0/Example_0_5.py | 12 +- kelaifen/Kelaifen_V6.0/config.json | 330 +++++++------------ kelaifen/Kelaifen_V6.0/serial_handler.py | 6 + kelaifen/Kelaifen_V6.0/trajectory_program.py | 10 +- 4 files changed, 139 insertions(+), 219 deletions(-) diff --git a/kelaifen/Kelaifen_V6.0/Example_0_5.py b/kelaifen/Kelaifen_V6.0/Example_0_5.py index 8fb1a54..fdc5b03 100644 --- a/kelaifen/Kelaifen_V6.0/Example_0_5.py +++ b/kelaifen/Kelaifen_V6.0/Example_0_5.py @@ -209,6 +209,10 @@ if __name__ == "__main__": delay = program_delay_map.get(current_program, 0.0) if delay <= 0: delay = 0 + current_program1 = sequence_1[current_index + 1] + delay1 = program_delay_map.get(current_program1, 0.0) + if delay1 <= 0: + delay1 = 0 stop_cmd_bytes = read_cmd_from_shared(timeout=0.1) if stop_cmd_bytes is not None and stop_cmd_bytes == b'\xAA\x30': print("收到0xAA 0x30,停止循环") @@ -219,7 +223,7 @@ if __name__ == "__main__": running = False time.sleep(0.5) else: - running = program_switch[current_program](sock, ser, turn_on_relay_start, turn_off_relay_start, ex_turn_on_relay_start, ex_turn_off_relay_start, delay) + running = program_switch[current_program](sock, ser, turn_on_relay_start, turn_off_relay_start, ex_turn_on_relay_start, ex_turn_off_relay_start, delay, delay1) # 回到洗枪位置指令 elif sub_cmd1 == 0x0a: print(f"接收到指令0xAA 0x{sub_cmd1:02X},切换执行对应程序") @@ -271,6 +275,10 @@ if __name__ == "__main__": delay = program_delay_map.get(current_program, 0.0) if delay <= 0: delay = 0 + current_program1 = sequence_3[current_index + 1] + delay1 = program_delay_map.get(current_program1, 0.0) + if delay1 <= 0: + delay1 = 0 stop_cmd_bytes = read_cmd_from_shared(timeout=0.1) if stop_cmd_bytes is not None and stop_cmd_bytes == b'\xAA\x30': print("收到0xAA 0x30,停止循环") @@ -281,7 +289,7 @@ if __name__ == "__main__": running = False time.sleep(0.5) else: - running = program_switch[current_program](sock, ser, turn_on_relay_start, turn_off_relay_start, ex_turn_on_relay_start, ex_turn_off_relay_start, delay) + running = program_switch[current_program](sock, ser, turn_on_relay_start, turn_off_relay_start, ex_turn_on_relay_start, ex_turn_off_relay_start, delay, delay1) #回到洗枪位置指令 elif sub_cmd1 == 0x0a: print(f"接收到指令0xAA 0x{sub_cmd1:02X},切换执行对应程序") diff --git a/kelaifen/Kelaifen_V6.0/config.json b/kelaifen/Kelaifen_V6.0/config.json index d46facf..3f153a2 100644 --- a/kelaifen/Kelaifen_V6.0/config.json +++ b/kelaifen/Kelaifen_V6.0/config.json @@ -2,314 +2,218 @@ "PRESET_PARAMS": [ { "params": [ - 50, + 80, 0 ], "program_delay_map": { - "1": 1.0, - "100": 0.1, "2": 0, - "3": 1.0, - "300": 0.1, - "4": 0.1, - "5": 1.0, - "500": 0.1, + "300": 0, "6": 0, - "7": 1.0, - "700": 0.1, - "8": 0 + "700": 0 }, "relay_config": { - "turn_on_relay_start": 40, - "turn_off_relay_start": 114, - "ex_turn_on_relay_start": 40, - "ex_turn_off_relay_start": 114 + "turn_on_relay_start": 10, + "turn_off_relay_start": 144, + "ex_turn_on_relay_start": 10, + "ex_turn_off_relay_start": 144 } }, { "params": [ - 30, - -150 + 80, + 0 ], "program_delay_map": { - "1": 1.0, - "100": 0.1, - "2": 0.1, - "3": 1.0, - "300": 0.1, - "4": 0.1, - "5": 1.0, - "500": 0.1, - "6": 10, - "7": 1.0, - "700": 0.1, - "8": 0.2 + "2": 0, + "300": 0, + "6": 0, + "700": 0 }, "relay_config": { - "turn_on_relay_start": 0, - "turn_off_relay_start": 134, - "ex_turn_on_relay_start": 0, - "ex_turn_off_relay_start": 134 + "turn_on_relay_start": 10, + "turn_off_relay_start": 144, + "ex_turn_on_relay_start": 10, + "ex_turn_off_relay_start": 144 } }, { "params": [ - 30, - -150 + 80, + 0 ], "program_delay_map": { - "1": 1.0, - "100": 0.1, - "2": 0.1, - "3": 1.0, - "300": 0.1, - "4": 0.1, - "5": 1.0, - "500": 0.1, - "6": 10, - "7": 1.0, - "700": 0.1, - "8": 0.2 + "2": 0, + "300": 0, + "6": 0, + "700": 0 }, "relay_config": { - "turn_on_relay_start": 0, - "turn_off_relay_start": 134, - "ex_turn_on_relay_start": 0, - "ex_turn_off_relay_start": 134 + "turn_on_relay_start": 10, + "turn_off_relay_start": 144, + "ex_turn_on_relay_start": 10, + "ex_turn_off_relay_start": 144 } }, { "params": [ - 30, - -150 + 80, + 0 ], "program_delay_map": { - "1": 1.0, - "100": 0.1, - "2": 0.1, - "3": 1.0, - "300": 0.1, - "4": 0.1, - "5": 1.0, - "500": 0.1, - "6": 10, - "7": 1.0, - "700": 0.1, - "8": 0.2 + "2": 0, + "300": 0, + "6": 0, + "700": 0 }, "relay_config": { - "turn_on_relay_start": 0, - "turn_off_relay_start": 134, - "ex_turn_on_relay_start": 0, - "ex_turn_off_relay_start": 134 + "turn_on_relay_start": 10, + "turn_off_relay_start": 144, + "ex_turn_on_relay_start": 10, + "ex_turn_off_relay_start": 144 } }, { "params": [ - 30, - -150 + 80, + 0 ], "program_delay_map": { - "1": 1.0, - "100": 0.1, - "2": 0.1, - "3": 1.0, - "300": 0.1, - "4": 0.1, - "5": 1.0, - "500": 0.1, - "6": 10, - "7": 1.0, - "700": 0.1, - "8": 0.2 + "2": 0, + "300": 0, + "6": 0, + "700": 0 }, "relay_config": { - "turn_on_relay_start": 0, - "turn_off_relay_start": 134, - "ex_turn_on_relay_start": 0, - "ex_turn_off_relay_start": 134 + "turn_on_relay_start": 10, + "turn_off_relay_start": 144, + "ex_turn_on_relay_start": 10, + "ex_turn_off_relay_start": 144 } }, { "params": [ - 30, - -150 + 80, + 0 ], "program_delay_map": { - "1": 1.0, - "100": 0.1, - "2": 0.1, - "3": 1.0, - "300": 0.1, - "4": 0.1, - "5": 1.0, - "500": 0.1, - "6": 10, - "7": 1.0, - "700": 0.1, - "8": 0.2 + "2": 0, + "300": 0, + "6": 0, + "700": 0 }, "relay_config": { - "turn_on_relay_start": 0, - "turn_off_relay_start": 134, - "ex_turn_on_relay_start": 0, - "ex_turn_off_relay_start": 134 + "turn_on_relay_start": 10, + "turn_off_relay_start": 144, + "ex_turn_on_relay_start": 10, + "ex_turn_off_relay_start": 144 } }, { "params": [ - 30, - -150 + 80, + 0 ], "program_delay_map": { - "1": 1.0, - "100": 0.1, - "2": 0.1, - "3": 1.0, - "300": 0.1, - "4": 0.1, - "5": 1.0, - "500": 0.1, - "6": 10, - "7": 1.0, - "700": 0.1, - "8": 0.2 + "2": 0, + "300": 0, + "6": 0, + "700": 0 }, "relay_config": { - "turn_on_relay_start": 0, - "turn_off_relay_start": 134, - "ex_turn_on_relay_start": 0, - "ex_turn_off_relay_start": 134 + "turn_on_relay_start": 10, + "turn_off_relay_start": 144, + "ex_turn_on_relay_start": 10, + "ex_turn_off_relay_start": 144 } }, { "params": [ - 30, - -150 + 80, + 0 ], "program_delay_map": { - "1": 1.0, - "100": 0.1, - "2": 0.1, - "3": 1.0, - "300": 0.1, - "4": 0.1, - "5": 1.0, - "500": 0.1, - "6": 10, - "7": 1.0, - "700": 0.1, - "8": 0.2 + "2": 0, + "300": 0, + "6": 0, + "700": 0 }, "relay_config": { - "turn_on_relay_start": 0, - "turn_off_relay_start": 134, - "ex_turn_on_relay_start": 0, - "ex_turn_off_relay_start": 134 + "turn_on_relay_start": 10, + "turn_off_relay_start": 144, + "ex_turn_on_relay_start": 10, + "ex_turn_off_relay_start": 144 } }, { "params": [ - 30, - -150 + 80, + 0 ], "program_delay_map": { - "1": 1.0, - "100": 0.1, - "2": 0.1, - "3": 1.0, - "300": 0.1, - "4": 0.1, - "5": 1.0, - "500": 0.1, - "6": 10, - "7": 1.0, - "700": 0.1, - "8": 0.2 + "2": 0, + "300": 0, + "6": 0, + "700": 0 }, "relay_config": { - "turn_on_relay_start": 0, - "turn_off_relay_start": 134, - "ex_turn_on_relay_start": 0, - "ex_turn_off_relay_start": 134 + "turn_on_relay_start": 10, + "turn_off_relay_start": 144, + "ex_turn_on_relay_start": 10, + "ex_turn_off_relay_start": 144 } }, { "params": [ - 30, - -150 + 80, + 0 ], "program_delay_map": { - "1": 1.0, - "100": 0.1, - "2": 0.1, - "3": 1.0, - "300": 0.1, - "4": 0.1, - "5": 1.0, - "500": 0.1, - "6": 10, - "7": 1.0, - "700": 0.1, - "8": 0.2 + "2": 0, + "300": 0, + "6": 0, + "700": 0 }, "relay_config": { - "turn_on_relay_start": 0, - "turn_off_relay_start": 134, - "ex_turn_on_relay_start": 0, - "ex_turn_off_relay_start": 134 + "turn_on_relay_start": 10, + "turn_off_relay_start": 144, + "ex_turn_on_relay_start": 10, + "ex_turn_off_relay_start": 144 } }, { "params": [ - 30, - -150 + 80, + 0 ], "program_delay_map": { - "1": 1.0, - "100": 0.1, - "2": 0.1, - "3": 1.0, - "300": 0.1, - "4": 0.1, - "5": 1.0, - "500": 0.1, - "6": 10, - "7": 1.0, - "700": 0.1, - "8": 0.2 + "2": 0, + "300": 0, + "6": 0, + "700": 0 }, "relay_config": { - "turn_on_relay_start": 0, - "turn_off_relay_start": 134, - "ex_turn_on_relay_start": 0, - "ex_turn_off_relay_start": 134 + "turn_on_relay_start": 10, + "turn_off_relay_start": 144, + "ex_turn_on_relay_start": 10, + "ex_turn_off_relay_start": 144 } }, { "params": [ - 30, - -150 + 80, + 0 ], "program_delay_map": { - "1": 1.0, - "100": 0.1, - "2": 0.1, - "3": 1.0, - "300": 0.1, - "4": 0.1, - "5": 1.0, - "500": 0.1, - "6": 10, - "7": 1.0, - "700": 0.1, - "8": 0.2 + "2": 0, + "300": 0, + "6": 0, + "700": 0 }, "relay_config": { - "turn_on_relay_start": 0, - "turn_off_relay_start": 134, - "ex_turn_on_relay_start": 0, - "ex_turn_off_relay_start": 134 + "turn_on_relay_start": 10, + "turn_off_relay_start": 144, + "ex_turn_on_relay_start": 10, + "ex_turn_off_relay_start": 144 } } ] diff --git a/kelaifen/Kelaifen_V6.0/serial_handler.py b/kelaifen/Kelaifen_V6.0/serial_handler.py index a3114bc..1929532 100644 --- a/kelaifen/Kelaifen_V6.0/serial_handler.py +++ b/kelaifen/Kelaifen_V6.0/serial_handler.py @@ -125,6 +125,12 @@ def handle_special_commands(PRESET_PARAMS): selected_preset = PRESET_PARAMS[config_select - 1] # 提取params并更新全局变量 speed_val, angle_val = selected_preset["params"] + if speed_val < 50: + speed_val = 50 + if speed_val > 150: + speed_val = 150 + if angle_val > 200: + angle_val = 200 speed_adjustment = speed_val Trajectory_angle = angle_val # 提取当前配置项对应的delay和relay配置(赋值给返回变量) diff --git a/kelaifen/Kelaifen_V6.0/trajectory_program.py b/kelaifen/Kelaifen_V6.0/trajectory_program.py index 7e1d715..e4d8233 100644 --- a/kelaifen/Kelaifen_V6.0/trajectory_program.py +++ b/kelaifen/Kelaifen_V6.0/trajectory_program.py @@ -980,7 +980,7 @@ def program12(sock): print("第十二段程序执行完") -def program100(sock, ser, turn_on_relay_start, turn_off_relay_start, ex_turn_on_relay_start, ex_turn_off_relay_start, delay): +def program100(sock, ser, turn_on_relay_start, turn_off_relay_start, ex_turn_on_relay_start, ex_turn_off_relay_start, delay, delay1): global sample_time, lookahead_time lookahead_time = 400 # 前瞻时间 (ms) @@ -1024,12 +1024,13 @@ def program100(sock, ser, turn_on_relay_start, turn_off_relay_start, ex_turn_on_ #0.延时操作,点位延时 #1.添加点位延时 NUM = int(delay * 1000 / sample_time) + NUM1 = int(delay1 * 1000 / sample_time) # 2.第一道喷涂延时点位 last_point_3_4 = Pose_3_4_M[-1].copy() # 先复制最后一个点位 Pose_3_4_Stop = [last_point_3_4.copy() for _ in range(NUM)] # 每个点位独立副本 # 3.第2道喷涂延时点位 last_point_4_3 = Pose_4_3_M[-1].copy() - Pose_4_3_Stop = [last_point_4_3.copy() for _ in range(NUM)] + Pose_4_3_Stop = [last_point_4_3.copy() for _ in range(NUM1)] trajectories = [Pose_3_M, Pose_3_4_M,Pose_3_4_Stop, Pose_4_M, Pose_4_3_M,Pose_4_3_Stop] # ----- 一次性清理和初始化透传服务 ----- @@ -1109,7 +1110,7 @@ def program100(sock, ser, turn_on_relay_start, turn_off_relay_start, ex_turn_on_ return False -def program101(sock, ser, turn_on_relay_start, turn_off_relay_start, ex_turn_on_relay_start, ex_turn_off_relay_start, delay): +def program101(sock, ser, turn_on_relay_start, turn_off_relay_start, ex_turn_on_relay_start, ex_turn_off_relay_start, delay, delay1): global sample_time, lookahead_time lookahead_time = 400 # 前瞻时间 (ms) @@ -1155,12 +1156,13 @@ def program101(sock, ser, turn_on_relay_start, turn_off_relay_start, ex_turn_on_ #0.延时操作,点位延时 #1.添加点位延时 NUM = int(delay * 1000 / sample_time) + NUM1 = int(delay1 * 1000 / sample_time) # 2.第一道喷涂延时点位 last_point_3_4 = Pose_3_4_M[-1].copy() # 先复制最后一个点位 Pose_3_4_Stop = [last_point_3_4.copy() for _ in range(NUM)] # 每个点位独立副本 # 3.第2道喷涂延时点位 last_point_4_3 = Pose_4_3_M[-1].copy() - Pose_4_3_Stop = [last_point_4_3.copy() for _ in range(NUM)] + Pose_4_3_Stop = [last_point_4_3.copy() for _ in range(NUM1)] trajectories = [Pose_3_M, Pose_3_4_M,Pose_3_4_Stop, Pose_4_M, Pose_4_3_M,Pose_4_3_Stop] # ----- 一次性清理和初始化透传服务 -----