| | |
| | | # Byte-compiled / optimized / DLL files |
| | | __pycache__/ |
| | | *.py[cod] |
| | | *$py.class |
| | | # cache |
| | | **/__pycache__/ |
| | | |
| | | # C extensions |
| | | *.so |
| | | |
| | | # Distribution / packaging |
| | | .Python |
| | | build/ |
| | | develop-eggs/ |
| | | dist/ |
| | | downloads/ |
| | | eggs/ |
| | | .eggs/ |
| | | lib/ |
| | | lib64/ |
| | | parts/ |
| | | sdist/ |
| | | var/ |
| | | wheels/ |
| | | share/python-wheels/ |
| | | *.egg-info/ |
| | | .installed.cfg |
| | | *.egg |
| | | MANIFEST |
| | | |
| | | # PyInstaller |
| | | # Usually these files are written by a python script from a template |
| | | # before PyInstaller builds the exe, so as to inject date/other infos into it. |
| | | *.manifest |
| | | *.spec |
| | | |
| | | # Installer logs |
| | | pip-log.txt |
| | | pip-delete-this-directory.txt |
| | | |
| | | # Unit test / coverage reports |
| | | htmlcov/ |
| | | .tox/ |
| | | .nox/ |
| | | .coverage |
| | | .coverage.* |
| | | .cache |
| | | nosetests.xml |
| | | coverage.xml |
| | | *.cover |
| | | *.py,cover |
| | | .hypothesis/ |
| | | .pytest_cache/ |
| | | cover/ |
| | | |
| | | # Translations |
| | | *.mo |
| | | *.pot |
| | | |
| | | # Django stuff: |
| | | *.log |
| | | local_settings.py |
| | | db.sqlite3 |
| | | db.sqlite3-journal |
| | | |
| | | # Flask stuff: |
| | | instance/ |
| | | .webassets-cache |
| | | |
| | | # Scrapy stuff: |
| | | .scrapy |
| | | |
| | | # Sphinx documentation |
| | | docs/_build/ |
| | | |
| | | # PyBuilder |
| | | .pybuilder/ |
| | | target/ |
| | | |
| | | # Jupyter Notebook |
| | | .ipynb_checkpoints |
| | | |
| | | # IPython |
| | | profile_default/ |
| | | ipython_config.py |
| | | |
| | | # pyenv |
| | | # For a library or package, you might want to ignore these files since the code is |
| | | # intended to run in multiple environments; otherwise, check them in: |
| | | # .python-version |
| | | |
| | | # pipenv |
| | | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. |
| | | # However, in case of collaboration, if having platform-specific dependencies or dependencies |
| | | # having no cross-platform support, pipenv may install dependencies that don't work, or not |
| | | # install all needed dependencies. |
| | | #Pipfile.lock |
| | | |
| | | # PEP 582; used by e.g. github.com/David-OConnor/pyflow |
| | | __pypackages__/ |
| | | |
| | | # Celery stuff |
| | | celerybeat-schedule |
| | | celerybeat.pid |
| | | |
| | | # SageMath parsed files |
| | | *.sage.py |
| | | |
| | | # # Environments |
| | | # .env |
| | | # .venv |
| | | # venv/ |
| | | # ENV/ |
| | | # env.bak/ |
| | | # venv.bak/ |
| | | |
| | | # Spyder project settings |
| | | .spyderproject |
| | | .spyproject |
| | | |
| | | # Rope project settings |
| | | .ropeproject |
| | | |
| | | # mkdocs documentation |
| | | /site |
| | | |
| | | # mypy |
| | | .mypy_cache/ |
| | | .dmypy.json |
| | | dmypy.json |
| | | |
| | | # Pyre type checker |
| | | .pyre/ |
| | | |
| | | # pytype static type analyzer |
| | | .pytype/ |
| | | |
| | | # Cython debug symbols |
| | | cython_debug/ |
| | | /*.udp |
| | | |
| | | .vs |
| | | # proto |
| | | src/protos/aerial_pb2.py |
| | | src/microwave/demo/*Data/ |
| | | |
| | | # env |
| | | env/aerial_deploy |
| | | env/*.gz |
| | | |
| | | # demodata |
| | | src/microwave/demo/saveUdPData/ |
| | | |
| | | # data & image & microwave |
| | | Data |
| | | Images |
| | | Microwaves |
| | | Manual_Microwave* |
| | | |
| | | # log |
| | | *.log |
| | | |
| | |
| | | "version": "0.2.0", |
| | | "configurations": [ |
| | | { |
| | | "name": "udp server test", |
| | | "name": "Client_local", |
| | | "type": "python", |
| | | "request": "launch", |
| | | "program": "src/udp_test/udp.py", |
| | | "program": "${workspaceFolder}/src/Client.py", |
| | | "args": [ |
| | | "localhost", |
| | | "chai", |
| | | "password123", |
| | | "aerial_rpc", |
| | | "pod1", |
| | | "http://localhost/api", |
| | | "localhost" |
| | | ], |
| | | "console": "integratedTerminal" |
| | | }, |
| | | { |
| | | "name": "Python: 当前文件", |
| | | "name": "Client_production", |
| | | "type": "python", |
| | | "request": "launch", |
| | | "program": "${file}", |
| | | "program": "${workspaceFolder}/src/Client.py", |
| | | "args": [ |
| | | "172.17.17.206", |
| | | "chai", |
| | | "password123", |
| | | "aerial_rpc", |
| | | "pod1", |
| | | "http://172.17.17.206/api", |
| | | "192.168.2.65" |
| | | ], |
| | | "console": "integratedTerminal" |
| | | }, |
| | | { |
| | | "name": "Python: Flask-Server", |
| | | "name": "Server_local", |
| | | "type": "python", |
| | | "request": "launch", |
| | | "program": "${workspaceFolder}/src/Server/Server.py", |
| | | "console": "integratedTerminal", |
| | | "cwd": "${workspaceFolder}/src/Server" |
| | | "program": "${workspaceFolder}/src/Server.py", |
| | | "args": [ |
| | | "localhost", |
| | | "chai", |
| | | "password123", |
| | | "aerial_rpc", |
| | | "5000", |
| | | "./Images" |
| | | ], |
| | | "console": "integratedTerminal" |
| | | }, |
| | | { |
| | | "name": "Python: parser", |
| | | "name": "Server_production", |
| | | "type": "python", |
| | | "request": "launch", |
| | | "program": "${workspaceFolder}/src/Client/ParserTest.py", |
| | | "console": "integratedTerminal", |
| | | "cwd": "${workspaceFolder}/src/Client" |
| | | "program": "${workspaceFolder}/src/Server.py", |
| | | "args": [ |
| | | "172.17.17.206", |
| | | "chai", |
| | | "password123", |
| | | "aerial_rpc", |
| | | "5000", |
| | | "./Images" |
| | | ], |
| | | "console": "integratedTerminal" |
| | | }, |
| | | { |
| | | "name": "udp2bin", |
| | | "type": "python", |
| | | "request": "launch", |
| | | "program": "${workspaceFolder}/src/utils/udp2bin.py", |
| | | "args": [ |
| | | "./Manual_Microwave/pod1-2022-02-21-15-34-45/" |
| | | ], |
| | | "console": "integratedTerminal" |
| | | }, |
| | | { |
| | | "name": "bin2ply", |
| | | "type": "python", |
| | | "request": "launch", |
| | | "program": "${workspaceFolder}/src/utils/bin2ply.py", |
| | | "args": [ |
| | | "./Manual_Microwave/pod1-2022-02-21-15-34-45/" |
| | | ], |
| | | "console": "integratedTerminal" |
| | | } |
| | | ] |
| | | } |
| | |
| | | "--proto_path=${workspaceRoot}/proto", |
| | | "--python_out=${workspaceRoot}/src/protos" |
| | | ] |
| | | }, |
| | | "python":{ |
| | | }, |
| | | "jupyter.kernels.filter": [ |
| | | { |
| | | "type": "jupyterKernelspec", |
| | | "path": "${workspaceFolder}/env/aerial_deploy/python.exe" |
| | | } |
| | | ] |
| | | } |
| New file |
| | |
| | | @echo off |
| | | |
| | | @REM change to the filepath |
| | | cd %~dp0 |
| | | echo change to path: %cd% |
| | | |
| | | set aerialpython=%cd%/env/aerial_deploy/python.exe |
| | | set envsetting=%cd%/env/SettingEnv.bat |
| | | |
| | | @REM Setting the env |
| | | if not exist %aerialpython% ( |
| | | call %envsetting% |
| | | ) |
| | | |
| | | set BINfolder=./Manual_Microwave_test/pod1-2022-02-21-15-34-45/ |
| | | |
| | | @REM ---------------Usage: bin2ply.py [BINfolder] |
| | | %aerialpython% ./src/utils/bin2ply.py %BINfolder% |
| | | pause |
| New file |
| | |
| | | @echo off |
| | | |
| | | @REM change to the filepath |
| | | cd %~dp0 |
| | | echo change to path: %cd% |
| | | |
| | | set aerialpython=%cd%/env/aerial_deploy/python.exe |
| | | set envsetting=%cd%/env/SettingEnv.bat |
| | | |
| | | @REM Setting the env |
| | | if not exist %aerialpython% ( |
| | | call %envsetting% |
| | | ) |
| | | |
| | | set PLYfile=./Manual_Microwave_test/pod1-2022-02-21-15-34-45/2522.ply |
| | | @REM -------------- Usage: plot_ply.py [PLYfile]" |
| | | %aerialpython% ./src/utils/plot_ply.py %PLYfile% |
| | | pause |
| New file |
| | |
| | | @echo off |
| | | |
| | | @REM change to the filepath |
| | | cd %~dp0 |
| | | echo change to path: %cd% |
| | | |
| | | set aerialpython=%cd%/env/aerial_deploy/python.exe |
| | | set envsetting=%cd%/env/SettingEnv.bat |
| | | |
| | | @REM Setting the env |
| | | if not exist %aerialpython% ( |
| | | call %envsetting% |
| | | ) |
| | | |
| | | set MQhost=localhost |
| | | set MQuser=chai |
| | | set MQpassword=password123 |
| | | set QUEUEname=aerial_rpc |
| | | set DEVICEname=pod1 |
| | | set SERVERhost=http://localhost/api |
| | | set MICROWAVEhost=localhost |
| | | set LOGfile=ClientTEST.log |
| | | |
| | | @REM Launch the Client |
| | | echo the log file will be saved in the [%LOGfile%] file |
| | | echo Client.py is running ... |
| | | @REM -------- Usage: Client.py [MQhost] [MQuser] [MQpassword] [QUEUEname] [DEVICEname] [SERVERhost] [MICROWAVEhost] |
| | | %aerialpython% ./src/Client.py %MQhost% %MQuser% %MQpassword% %QUEUEname% %DEVICEname% %SERVERhost% %MICROWAVEhost% >> %LOGfile% |
| | | echo Client.py has been terminited. |
| | | pause |
| New file |
| | |
| | | @echo off |
| | | |
| | | @REM change to the filepath |
| | | cd %~dp0 |
| | | echo change to path: %cd% |
| | | |
| | | set aerialpython=%cd%/env/aerial_deploy/python.exe |
| | | set envsetting=%cd%/env/SettingEnv.bat |
| | | |
| | | @REM Setting the env |
| | | if not exist %aerialpython% ( |
| | | call %envsetting% |
| | | ) |
| | | |
| | | set MQhost=localhost |
| | | set MQuser=chai |
| | | set MQpassword=password123 |
| | | set QUEUEname=aerial_rpc |
| | | set WEBport=5000 |
| | | set SAVEfolder=./ImagesTEST |
| | | set LOGfile=ServerTEST.log |
| | | |
| | | @REM Launch the Server |
| | | @REM -------- Usage: Server.py [MQhost] [MQuser] [MQpassword] [QUEUEname] [WEBport] [SAVEfolder]") |
| | | echo the log file will be saved in the [%LOGfile%] file |
| | | echo Server.py is running ... |
| | | @REM -------- Usage: Server.py [MQhost] [MQuser] [MQpassword] [QUEUEname] [WEBport] [SAVEfolder]") |
| | | %aerialpython% ./src/Server.py %MQhost% %MQuser% %MQpassword% %QUEUEname% %WEBport% %SAVEfolder% >> %LOGfile% |
| | | echo Server.py has been terminited. |
| | | pause |
| | | |
| New file |
| | |
| | | @echo off |
| | | |
| | | @REM change to the filepath |
| | | cd %~dp0 |
| | | echo change to path: %cd% |
| | | |
| | | set aerialpython=%cd%/env/aerial_deploy/python.exe |
| | | set envsetting=%cd%/env/SettingEnv.bat |
| | | |
| | | @REM Setting the env |
| | | if not exist %aerialpython% ( |
| | | call %envsetting% |
| | | ) |
| | | |
| | | set UDPfolder=./Manual_Microwave_test/pod1-2022-02-21-15-34-45/ |
| | | |
| | | @REM ---------------Usage: udp2bin.py [UDPfolder] |
| | | %aerialpython% ./src/utils/udp2bin.py %UDPfolder% |
| | | pause |
| New file |
| | |
| | | @echo off |
| | | |
| | | @REM change to the filepath |
| | | cd %~dp0 |
| | | echo change to path: %cd% |
| | | |
| | | set aerialpython=%cd%/env/aerial_deploy/python.exe |
| | | set envsetting=%cd%/env/SettingEnv.bat |
| | | |
| | | @REM Setting the env |
| | | if not exist %aerialpython% ( |
| | | call %envsetting% |
| | | ) |
| | | |
| | | set UDPfolder=./Manual_Microwave_test/pod1-2022-02-21-15-34-45/ |
| | | |
| | | @REM ---------------Usage: udp2bin.py [UDPfolder] |
| | | %aerialpython% ./src/utils/udp2bin.py %UDPfolder% |
| | | @REM ---------------Usage: bin2ply.py [BINfolder] |
| | | %aerialpython% ./src/utils/bin2ply.py %UDPfolder% |
| | | pause |
| New file |
| | |
| | | @echo off |
| | | |
| | | @REM change to the filepath |
| | | cd %~dp0 |
| | | echo change to path: %cd% |
| | | |
| | | set aerialpython=%cd%/env/aerial_deploy/python.exe |
| | | set envsetting=%cd%/env/SettingEnv.bat |
| | | |
| | | @REM Setting the env |
| | | if not exist %aerialpython% ( |
| | | call %envsetting% |
| | | ) |
| | | |
| | | set MICROWAVEhost=172.17.17.206 |
| | | SET PACKETthreshold=100 |
| | | SET DEVICEname=pod1 |
| | | SET SAVEfolder=./Manual_Microwave_test |
| | | @REM ---------------Usage: udp_get.py [MICROWAVEhost] [PACKETthreshold] [DEVICEname] [SAVEfolder] |
| | | %aerialpython% ./src/utils/udp_get.py %MICROWAVEhost% %PACKETthreshold% %DEVICEname% %SAVEfolder% |
| | | pause |
| New file |
| | |
| | | @echo off |
| | | |
| | | @REM change to the filepath |
| | | cd %~dp0 |
| | | echo change to path: %cd% |
| | | |
| | | set aerialpython=%cd%/env/aerial_deploy/python.exe |
| | | set envsetting=%cd%/env/SettingEnv.bat |
| | | |
| | | @REM Setting the env |
| | | if not exist %aerialpython% ( |
| | | call %envsetting% |
| | | ) |
| | | @REM please the folder path of the bin files. |
| | | @REM set BINfolder=./Manual_Microwave/pod1-2012-12-12-12-12-12/ |
| | | |
| | | @REM ---------------Usage: bin2ply.py [BINfolder] |
| | | %aerialpython% ./src/utils/bin2ply.py %BINfolder% |
| | | pause |
| New file |
| | |
| | | @echo off |
| | | |
| | | @REM change to the filepath |
| | | cd %~dp0 |
| | | echo change to path: %cd% |
| | | |
| | | set aerialpython=%cd%/env/aerial_deploy/python.exe |
| | | set envsetting=%cd%/env/SettingEnv.bat |
| | | |
| | | @REM Setting the env |
| | | if not exist %aerialpython% ( |
| | | call %envsetting% |
| | | ) |
| | | @REM please the folder path of the bin files. |
| | | @REM set PLYfile=./Manual_Microwave/pod1-2022-02-21-15-34-45/2522.ply |
| | | |
| | | @REM -------------- Usage: plot_ply.py [PLYfile]" |
| | | %aerialpython% ./src/utils/plot_ply.py %PLYfile% |
| | | pause |
| | |
| | | sys.exit() |
| | | |
| | | if __name__ == '__main__': |
| | | def help(): |
| | | print("Usage: Client.py [MQhost] [MQuser] [MQpassword] [QUEUEname] [DEVICEname] [SERVERhost] [MICROWAVEhost]") |
| | | print("EXAMPLE: Client.py 172.17.17.206 chai password123 aerial_rpc pod1 http://172.17.17.206/api 192.168.2.65") |
| | | exit(1) |
| | | |
| | | if len(sys.argv) != 8: |
| | | help() |
| | | try: |
| | | MQhost = str(sys.argv[1]) |
| | | MQuser = str(sys.argv[2]) |
| | | MQpassword = str(sys.argv[3]) |
| | | QUEUEname = str(sys.argv[4]) |
| | | DEVICEname = str(sys.argv[5]) |
| | | SERVERhost = str(sys.argv[6]) |
| | | MICROWAVEhost = str(sys.argv[7]) |
| | | |
| | | except Exception as e: |
| | | print(e) |
| | | help() |
| | | |
| | | print("Start AcquisitionMain") |
| | | signal.signal(signal.SIGINT, quit) |
| | | signal.signal(signal.SIGTERM, quit) |
| | |
| | | config_dir = os.path.join(__file__, "..", "config.json" ) |
| | | config_path = os.path.abspath(config_dir) |
| | | config = Config(config_path) |
| | | client = AcquisitionMain('localhost', |
| | | 'chai', |
| | | 'password123', |
| | | 'aerial_rpc', |
| | | 'pod1', |
| | | 'http://localhost:5000/api', |
| | | 'localhost', # udp server host, 192.168.2.65 for production |
| | | client = AcquisitionMain(MQhost, |
| | | MQuser, |
| | | MQpassword, |
| | | QUEUEname, |
| | | DEVICEname, |
| | | SERVERhost, |
| | | MICROWAVEhost, # udp server host, 192.168.2.65 for production |
| | | config) |
| | | client.start() |
| | |
| | | |
| | | @REM Setting the env |
| | | if not exist %aerialpython% ( |
| | | %envsetting% |
| | | call %envsetting% |
| | | ) |
| | | |
| | | echo All data will be save in '%cd%/saveUDPData/' folder |
| | | |
| | | %aerialpython% udp_test_get.py test |
| | | %aerialpython% udp_test_get.py microwave |
| | | |
| | | echo =========== ALL DONE ================ |
| | | |
| | |
| | | |
| | | @REM Setting the env |
| | | if not exist %aerialpython% ( |
| | | %envsetting% |
| | | call %envsetting% |
| | | ) |
| | | |
| | | echo All data will be saved in '%cd%/saveUDPData/' folder |
| | |
| | | |
| | | @REM Setting the env |
| | | if not exist %aerialpython% ( |
| | | %envsetting% |
| | | call %envsetting% |
| | | ) |
| | | |
| | | start AutoGetUDPtest.bat |
| | |
| | | |
| | | @REM Setting the env |
| | | if not exist %aerialpython% ( |
| | | %envsetting% |
| | | call %envsetting% |
| | | ) |
| | | |
| | | echo All data saved in '%cd%/demoUDPData/' folder will be sent to 127.0.0.1:9911 |
| | |
| | | data1_str = data1.SerializeToString() |
| | | msg.data1.length = len(data1_str) |
| | | msg.data1.data = data1_str |
| | | self.msg_queue.put(msg) |
| | | self.server.msg_queue.put(msg) |
| | | |
| | | |
| | | class MicroWaveUDPServer(UDPServer): |
| | |
| | | def _on_sys_command(self, req: pb.RequestCommand, resp: pb.ResponseCommand): |
| | | if pb.SubCommand.POWER_ON_SUB_COMMAND == req.sub_command: |
| | | print('power on message received') |
| | | self._device_manager.get_device(req.device_id) |
| | | self._device_manager.get_device(req.device_id,save_folder) |
| | | elif pb.SubCommand.POWER_OFF_SUB_COMMAND == req.sub_command: |
| | | device = self._device_manager.get_device(req.device_id) |
| | | device = self._device_manager.get_device(req.device_id,save_folder) |
| | | device['power_on'] = False |
| | | print('power off message received') |
| | | return |
| | |
| | | |
| | | |
| | | if __name__ == "__main__": |
| | | def help(): |
| | | print("Usage: Server.py [MQhost] [MQuser] [MQpassword] [QUEUEname] [WEBport] [SAVEfolder]") |
| | | print("EXAMPLE: Server.py localhost chai password123 aerial_rpc 5000 ./Images") |
| | | exit(1) |
| | | |
| | | if len(sys.argv) != 7: |
| | | help() |
| | | try: |
| | | MQhost = str(sys.argv[1]) |
| | | MQuser = str(sys.argv[2]) |
| | | MQpassword = str(sys.argv[3]) |
| | | QUEUEname = str(sys.argv[4]) |
| | | WEBport = int(sys.argv[5]) |
| | | SAVEfolder = str(sys.argv[6]) |
| | | global save_folder |
| | | save_folder = SAVEfolder |
| | | |
| | | except Exception as e: |
| | | print(e) |
| | | help() |
| | | server = MyServer(host="localhost", user='chai', password='password123', queue='aerial_rpc', port=5000) |
| | | server.run_all() |
| | |
| | | channel.queue_declare(queue=device_id + "_callback") |
| | | return channel |
| | | |
| | | def get_device(self, device_id: str): |
| | | def get_device(self, device_id: str, save_folder: str): |
| | | device = self._devices.get(device_id, None) |
| | | if device is None: |
| | | start = datetime.datetime.now() |
| | | if not os.path.exists('./Images'): |
| | | os.mkdir('./Images') |
| | | path = f"./Images/{device_id}-{start.strftime('%Y-%m-%d-%H-%M-%S')}" |
| | | if not os.path.exists(save_folder): |
| | | os.mkdir(save_folder) |
| | | path = os,path.join(save_folder,f"{device_id}-{start.strftime('%Y-%m-%d-%H-%M-%S')}") |
| | | if not os.path.exists(path): |
| | | os.mkdir(path) |
| | | device = dict( |
| New file |
| | |
| | | from .tools import * |
| New file |
| | |
| | | import os |
| | | import sys |
| | | import time |
| | | |
| | | # add python path of src to sys.path |
| | | src_path = os.path.join(__file__, *(['..'] * 2)) |
| | | src_path = os.path.abspath(src_path) |
| | | sys.path.insert(0, src_path) |
| | | |
| | | from microwave.parsers import MicroWaveParser |
| | | from tools import file_fliter |
| | | |
| | | if __name__ == "__main__": |
| | | def help(): |
| | | print("Usage: bin2ply.py [BINfolder]") |
| | | print("EXAMPLE: BIN2ply.py ./manual_ply/pod1-2012-12-12-12-12-12/") |
| | | exit(1) |
| | | |
| | | if len(sys.argv) != 2: |
| | | help() |
| | | try: |
| | | BINfolder = str(sys.argv[1]) |
| | | # example pod1-2022-02-21-13-25-03_packet125.udp --> 125 |
| | | sort_lambda = lambda x:int(x.split('.')[0]) |
| | | bin_files = file_fliter(BINfolder,'bin', sort_lambda) |
| | | |
| | | except Exception as e: |
| | | print(e) |
| | | help() |
| | | |
| | | for file in bin_files: |
| | | |
| | | filename = file |
| | | (fn, ext) = os.path.splitext(filename) |
| | | with open(os.path.join(BINfolder,file), "rb") as bin_file: |
| | | buf = bin_file.read() |
| | | point_cloud = MicroWaveParser.ParserFrame(buf) |
| | | with open(os.path.join(BINfolder,fn +".ply"), "w") as f: |
| | | f.write("ply\n") |
| | | f.write("format ascii 1.0\n") |
| | | f.write("comment MicroWave2Ply generated\n") |
| | | f.write("element vertex %d\n" % len(point_cloud)) |
| | | f.write("property float x\n") |
| | | f.write("property float y\n") |
| | | f.write("property float z\n") |
| | | f.write("element face 0\n") |
| | | f.write("property list uchar int vertex_indices\n") |
| | | f.write("end_header\n") |
| | | n_p = 0 |
| | | for p in point_cloud: |
| | | x, y, z = p |
| | | f.write("{:.5f} {:.5f} {:.5f}\n".format(x, y, z)) |
| | | n_p += 1 |
| | | print(time.asctime(),f"Frame {fn}.ply have been saved with {n_p} points!") |
| New file |
| | |
| | | import open3d as o3d |
| | | import sys |
| | | |
| | | if __name__ == "__main__": |
| | | def help(): |
| | | print("Usage: plot_ply.py [PLYfile]") |
| | | print("EXAMPLE: plot_ply ./Manual_Microwave/pod1-2022-02-21-15-34-45/2522.ply") |
| | | exit(1) |
| | | |
| | | if len(sys.argv) != 2: |
| | | help() |
| | | try: |
| | | PLYfile = str(sys.argv[1]) |
| | | |
| | | pcd = o3d.io.read_point_cloud(PLYfile) |
| | | |
| | | except Exception as e: |
| | | print(e) |
| | | help() |
| | | |
| | | show = [pcd] |
| | | |
| | | o3d.visualization.draw_geometries(show) |
| New file |
| | |
| | | import os, sys |
| | | |
| | | def file_fliter(folder:str, file_ext:str, sort_format): |
| | | |
| | | files_List = os.listdir(folder) |
| | | target_files = [] |
| | | |
| | | # flitered by file extention name |
| | | for file in files_List: |
| | | if file.split('.')[-1] == file_ext: |
| | | target_files.append(file) |
| | | # sort the list by the sort_format |
| | | target_files.sort(key=sort_format) |
| | | |
| | | return target_files |
| | | |
| | | |
| New file |
| | |
| | | import os |
| | | from sys import argv |
| | | import sys |
| | | import time |
| | | |
| | | # add python path of src to sys.path |
| | | src_path = os.path.join(__file__, *(['..'] * 2)) |
| | | src_path = os.path.abspath(src_path) |
| | | sys.path.insert(0, src_path) |
| | | |
| | | from microwave.servers import MicroWaveReceiver |
| | | from tools import file_fliter |
| | | |
| | | |
| | | if __name__ == '__main__': |
| | | |
| | | def help(): |
| | | print("Usage: udp2bin.py [UDPfolder]") |
| | | print("EXAMPLE: udp2bin.py ./manual_ply/pod1-2012-12-12-12-12-12/") |
| | | exit(1) |
| | | |
| | | if len(sys.argv) != 2: |
| | | help() |
| | | try: |
| | | UDPfolder = str(sys.argv[1]) |
| | | # example pod1-2022-02-21-13-25-03_packet125.udp --> 125 |
| | | sort_lambda = lambda x:int(x.split('packet')[1][:-4]) |
| | | udp_files = file_fliter(UDPfolder,'udp', sort_lambda) |
| | | |
| | | except Exception as e: |
| | | print(e) |
| | | help() |
| | | |
| | | receiver = MicroWaveReceiver() |
| | | for file in udp_files: |
| | | filename = os.path.join(UDPfolder, file) |
| | | with open(filename, "rb") as f: |
| | | data = f.read() |
| | | receiver.AddBuf(data) |
| | | if receiver.DataFrameReady: |
| | | frame_number = receiver.Header.FrameNumber |
| | | bin_name = os.path.join(UDPfolder, "{}.bin".format(frame_number)) |
| | | print(time.asctime(),"Frame {} ready".format(frame_number)) |
| | | with open(bin_name, "wb") as bin_file: |
| | | bin_file.write(receiver.DataFrame) |
| | | bin_file.close() |
| New file |
| | |
| | | import datetime |
| | | from pickle import GLOBAL |
| | | from socketserver import BaseRequestHandler, UDPServer |
| | | import time |
| | | import os, sys |
| | | |
| | | |
| | | # cudir,_ = os.path.split(__file__) |
| | | # file_folder = os.path.join(cudir,"saveUDPData") |
| | | |
| | | # if not os.path.exists(file_folder): |
| | | # os.makedirs(file_folder) |
| | | # print(f"make a new folder: {file_folder}") |
| | | |
| | | packed_count = 0 |
| | | |
| | | class PointCloudUDPRequestHandler(BaseRequestHandler): |
| | | |
| | | def handle(self): |
| | | |
| | | global packed_count |
| | | global path |
| | | |
| | | if packed_count == 0: |
| | | start = datetime.datetime.now() |
| | | if not os.path.exists(save_folder): |
| | | os.mkdir(save_folder) |
| | | path = os.path.join(save_folder,f"{device_id}-{start.strftime('%Y-%m-%d-%H-%M-%S')}") |
| | | if not os.path.exists(path): |
| | | os.mkdir(path) |
| | | path = os.path.abspath(path) |
| | | |
| | | print(time.asctime(),' Got connection from {}, {}'.format(self.client_address, packed_count)) |
| | | # Get message and client socket |
| | | msg, sock = self.request |
| | | time_tag = datetime.datetime.now().strftime('%Y-%m-%d-%H-%M-%S') |
| | | f = open('{}/{}_packet{}.udp'.format(path,time_tag,packed_count), 'wb') |
| | | f.write(msg) |
| | | f.close() |
| | | packed_count += 1 |
| | | |
| | | if packed_count >= packet_threshold: |
| | | UDPServer.server_close(server) |
| | | |
| | | |
| | | if __name__ == '__main__': |
| | | |
| | | def help(): |
| | | print("Usage: udp_get.py [MICROWAVEhost] [PACKETthreshold] [DEVICEname] [SAVEfolder]") |
| | | print("EXAMPLE: udp_get.py 192.168.2.65 1000 pod1 ./manual_ply") |
| | | exit(1) |
| | | |
| | | if len(sys.argv) != 5: |
| | | help() |
| | | try: |
| | | MICROWAVEhost = str(sys.argv[1]) |
| | | PACKETthreshold = int(sys.argv[2]) |
| | | DEVICEname = str(sys.argv[3]) |
| | | SAVEfolder = str(sys.argv[4]) |
| | | |
| | | global packet_threshold |
| | | packet_threshold = PACKETthreshold |
| | | global device_id |
| | | device_id = DEVICEname |
| | | global save_folder |
| | | save_folder = SAVEfolder |
| | | |
| | | except Exception as e: |
| | | print(e) |
| | | help() |
| | | |
| | | global server |
| | | |
| | | # host = '' |
| | | # host = '192.168.2.65' # use this host to get the udp data from microwave device |
| | | port = 9911 |
| | | server =UDPServer((MICROWAVEhost, port), PointCloudUDPRequestHandler) |
| | | print(time.asctime(),'Server started on port', port) |
| | | print('....') |
| | | print('ctrl-c to quit server.') |
| | | try: |
| | | server.serve_forever() |
| | | except KeyboardInterrupt: |
| | | server.server_close() |
| | | print(time.asctime(),"Server Stopped") |
| | | except: |
| | | server.server_close() |
| | | print(time.asctime(),"Server Stopped") |
| | |
| | | |
| | | @REM Setting the env |
| | | if not exist %aerialpython% ( |
| | | %envsetting% |
| | | call %envsetting% |
| | | ) |
| | | |
| | | set MQhost=172.17.17.206 |
| | | set MQuser=chai |
| | | set MQpassword=password123 |
| | | set QUEUEname=aerial_rpc |
| | | set DEVICEname=pod1 |
| | | set SERVERhost=http://172.17.17.206/api |
| | | set MICROWAVEhost=192.168.2.65 |
| | | set LOGfile=Client.log |
| | | |
| | | @REM Launch the Client |
| | | %aerialpython% ./src/Client.py |
| | | echo the log file will be saved in the [%LOGfile%] file |
| | | echo Client.py is running ... |
| | | @REM -------- Usage: Client.py [MQhost] [MQuser] [MQpassword] [QUEUEname] [DEVICEname] [SERVERhost] [MICROWAVEhost] |
| | | %aerialpython% ./src/Client.py %MQhost% %MQuser% %MQpassword% %QUEUEname% %DEVICEname% %SERVERhost% %MICROWAVEhost% >> %LOGfile% |
| | | echo Client.py has been terminited. |
| | | pause |
| | |
| | | |
| | | @REM Setting the env |
| | | if not exist %aerialpython% ( |
| | | %envsetting% |
| | | call %envsetting% |
| | | ) |
| | | |
| | | set MQhost=172.17.17.206 |
| | | set MQuser=chai |
| | | set MQpassword=password123 |
| | | set QUEUEname=aerial_rpc |
| | | set WEBport=5000 |
| | | set SAVEfolder=./Images |
| | | set LOGfile=Server.log |
| | | |
| | | @REM Launch the Server |
| | | %aerialpython% ./src/Server.py |
| | | echo the log file will be saved in the [%LOGfile%] file |
| | | echo Server.py is running ... |
| | | @REM -------- Usage: Server.py [MQhost] [MQuser] [MQpassword] [QUEUEname] [WEBport] [SAVEfolder]") |
| | | %aerialpython% ./src/Server.py %MQhost% %MQuser% %MQpassword% %QUEUEname% %WEBport% %SAVEfolder% >> >> %LOGfile% |
| | | echo Server.py has been terminited. |
| | | pause |
| | | |
| New file |
| | |
| | | @echo off |
| | | |
| | | @REM change to the filepath |
| | | cd %~dp0 |
| | | echo change to path: %cd% |
| | | |
| | | set aerialpython=%cd%/env/aerial_deploy/python.exe |
| | | set envsetting=%cd%/env/SettingEnv.bat |
| | | |
| | | @REM Setting the env |
| | | if not exist %aerialpython% ( |
| | | call %envsetting% |
| | | ) |
| | | |
| | | @REM please the folder path of the udp files. |
| | | @REM set UDPfolder=./Manual_Microwave/pod1-2012-12-12-12-12-12/ |
| | | |
| | | @REM ---------------Usage: udp2bin.py [UDPfolder] |
| | | %aerialpython% ./src/utils/udp2bin.py %UDPfolder% |
| | | pause |
| New file |
| | |
| | | @echo off |
| | | |
| | | @REM change to the filepath |
| | | cd %~dp0 |
| | | echo change to path: %cd% |
| | | |
| | | set aerialpython=%cd%/env/aerial_deploy/python.exe |
| | | set envsetting=%cd%/env/SettingEnv.bat |
| | | |
| | | @REM Setting the env |
| | | if not exist %aerialpython% ( |
| | | call %envsetting% |
| | | ) |
| | | |
| | | @REM please the folder path of the udp files. |
| | | @REM set UDPfolder=./Manual_Microwave/pod1-2012-12-12-12-12-12/ |
| | | |
| | | @REM ---------------Usage: udp2bin.py [UDPfolder] |
| | | %aerialpython% ./src/utils/udp2bin.py %UDPfolder% |
| | | @REM ---------------Usage: bin2ply.py [BINfolder] |
| | | %aerialpython% ./src/utils/bin2ply.py %UDPfolder% |
| | | pause |
| New file |
| | |
| | | @echo off |
| | | |
| | | @REM change to the filepath |
| | | cd %~dp0 |
| | | echo change to path: %cd% |
| | | |
| | | set aerialpython=%cd%/env/aerial_deploy/python.exe |
| | | set envsetting=%cd%/env/SettingEnv.bat |
| | | |
| | | @REM Setting the env |
| | | if not exist %aerialpython% ( |
| | | call %envsetting% |
| | | ) |
| | | |
| | | set MICROWAVEhost=192.168.2.65 |
| | | SET PACKETthreshold=1000 |
| | | SET DEVICEname=pod1 |
| | | SET SAVEfolder=./Manual_Microwave |
| | | @REM ---------------Usage: udp_get.py [MICROWAVEhost] [PACKETthreshold] [DEVICEname] [SAVEfolder] |
| | | %aerialpython% ./src/utils/udp_get.py %MICROWAVEhost% %PACKETthreshold% %DEVICEname% %SAVEfolder% |
| | | pause |