app path
This commit is contained in:
parent
330bc6d87c
commit
4bb8c649d9
97
app.log
97
app.log
|
@ -68910,3 +68910,100 @@ Joint 5 - Position: 2.6324369751913186e-19, Velocity: -1.7044130180708233e-30 -
|
||||||
2024-11-12 09:52:07,127 - logger - INFO - Êîìàíä â î÷åðåäè ['ok'] - client_socket.py - 329
|
2024-11-12 09:52:07,127 - logger - INFO - Êîìàíä â î÷åðåäè ['ok'] - client_socket.py - 329
|
||||||
2024-11-12 09:52:07,943 - logger - INFO - Âû÷èñëåííîå ïîëîæåíèå [1275.2009630203247, -73.22012633085251, 1781.279444694519] - client_socket.py - 265
|
2024-11-12 09:52:07,943 - logger - INFO - Âû÷èñëåííîå ïîëîæåíèå [1275.2009630203247, -73.22012633085251, 1781.279444694519] - client_socket.py - 265
|
||||||
2024-11-12 09:52:07,974 - logger - INFO - Âû÷èñëåííàÿ îðèåíòàöèÿ [58.56355473 -3.29212553 65.45517366] - client_socket.py - 268
|
2024-11-12 09:52:07,974 - logger - INFO - Âû÷èñëåííàÿ îðèåíòàöèÿ [58.56355473 -3.29212553 65.45517366] - client_socket.py - 268
|
||||||
|
2024-11-12 10:25:19,330 - logger - INFO - robot_app åùå íå èíèöèàëèçèðîâàí. Ìåòîä: get_status - main.py - 100
|
||||||
|
2024-11-12 10:25:19,330 - logger - INFO - None - robot.py - 52
|
||||||
|
2024-11-12 10:25:19,331 - logger - INFO - robot_app åùå íå èíèöèàëèçèðîâàí. Ìåòîä: get_status - main.py - 100
|
||||||
|
2024-11-12 10:25:19,331 - logger - INFO - robot_app åùå íå èíèöèàëèçèðîâàí. Ìåòîä: get_status - main.py - 100
|
||||||
|
2024-11-12 10:25:19,332 - logger - INFO - robot_app åùå íå èíèöèàëèçèðîâàí. Ìåòîä: get_status - main.py - 100
|
||||||
|
2024-11-12 10:25:19,332 - logger - INFO - robot_app åùå íå èíèöèàëèçèðîâàí. Ìåòîä: get_world_coordinates - main.py - 100
|
||||||
|
2024-11-12 10:25:19,332 - logger - INFO - robot_app åùå íå èíèöèàëèçèðîâàí. Ìåòîä: get_axis_coordinates - main.py - 100
|
||||||
|
2024-11-12 10:25:19,332 - logger - INFO - robot_app åùå íå èíèöèàëèçèðîâàí. Ìåòîä: get_command_count - main.py - 100
|
||||||
|
2024-11-12 10:25:20,371 - logger - INFO - Connect to 0 by SHARED_MEMORY - client_socket.py - 130
|
||||||
|
2024-11-12 10:25:23,539 - logger - INFO - not_connected - robot.py - 52
|
||||||
|
2024-11-12 10:25:23,859 - logger - INFO - urdf\sample.urdf - client_socket.py - 136
|
||||||
|
2024-11-12 10:25:26,235 - logger - INFO - connected - robot.py - 52
|
||||||
|
2024-11-12 10:28:58,010 - logger - INFO - robot_app åùå íå èíèöèàëèçèðîâàí. Ìåòîä: get_status - main.py - 100
|
||||||
|
2024-11-12 10:28:58,010 - logger - INFO - None - robot.py - 52
|
||||||
|
2024-11-12 10:28:58,010 - logger - INFO - robot_app åùå íå èíèöèàëèçèðîâàí. Ìåòîä: get_status - main.py - 100
|
||||||
|
2024-11-12 10:28:58,010 - logger - INFO - robot_app åùå íå èíèöèàëèçèðîâàí. Ìåòîä: get_status - main.py - 100
|
||||||
|
2024-11-12 10:28:58,010 - logger - INFO - robot_app åùå íå èíèöèàëèçèðîâàí. Ìåòîä: get_status - main.py - 100
|
||||||
|
2024-11-12 10:28:58,010 - logger - INFO - robot_app åùå íå èíèöèàëèçèðîâàí. Ìåòîä: get_world_coordinates - main.py - 100
|
||||||
|
2024-11-12 10:28:58,010 - logger - INFO - robot_app åùå íå èíèöèàëèçèðîâàí. Ìåòîä: get_axis_coordinates - main.py - 100
|
||||||
|
2024-11-12 10:28:58,010 - logger - INFO - robot_app åùå íå èíèöèàëèçèðîâàí. Ìåòîä: get_command_count - main.py - 100
|
||||||
|
2024-11-12 10:28:59,056 - logger - INFO - Connect to 0 by SHARED_MEMORY - client_socket.py - 130
|
||||||
|
2024-11-12 10:46:24,338 - logger - INFO - robot_app åùå íå èíèöèàëèçèðîâàí. Ìåòîä: get_status - main.py - 100
|
||||||
|
2024-11-12 10:46:24,338 - logger - INFO - None - robot.py - 52
|
||||||
|
2024-11-12 10:46:24,339 - logger - INFO - robot_app åùå íå èíèöèàëèçèðîâàí. Ìåòîä: get_status - main.py - 100
|
||||||
|
2024-11-12 10:46:24,339 - logger - INFO - robot_app åùå íå èíèöèàëèçèðîâàí. Ìåòîä: get_status - main.py - 100
|
||||||
|
2024-11-12 10:46:24,340 - logger - INFO - robot_app åùå íå èíèöèàëèçèðîâàí. Ìåòîä: get_status - main.py - 100
|
||||||
|
2024-11-12 10:46:24,340 - logger - INFO - robot_app åùå íå èíèöèàëèçèðîâàí. Ìåòîä: get_world_coordinates - main.py - 100
|
||||||
|
2024-11-12 10:46:24,340 - logger - INFO - robot_app åùå íå èíèöèàëèçèðîâàí. Ìåòîä: get_axis_coordinates - main.py - 100
|
||||||
|
2024-11-12 10:46:24,341 - logger - INFO - robot_app åùå íå èíèöèàëèçèðîâàí. Ìåòîä: get_command_count - main.py - 100
|
||||||
|
2024-11-12 10:46:25,365 - logger - INFO - Connect to 0 by SHARED_MEMORY - client_socket.py - 130
|
||||||
|
2024-11-12 10:46:31,872 - logger - INFO - not_connected - robot.py - 52
|
||||||
|
2024-11-12 10:47:29,075 - logger - INFO - robot_app åùå íå èíèöèàëèçèðîâàí. Ìåòîä: get_status - main.py - 100
|
||||||
|
2024-11-12 10:47:29,075 - logger - INFO - None - robot.py - 52
|
||||||
|
2024-11-12 10:47:29,075 - logger - INFO - robot_app åùå íå èíèöèàëèçèðîâàí. Ìåòîä: get_status - main.py - 100
|
||||||
|
2024-11-12 10:47:29,075 - logger - INFO - robot_app åùå íå èíèöèàëèçèðîâàí. Ìåòîä: get_status - main.py - 100
|
||||||
|
2024-11-12 10:47:29,075 - logger - INFO - robot_app åùå íå èíèöèàëèçèðîâàí. Ìåòîä: get_status - main.py - 100
|
||||||
|
2024-11-12 10:47:29,075 - logger - INFO - robot_app åùå íå èíèöèàëèçèðîâàí. Ìåòîä: get_world_coordinates - main.py - 100
|
||||||
|
2024-11-12 10:47:29,075 - logger - INFO - robot_app åùå íå èíèöèàëèçèðîâàí. Ìåòîä: get_axis_coordinates - main.py - 100
|
||||||
|
2024-11-12 10:47:29,075 - logger - INFO - robot_app åùå íå èíèöèàëèçèðîâàí. Ìåòîä: get_command_count - main.py - 100
|
||||||
|
2024-11-12 10:47:30,115 - logger - INFO - Connect to 0 by SHARED_MEMORY - client_socket.py - 130
|
||||||
|
2024-11-12 10:47:34,205 - logger - INFO - not_connected - robot.py - 52
|
||||||
|
2024-11-12 10:47:34,511 - logger - INFO - urdf\sample.urdf - client_socket.py - 136
|
||||||
|
2024-11-12 10:47:36,492 - logger - INFO - connected - robot.py - 52
|
||||||
|
2024-11-12 10:47:38,335 - logger - INFO - UPDATE MODEL FUNC - client_socket.py - 236
|
||||||
|
2024-11-12 10:47:38,661 - logger - INFO - Êîîðäèíàòû îñåé [-8.487, -8.681, 33.058, 88.07, -75.01, -10.566] - client_socket.py - 329
|
||||||
|
2024-11-12 10:47:39,339 - logger - INFO - set joints - client_socket.py - 332
|
||||||
|
2024-11-12 10:47:41,398 - logger - INFO - Ìèðîâûå êîîðäèíàòû [1282.244, -75.427, 1772.476, 84.629, 34.519, 153.999] - client_socket.py - 329
|
||||||
|
2024-11-12 10:47:42,040 - logger - INFO - convrt to joint (-0.1419952311009793, -0.1449204022049179, 0.5026174195392823, 1.2216711456832312, -0.9358879087734738, -0.3884501272764479) - client_socket.py - 324
|
||||||
|
2024-11-12 10:47:42,071 - logger - INFO - set joints - client_socket.py - 332
|
||||||
|
2024-11-12 10:47:44,185 - logger - INFO - Êîìàíä â î÷åðåäè ['ok'] - client_socket.py - 329
|
||||||
|
2024-11-12 10:47:44,935 - logger - INFO - Âû÷èñëåííîå ïîëîæåíèå [1274.7745513916016, -69.17358189821243, 1776.4663696289062] - client_socket.py - 265
|
||||||
|
2024-11-12 10:47:44,966 - logger - INFO - Âû÷èñëåííàÿ îðèåíòàöèÿ [43.9707828 3.05104526 45.3844952 ] - client_socket.py - 268
|
||||||
|
2024-11-12 10:48:08,426 - logger - INFO - robot_app åùå íå èíèöèàëèçèðîâàí. Ìåòîä: get_status - main.py - 100
|
||||||
|
2024-11-12 10:48:08,426 - logger - INFO - None - robot.py - 52
|
||||||
|
2024-11-12 10:48:08,426 - logger - INFO - robot_app åùå íå èíèöèàëèçèðîâàí. Ìåòîä: get_status - main.py - 100
|
||||||
|
2024-11-12 10:48:08,427 - logger - INFO - robot_app åùå íå èíèöèàëèçèðîâàí. Ìåòîä: get_status - main.py - 100
|
||||||
|
2024-11-12 10:48:08,427 - logger - INFO - robot_app åùå íå èíèöèàëèçèðîâàí. Ìåòîä: get_status - main.py - 100
|
||||||
|
2024-11-12 10:48:08,428 - logger - INFO - robot_app åùå íå èíèöèàëèçèðîâàí. Ìåòîä: get_world_coordinates - main.py - 100
|
||||||
|
2024-11-12 10:48:08,428 - logger - INFO - robot_app åùå íå èíèöèàëèçèðîâàí. Ìåòîä: get_axis_coordinates - main.py - 100
|
||||||
|
2024-11-12 10:48:08,429 - logger - INFO - robot_app åùå íå èíèöèàëèçèðîâàí. Ìåòîä: get_command_count - main.py - 100
|
||||||
|
2024-11-12 10:48:09,453 - logger - INFO - Connect to 0 by SHARED_MEMORY - client_socket.py - 130
|
||||||
|
2024-11-12 10:48:12,705 - logger - INFO - not_connected - robot.py - 52
|
||||||
|
2024-11-12 10:48:13,013 - logger - INFO - urdf\sample.urdf - client_socket.py - 136
|
||||||
|
2024-11-12 10:48:14,985 - logger - INFO - connected - robot.py - 52
|
||||||
|
2024-11-12 10:58:01,703 - logger - INFO - robot_app åùå íå èíèöèàëèçèðîâàí. Ìåòîä: get_status - main.py - 100
|
||||||
|
2024-11-12 10:58:01,703 - logger - INFO - None - robot.py - 52
|
||||||
|
2024-11-12 10:58:01,703 - logger - INFO - robot_app åùå íå èíèöèàëèçèðîâàí. Ìåòîä: get_status - main.py - 100
|
||||||
|
2024-11-12 10:58:01,703 - logger - INFO - robot_app åùå íå èíèöèàëèçèðîâàí. Ìåòîä: get_status - main.py - 100
|
||||||
|
2024-11-12 10:58:01,704 - logger - INFO - robot_app åùå íå èíèöèàëèçèðîâàí. Ìåòîä: get_status - main.py - 100
|
||||||
|
2024-11-12 10:58:01,704 - logger - INFO - robot_app åùå íå èíèöèàëèçèðîâàí. Ìåòîä: get_world_coordinates - main.py - 100
|
||||||
|
2024-11-12 10:58:01,704 - logger - INFO - robot_app åùå íå èíèöèàëèçèðîâàí. Ìåòîä: get_axis_coordinates - main.py - 100
|
||||||
|
2024-11-12 10:58:01,705 - logger - INFO - robot_app åùå íå èíèöèàëèçèðîâàí. Ìåòîä: get_command_count - main.py - 100
|
||||||
|
2024-11-12 10:58:02,733 - logger - INFO - Connect to 0 by SHARED_MEMORY - client_socket.py - 130
|
||||||
|
2024-11-12 10:58:06,001 - logger - INFO - not_connected - robot.py - 52
|
||||||
|
2024-11-12 10:58:06,316 - logger - INFO - urdf\sample.urdf - client_socket.py - 136
|
||||||
|
2024-11-12 10:58:08,385 - logger - INFO - connected - robot.py - 52
|
||||||
|
2024-11-12 10:58:31,367 - logger - INFO - robot_app åùå íå èíèöèàëèçèðîâàí. Ìåòîä: get_status - main.py - 100
|
||||||
|
2024-11-12 10:58:31,367 - logger - INFO - None - robot.py - 52
|
||||||
|
2024-11-12 10:58:31,367 - logger - INFO - robot_app åùå íå èíèöèàëèçèðîâàí. Ìåòîä: get_status - main.py - 100
|
||||||
|
2024-11-12 10:58:31,372 - logger - INFO - robot_app åùå íå èíèöèàëèçèðîâàí. Ìåòîä: get_status - main.py - 100
|
||||||
|
2024-11-12 10:58:31,372 - logger - INFO - robot_app åùå íå èíèöèàëèçèðîâàí. Ìåòîä: get_status - main.py - 100
|
||||||
|
2024-11-12 10:58:31,373 - logger - INFO - robot_app åùå íå èíèöèàëèçèðîâàí. Ìåòîä: get_world_coordinates - main.py - 100
|
||||||
|
2024-11-12 10:58:31,373 - logger - INFO - robot_app åùå íå èíèöèàëèçèðîâàí. Ìåòîä: get_axis_coordinates - main.py - 100
|
||||||
|
2024-11-12 10:58:31,373 - logger - INFO - robot_app åùå íå èíèöèàëèçèðîâàí. Ìåòîä: get_command_count - main.py - 100
|
||||||
|
2024-11-12 10:58:32,401 - logger - INFO - Connect to 0 by SHARED_MEMORY - client_socket.py - 130
|
||||||
|
2024-11-12 11:02:57,863 - logger - INFO - robot_app åùå íå èíèöèàëèçèðîâàí. Ìåòîä: get_status - main.py - 111
|
||||||
|
2024-11-12 11:02:57,863 - logger - INFO - None - robot.py - 52
|
||||||
|
2024-11-12 11:02:57,863 - logger - INFO - robot_app åùå íå èíèöèàëèçèðîâàí. Ìåòîä: get_status - main.py - 111
|
||||||
|
2024-11-12 11:02:57,863 - logger - INFO - robot_app åùå íå èíèöèàëèçèðîâàí. Ìåòîä: get_status - main.py - 111
|
||||||
|
2024-11-12 11:02:57,863 - logger - INFO - robot_app åùå íå èíèöèàëèçèðîâàí. Ìåòîä: get_status - main.py - 111
|
||||||
|
2024-11-12 11:02:57,863 - logger - INFO - robot_app åùå íå èíèöèàëèçèðîâàí. Ìåòîä: get_world_coordinates - main.py - 111
|
||||||
|
2024-11-12 11:02:57,863 - logger - INFO - robot_app åùå íå èíèöèàëèçèðîâàí. Ìåòîä: get_axis_coordinates - main.py - 111
|
||||||
|
2024-11-12 11:02:57,863 - logger - INFO - robot_app åùå íå èíèöèàëèçèðîâàí. Ìåòîä: get_command_count - main.py - 111
|
||||||
|
2024-11-12 11:02:58,897 - logger - INFO - Connect to 0 by SHARED_MEMORY - client_socket.py - 130
|
||||||
|
2024-11-12 11:03:01,541 - logger - INFO - not_connected - robot.py - 52
|
||||||
|
2024-11-12 11:03:01,850 - logger - INFO - urdf\sample.urdf - client_socket.py - 136
|
||||||
|
2024-11-12 11:03:03,896 - logger - INFO - connected - robot.py - 52
|
||||||
|
|
15
main.py
15
main.py
|
@ -1,5 +1,6 @@
|
||||||
import json
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
import json
|
||||||
import time
|
import time
|
||||||
import argparse
|
import argparse
|
||||||
import threading
|
import threading
|
||||||
|
@ -12,7 +13,17 @@ from logger import logger
|
||||||
|
|
||||||
|
|
||||||
class MyApp:
|
class MyApp:
|
||||||
with open("./robots.json", "r") as file:
|
if getattr(sys, 'frozen', False):
|
||||||
|
# Если приложение собрано в один файл
|
||||||
|
application_path = os.path.dirname(sys.executable)
|
||||||
|
else:
|
||||||
|
# Если приложение запускается как скрипт
|
||||||
|
application_path = os.path.dirname(os.path.abspath(__file__))
|
||||||
|
|
||||||
|
# Путь к файлу robots.json
|
||||||
|
robots_json_path = os.path.join(application_path, 'robots.json')
|
||||||
|
|
||||||
|
with open(robots_json_path, "r") as file:
|
||||||
robots = json.load(file)
|
robots = json.load(file)
|
||||||
|
|
||||||
robot_app = None
|
robot_app = None
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
|
|
||||||
a = Analysis(
|
a = Analysis(
|
||||||
['main.py'],
|
['main.py'],
|
||||||
pathex=['.', 'robot/', 'gui/'],
|
pathex=['.', './.venv', './.venv/Lib', './.venv/Lib/site-packages', 'robot/', 'gui/'],
|
||||||
binaries=[],
|
binaries=[],
|
||||||
datas=[('robots.json', '.'), ('urdf', 'urdf'), ('data', 'data')],
|
datas=[('robots.json', '.'), ('urdf', 'urdf'), ('data', 'data')],
|
||||||
hiddenimports=['numpy', 'libpython3.10'],
|
hiddenimports=['numpy', 'libpython3.10'],
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
|
|
||||||
a = Analysis(
|
a = Analysis(
|
||||||
['utils/pybullet_server.py'],
|
['utils/pybullet_server.py'],
|
||||||
pathex=[],
|
pathex=['.', './.venv', './.venv/Lib', './.venv/Lib/site-packages'],
|
||||||
binaries=[],
|
binaries=[],
|
||||||
datas=[('pyproject.toml', '.'), ('robots.json', '.'), ('urdf', 'urdf'), ('data', 'data')],
|
datas=[('pyproject.toml', '.'), ('robots.json', '.'), ('urdf', 'urdf'), ('data', 'data')],
|
||||||
hiddenimports=['libpython3.10', 'numpy'],
|
hiddenimports=['libpython3.10', 'numpy'],
|
||||||
|
|
|
@ -3,6 +3,7 @@ import json
|
||||||
import os
|
import os
|
||||||
import math
|
import math
|
||||||
import numpy as np
|
import numpy as np
|
||||||
|
import sys
|
||||||
|
|
||||||
from typing import Literal
|
from typing import Literal
|
||||||
from pprint import pprint
|
from pprint import pprint
|
||||||
|
@ -130,9 +131,16 @@ class UrdfManager:
|
||||||
logger.info(f"Connect to {self.physics_client} by {type}")
|
logger.info(f"Connect to {self.physics_client} by {type}")
|
||||||
|
|
||||||
def load_models(self):
|
def load_models(self):
|
||||||
p.loadURDF("urdf/plane.urdf", physicsClientId=self.physics_client)
|
if getattr(sys, 'frozen', False):
|
||||||
|
# Если приложение собрано в один файл
|
||||||
|
application_path = os.path.dirname(sys.executable)
|
||||||
|
else:
|
||||||
|
# Если приложение запускается как скрипт
|
||||||
|
application_path = os.path.dirname(os.path.abspath(__file__))
|
||||||
|
|
||||||
|
# p.loadURDF("urdf/plane.urdf", physicsClientId=self.physics_client)
|
||||||
|
|
||||||
urdf_path = os.path.join("urdf", f"{self.urdf_filename}.urdf")
|
urdf_path = os.path.join(application_path, "urdf", f"{self.urdf_filename}.urdf")
|
||||||
logger.info(urdf_path)
|
logger.info(urdf_path)
|
||||||
self.body_id = p.loadURDF(
|
self.body_id = p.loadURDF(
|
||||||
urdf_path,
|
urdf_path,
|
||||||
|
|
81
run.py
81
run.py
|
@ -2,27 +2,39 @@ import subprocess
|
||||||
import argparse
|
import argparse
|
||||||
import sys
|
import sys
|
||||||
import signal
|
import signal
|
||||||
|
import psutil
|
||||||
|
|
||||||
# Параметры для процессов
|
# Параметры для процессов
|
||||||
server_process = None
|
server_process = None
|
||||||
test_server_process = None
|
test_server_process = None
|
||||||
|
command_type = 'exe'
|
||||||
|
|
||||||
def usage():
|
def usage():
|
||||||
"""Функция для отображения помощи"""
|
"""Функция для отображения помощи"""
|
||||||
print("Usage: run_all.py [--test]")
|
print("Usage: run_all.py [--test]")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
|
|
||||||
|
def terminate_process(process):
|
||||||
|
"""Функция для корректного завершения процесса и всех его дочерних процессов"""
|
||||||
|
if process:
|
||||||
|
proc = psutil.Process(process.pid)
|
||||||
|
for child in proc.children(recursive=True):
|
||||||
|
child.terminate()
|
||||||
|
proc.terminate()
|
||||||
|
proc.wait()
|
||||||
|
|
||||||
|
|
||||||
# Обработчик для сигналов выхода
|
# Обработчик для сигналов выхода
|
||||||
def cleanup():
|
def cleanup(*args):
|
||||||
"""Функция для остановки серверов при выходе"""
|
"""Функция для остановки серверов при выходе"""
|
||||||
|
global server_process, test_server_process
|
||||||
print("Остановка серверов...")
|
print("Остановка серверов...")
|
||||||
if server_process:
|
terminate_process(server_process)
|
||||||
server_process.terminate()
|
terminate_process(test_server_process)
|
||||||
server_process.wait()
|
|
||||||
if test_server_process:
|
|
||||||
test_server_process.terminate()
|
|
||||||
test_server_process.wait()
|
|
||||||
print("Серверы остановлены.")
|
print("Серверы остановлены.")
|
||||||
|
sys.exit(0) # Завершение работы после очистки
|
||||||
|
|
||||||
|
|
||||||
# Назначаем функции очистки для сигналов
|
# Назначаем функции очистки для сигналов
|
||||||
signal.signal(signal.SIGINT, lambda *_: cleanup())
|
signal.signal(signal.SIGINT, lambda *_: cleanup())
|
||||||
|
@ -30,14 +42,32 @@ signal.signal(signal.SIGTERM, lambda *_: cleanup())
|
||||||
|
|
||||||
# Парсер аргументов командной строки
|
# Парсер аргументов командной строки
|
||||||
parser = argparse.ArgumentParser(description="Python launcher script.")
|
parser = argparse.ArgumentParser(description="Python launcher script.")
|
||||||
parser.add_argument("--test", action="store_true", help="Запуск в режиме тестирования")
|
parser.add_argument(
|
||||||
|
"--test-socket", action="store_true", help="Запуск в режиме тестирования"
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--bullet-gui", action="store_true", help="Вывод визуального pybullet"
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--start-py", action="store_true", help="Запуск EXE или PY"
|
||||||
|
)
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
if args.start_py:
|
||||||
|
command_type = 'local'
|
||||||
|
|
||||||
|
poetry_path = "poetry"
|
||||||
|
|
||||||
# Установка команды для pybullet_server
|
# Установка команды для pybullet_server
|
||||||
pybullet_command = ["./pybullet_server.exe"] # Путь к исполняемому файлу
|
pybullet_command = [
|
||||||
|
poetry_path,
|
||||||
|
"run",
|
||||||
|
"python",
|
||||||
|
"utils/pybullet_server.py",
|
||||||
|
] if command_type == 'local' else 'pybullet_server.exe'
|
||||||
|
|
||||||
# Если включен режим тестирования, добавляем флаг --test
|
# Если включен режим тестирования, добавляем флаг --test
|
||||||
if args.test:
|
if args.bullet_gui:
|
||||||
pybullet_command.append("--test")
|
pybullet_command.append("--test")
|
||||||
|
|
||||||
# Запуск pybullet_server.exe
|
# Запуск pybullet_server.exe
|
||||||
|
@ -50,9 +80,16 @@ if server_process.poll() is not None:
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
# Если включен режим тестирования, запускаем test_socket_server.exe
|
# Если включен режим тестирования, запускаем test_socket_server.exe
|
||||||
if args.test:
|
if args.test_socket:
|
||||||
print("Запуск test_socket_server...")
|
print("Запуск test_socket_server...")
|
||||||
test_server_process = subprocess.Popen(["./test_socket_server.exe"]) # Путь к исполняемому файлу
|
test_server_process = subprocess.Popen(
|
||||||
|
[
|
||||||
|
poetry_path,
|
||||||
|
"run",
|
||||||
|
"python",
|
||||||
|
"utils/test_socket_server.py",
|
||||||
|
] if command_type == 'local' else 'test_socket_server.exe'
|
||||||
|
) # Путь к исполняемому файлу
|
||||||
|
|
||||||
# Проверка успешного запуска тестового сервера
|
# Проверка успешного запуска тестового сервера
|
||||||
if test_server_process.poll() is not None:
|
if test_server_process.poll() is not None:
|
||||||
|
@ -60,10 +97,26 @@ if args.test:
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
# Запуск основного скрипта main.exe в режиме тестирования
|
# Запуск основного скрипта main.exe в режиме тестирования
|
||||||
subprocess.run(["./main.exe", "--mode", "test"]) # Путь к исполняемому файлу
|
subprocess.run(
|
||||||
|
[
|
||||||
|
poetry_path,
|
||||||
|
"run",
|
||||||
|
"python",
|
||||||
|
"main.py",
|
||||||
|
"--mode",
|
||||||
|
"test",
|
||||||
|
] if command_type == 'local' else 'main.exe --mode test'
|
||||||
|
) # Путь к исполняемому файлу
|
||||||
else:
|
else:
|
||||||
# Запуск основного скрипта main.exe
|
# Запуск основного скрипта main.exe
|
||||||
subprocess.run(["./main.exe"]) # Путь к исполняемому файлу
|
subprocess.run(
|
||||||
|
[
|
||||||
|
poetry_path,
|
||||||
|
"run",
|
||||||
|
"python",
|
||||||
|
"main.py",
|
||||||
|
] if command_type == 'local' else 'main.exe'
|
||||||
|
) # Путь к исполняемому файлу
|
||||||
|
|
||||||
# Очистка после завершения
|
# Очистка после завершения
|
||||||
cleanup()
|
cleanup()
|
||||||
|
|
2
run.spec
2
run.spec
|
@ -3,7 +3,7 @@
|
||||||
|
|
||||||
a = Analysis(
|
a = Analysis(
|
||||||
['run.py'],
|
['run.py'],
|
||||||
pathex=[],
|
pathex=['.', './.venv', './.venv/Lib', './.venv/Lib/site-packages'],
|
||||||
binaries=[],
|
binaries=[],
|
||||||
datas=[('pyproject.toml', '.'), ('robots.json', '.'), ('urdf', 'urdf'), ('data', 'data')],
|
datas=[('pyproject.toml', '.'), ('robots.json', '.'), ('urdf', 'urdf'), ('data', 'data')],
|
||||||
hiddenimports=['libpython3.10'],
|
hiddenimports=['libpython3.10'],
|
||||||
|
|
116
run_local.py
116
run_local.py
|
@ -1,116 +0,0 @@
|
||||||
import subprocess
|
|
||||||
import argparse
|
|
||||||
import sys
|
|
||||||
import signal
|
|
||||||
import psutil
|
|
||||||
|
|
||||||
# Параметры для процессов
|
|
||||||
server_process = None
|
|
||||||
test_server_process = None
|
|
||||||
|
|
||||||
|
|
||||||
def usage():
|
|
||||||
"""Функция для отображения помощи"""
|
|
||||||
print("Usage: run_all.py [--test]")
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
|
|
||||||
def terminate_process(process):
|
|
||||||
"""Функция для корректного завершения процесса и всех его дочерних процессов"""
|
|
||||||
if process:
|
|
||||||
proc = psutil.Process(process.pid)
|
|
||||||
for child in proc.children(recursive=True):
|
|
||||||
child.terminate()
|
|
||||||
proc.terminate()
|
|
||||||
proc.wait()
|
|
||||||
|
|
||||||
|
|
||||||
# Обработчик для сигналов выхода
|
|
||||||
def cleanup(*args):
|
|
||||||
"""Функция для остановки серверов при выходе"""
|
|
||||||
global server_process, test_server_process
|
|
||||||
print("Остановка серверов...")
|
|
||||||
terminate_process(server_process)
|
|
||||||
terminate_process(test_server_process)
|
|
||||||
print("Серверы остановлены.")
|
|
||||||
sys.exit(0) # Завершение работы после очистки
|
|
||||||
|
|
||||||
|
|
||||||
# Назначаем функции очистки для сигналов
|
|
||||||
signal.signal(signal.SIGINT, lambda *_: cleanup())
|
|
||||||
signal.signal(signal.SIGTERM, lambda *_: cleanup())
|
|
||||||
|
|
||||||
# Парсер аргументов командной строки
|
|
||||||
parser = argparse.ArgumentParser(description="Python launcher script.")
|
|
||||||
parser.add_argument(
|
|
||||||
"--test-socket", action="store_true", help="Запуск в режиме тестирования"
|
|
||||||
)
|
|
||||||
parser.add_argument(
|
|
||||||
"--bullet-gui", action="store_true", help="Вывод визуального pybullet"
|
|
||||||
)
|
|
||||||
args = parser.parse_args()
|
|
||||||
|
|
||||||
poetry_path = "poetry"
|
|
||||||
|
|
||||||
# Установка команды для pybullet_server
|
|
||||||
pybullet_command = [
|
|
||||||
poetry_path,
|
|
||||||
"run",
|
|
||||||
"python",
|
|
||||||
"utils/pybullet_server.py",
|
|
||||||
] # Путь к исполняемому файлу
|
|
||||||
|
|
||||||
# Если включен режим тестирования, добавляем флаг --test
|
|
||||||
if args.bullet_gui:
|
|
||||||
pybullet_command.append("--test")
|
|
||||||
|
|
||||||
# Запуск pybullet_server.exe
|
|
||||||
print("Запуск pybullet_server...")
|
|
||||||
server_process = subprocess.Popen(pybullet_command)
|
|
||||||
|
|
||||||
# Проверяем успешный запуск сервера
|
|
||||||
if server_process.poll() is not None:
|
|
||||||
print("Ошибка при запуске pybullet_server")
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
# Если включен режим тестирования, запускаем test_socket_server.exe
|
|
||||||
if args.test_socket:
|
|
||||||
print("Запуск test_socket_server...")
|
|
||||||
test_server_process = subprocess.Popen(
|
|
||||||
[
|
|
||||||
poetry_path,
|
|
||||||
"run",
|
|
||||||
"python",
|
|
||||||
"utils/test_socket_server.py",
|
|
||||||
]
|
|
||||||
) # Путь к исполняемому файлу
|
|
||||||
|
|
||||||
# Проверка успешного запуска тестового сервера
|
|
||||||
if test_server_process.poll() is not None:
|
|
||||||
print("Ошибка при запуске test_socket_server")
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
# Запуск основного скрипта main.exe в режиме тестирования
|
|
||||||
subprocess.run(
|
|
||||||
[
|
|
||||||
poetry_path,
|
|
||||||
"run",
|
|
||||||
"python",
|
|
||||||
"main.py",
|
|
||||||
"--mode",
|
|
||||||
"test",
|
|
||||||
]
|
|
||||||
) # Путь к исполняемому файлу
|
|
||||||
else:
|
|
||||||
# Запуск основного скрипта main.exe
|
|
||||||
subprocess.run(
|
|
||||||
[
|
|
||||||
poetry_path,
|
|
||||||
"run",
|
|
||||||
"python",
|
|
||||||
"main.py",
|
|
||||||
]
|
|
||||||
) # Путь к исполняемому файлу
|
|
||||||
|
|
||||||
# Очистка после завершения
|
|
||||||
cleanup()
|
|
|
@ -3,7 +3,7 @@
|
||||||
|
|
||||||
a = Analysis(
|
a = Analysis(
|
||||||
['utils/test_socket_server.py'],
|
['utils/test_socket_server.py'],
|
||||||
pathex=[],
|
pathex=['.', './.venv', './.venv/Lib', './.venv/Lib/site-packages'],
|
||||||
binaries=[],
|
binaries=[],
|
||||||
datas=[('pyproject.toml', '.'), ('robots.json', '.'), ('urdf', 'urdf'), ('data', 'data')],
|
datas=[('pyproject.toml', '.'), ('robots.json', '.'), ('urdf', 'urdf'), ('data', 'data')],
|
||||||
hiddenimports=['libpython3.10'],
|
hiddenimports=['libpython3.10'],
|
||||||
|
|
Loading…
Reference in New Issue