├── .gitignore ├── .gitmodules ├── LICENSE ├── LICENSE_README.md ├── README.md ├── dataset_collection_framework ├── GAP8_streamer │ ├── inc │ │ └── frame_streamer.h │ └── wifi_jpeg_streamer │ │ ├── Makefile │ │ ├── config.ini │ │ └── wifi_frame_streamer.c ├── README.md ├── conda_deps.yml ├── crazyflie_firmware_patches │ └── dataset_collection_app │ │ ├── Makefile │ │ ├── current_platform.mk │ │ ├── datasetcollector.c │ │ └── datasetcollector.h ├── dataset_collector_python │ ├── CrazyflieCameraStreamer.py │ ├── CrazyflieCommunicator.py │ ├── CrazyflieController.py │ ├── DatasetLogger.py │ ├── UI │ │ ├── controlConfigDialog.py │ │ ├── controlConfigDialog.ui │ │ ├── coordinate_system.jpg │ │ ├── create_ui_python_code.sh │ │ ├── datasetcollector.ui │ │ ├── datasetcollector_ui.py │ │ ├── logConfigDialog.py │ │ └── logConfigDialog.ui │ ├── control_config.json │ ├── dataset_tools │ │ ├── UI │ │ │ ├── create_ui_python_code.sh │ │ │ ├── imageViewer.ui │ │ │ └── imageViewerUI.py │ │ ├── count_images_dataset.sh │ │ ├── dataset_partitioning.py │ │ ├── dataset_post_processing.py │ │ ├── image_viewer.py │ │ ├── image_viewer_cv.py │ │ └── save_all_videos.sh │ ├── datasetcollector_main.py │ ├── default_config.json │ ├── draw_binary_digits.py │ ├── ds_logger.py │ └── logger_app.py ├── external │ └── .gitkeep ├── gap_sdk_setup.md └── images │ ├── LED_correct_synch.png │ ├── Log_config.png │ ├── gamepad_mapping.png │ └── gui_connected_with_comments.png ├── dataset_visualizer ├── README.md ├── dataset_visualizer │ ├── acquisition_visualizer.py │ ├── classes.py │ ├── dataset_partitioning.py │ ├── dataset_post_processing.py │ ├── image_visualizer.py │ ├── main.py │ ├── metadata_visualizer.py │ ├── plot_statistics.py │ ├── stats_config.json │ └── video.py ├── imgs │ ├── dataset_visualizer.png │ └── dataset_visualizer_grid_view.png └── setup.py ├── imgs ├── PULP_drone.png └── pulp_dronet_evolution.png ├── pulp-dronet-v1 ├── .editorconfig ├── LICENSE.apache.md ├── LICENSE_README.md ├── PULP-Shield │ ├── GAP8 │ │ ├── BOM1.BomDoc │ │ ├── Doc │ │ │ └── GAP_Shield.PDF │ │ ├── Fabrication │ │ │ ├── Assembly Drawings │ │ │ │ └── AssemblyDrawings.PDF │ │ │ ├── BOM │ │ │ │ └── Purchasing List-BOM1.xls │ │ │ ├── Gerber │ │ │ │ ├── PCB1-macro.APR_LIB │ │ │ │ ├── PCB1.EXTREP │ │ │ │ ├── PCB1.GBL │ │ │ │ ├── PCB1.GBO │ │ │ │ ├── PCB1.GBP │ │ │ │ ├── PCB1.GBS │ │ │ │ ├── PCB1.GP1 │ │ │ │ ├── PCB1.GP2 │ │ │ │ ├── PCB1.GTL │ │ │ │ ├── PCB1.GTO │ │ │ │ ├── PCB1.GTP │ │ │ │ ├── PCB1.GTS │ │ │ │ ├── PCB1.REP │ │ │ │ ├── PCB1.RUL │ │ │ │ └── PCB1.apr │ │ │ ├── NC Drill │ │ │ │ ├── PCB1-BoardEdgeRout.TXT │ │ │ │ ├── PCB1.DRR │ │ │ │ ├── PCB1.LDP │ │ │ │ └── PCB1.TXT │ │ │ └── Pick Place │ │ │ │ └── Pick Place for PCB1.txt │ │ ├── GAP_Shield.OutJob │ │ ├── GAP_Shield.PrjPcb │ │ ├── GAP_Shield.PrjPcbStructure │ │ ├── GAPandPeripherals.Harness │ │ ├── GAPandPeripherals.SchDoc │ │ ├── PCB1.PcbDoc │ │ ├── Power.Harness │ │ ├── Power.SchDoc │ │ └── __Previews │ │ │ ├── GAPandPeripherals.SchDocPreview │ │ │ └── Power.SchDocPreview │ └── jtag-convboard │ │ ├── BOM1.BomDoc │ │ ├── CHANGELOG.md │ │ ├── JTAGconv.PcbDoc │ │ ├── JTAGconv.PrjPcb │ │ ├── JTAGconv.PrjPcbStructure │ │ ├── JTAGconv.SchDoc │ │ └── Project Outputs for JTAGconv │ │ ├── Fabrication Data │ │ ├── Gerber_v1.1 │ │ │ ├── JTAGconv_v1.1.EXTREP │ │ │ ├── JTAGconv_v1.1.GBL │ │ │ ├── JTAGconv_v1.1.GBO │ │ │ ├── JTAGconv_v1.1.GBS │ │ │ ├── JTAGconv_v1.1.GD1 │ │ │ ├── JTAGconv_v1.1.GTL │ │ │ ├── JTAGconv_v1.1.GTO │ │ │ ├── JTAGconv_v1.1.GTS │ │ │ ├── JTAGconv_v1.1.REP │ │ │ ├── JTAGconv_v1.1.RUL │ │ │ ├── JTAGconv_v1.1.apr │ │ │ └── JTAGconv_v1.APR_LIB │ │ └── NC Drill_v1.1 │ │ │ ├── JTAGconv-BoardEdgeRout.TXT │ │ │ ├── JTAGconv_v1.1.DRR │ │ │ ├── JTAGconv_v1.1.LDP │ │ │ └── JTAGconv_v1.1.TXT │ │ └── Project Documentation │ │ ├── Assembly_v1.1.PDF │ │ ├── BOM_v1.1_raw.xlsx │ │ ├── JTAGconv_v1.1.PDF │ │ ├── JTAGconv_v1.1_complete.PDF │ │ └── PCBPrints_v1.1.PDF ├── README.md ├── bin │ ├── PULPDroNet_GAPuino │ └── PULPDroNet_PULPShield ├── imgs │ ├── PULP_dataset.png │ ├── PULP_drone.png │ ├── PULP_proto.png │ └── PULP_setup.png ├── src │ ├── Makefile │ ├── PULPDronet.c │ ├── PULPDronetGenerator.c │ ├── PULPDronetKernels.c │ ├── PULPDronetKernels.h │ ├── PULPDronetKernelsInit.c │ ├── PULPDronetKernelsInit.h │ ├── Utils.h │ ├── config.h │ ├── config.ini │ └── run_dataset.sh └── weights │ ├── WeightsPULPDroNet.raw │ └── binary │ ├── bias_conv2d_1.hex │ ├── bias_conv2d_10.hex │ ├── bias_conv2d_2.hex │ ├── bias_conv2d_3.hex │ ├── bias_conv2d_4.hex │ ├── bias_conv2d_5.hex │ ├── bias_conv2d_6.hex │ ├── bias_conv2d_7.hex │ ├── bias_conv2d_8.hex │ ├── bias_conv2d_9.hex │ ├── bias_dense_1.hex │ ├── bias_dense_2.hex │ ├── weights_conv2d_1.hex │ ├── weights_conv2d_10.hex │ ├── weights_conv2d_2.hex │ ├── weights_conv2d_3.hex │ ├── weights_conv2d_4.hex │ ├── weights_conv2d_5.hex │ ├── weights_conv2d_6.hex │ ├── weights_conv2d_7.hex │ ├── weights_conv2d_8.hex │ ├── weights_conv2d_9.hex │ ├── weights_dense_1.hex │ └── weights_dense_2.hex ├── pulp-dronet-v2 ├── LICENSE.apache.md ├── README.md ├── conda_deps.yml ├── config.py ├── dataset │ └── .gitkeep ├── evaluation.py ├── gapflow │ ├── Makefile │ ├── README.md │ ├── common.mk │ ├── common │ │ ├── model_decl.mk │ │ └── model_rules.mk │ ├── images │ │ ├── frame_1.pgm │ │ ├── frame_2.pgm │ │ ├── frame_3.pgm │ │ ├── frame_4.pgm │ │ ├── frame_5.pgm │ │ ├── frame_6.pgm │ │ ├── frame_7.pgm │ │ ├── frame_8.pgm │ │ └── frame_9.pgm │ ├── main.c │ ├── main.h │ ├── network.h │ ├── nntool_input │ │ ├── models_onnx │ │ │ ├── model_original.onnx │ │ │ └── model_original_himax.onnx │ │ ├── nntool_model_eval.py │ │ ├── nntool_scripts │ │ │ ├── nntool_script_deployment │ │ │ └── nntool_script_model_eval │ │ └── quantization_files │ │ │ ├── 1479425441182877835.jpg │ │ │ ├── 1479425441232704425.jpg │ │ │ ├── 1479425441282730750.jpg │ │ │ ├── 1479425443382879593.jpg │ │ │ ├── 1479425443432903742.jpg │ │ │ ├── 1479425443582977575.jpg │ │ │ ├── 1479425443682982187.jpg │ │ │ ├── 1479425443782898808.jpg │ │ │ ├── 1479425443833012205.jpg │ │ │ ├── 1479425444633286162.jpg │ │ │ ├── 1479425445983503068.jpg │ │ │ ├── 1479425447083596868.jpg │ │ │ ├── 1479425447133467484.jpg │ │ │ ├── 1479425448133784412.jpg │ │ │ ├── 1479425448633847925.jpg │ │ │ ├── 1479425451134304083.jpg │ │ │ ├── frame_00001.jpg │ │ │ ├── frame_00013.jpg │ │ │ ├── frame_00014.jpg │ │ │ ├── frame_00015.jpg │ │ │ ├── frame_00016.jpg │ │ │ ├── frame_00017.jpg │ │ │ ├── frame_00018.jpg │ │ │ ├── frame_00032.jpg │ │ │ ├── frame_00033.jpg │ │ │ ├── frame_00034.jpg │ │ │ ├── frame_00035.jpg │ │ │ ├── frame_00036.jpg │ │ │ ├── frame_00037.jpg │ │ │ ├── frame_00038.jpg │ │ │ ├── frame_00058.jpg │ │ │ ├── frame_00064.jpg │ │ │ ├── frame_00078.jpg │ │ │ ├── frame_00079.jpg │ │ │ ├── frame_00121.jpg │ │ │ ├── frame_00131.jpg │ │ │ ├── frame_00135.jpg │ │ │ ├── frame_00136.jpg │ │ │ ├── frame_00139.jpg │ │ │ ├── frame_00140.jpg │ │ │ ├── frame_00143.jpg │ │ │ ├── frame_00151.jpg │ │ │ ├── frame_00158.jpg │ │ │ ├── frame_00164.jpg │ │ │ ├── frame_00191.jpg │ │ │ ├── frame_00192.jpg │ │ │ ├── frame_00193.jpg │ │ │ ├── frame_00194.jpg │ │ │ └── frame_00195.jpg │ └── onnx_converter.py ├── model │ ├── dronet_v2_gapflow.py │ ├── dronet_v2_gapflow_original.pth │ ├── dronet_v2_gapflow_original_himax.pth │ ├── dronet_v2_nemo_dory.py │ ├── dronet_v2_nemo_dory_original.pth │ └── dronet_v2_nemo_dory_original_himax.pth ├── nemo-dory │ └── quantize.py ├── testing.py ├── training.py └── utility.py └── tiny-pulp-dronet-v3 ├── README.md ├── classes.py ├── conda_deps.yml ├── config.py ├── dataset ├── testing │ └── .gitkeep └── training │ └── .gitkeep ├── drone-applications ├── crazyflie-dronet-app │ ├── Makefile │ ├── current_platform.mk │ ├── inc │ │ ├── config_dronet.h │ │ ├── uart_dma_pulp.h │ │ └── uart_dma_setup.h │ └── src │ │ ├── app_dronet.c │ │ └── uart_dma_pulp.c ├── external │ └── .gitkeep └── gap8-dronet-app │ ├── pulp-dronet-v3 │ ├── DORY_network │ │ ├── ConvBNRelu0_weights.hex │ │ ├── ConvBNRelu10_weights.hex │ │ ├── ConvBNRelu11_weights.hex │ │ ├── ConvBNRelu12_weights.hex │ │ ├── ConvBNRelu2_weights.hex │ │ ├── ConvBNRelu3_weights.hex │ │ ├── ConvBNRelu4_weights.hex │ │ ├── ConvBNRelu6_weights.hex │ │ ├── ConvBNRelu7_weights.hex │ │ ├── ConvBNRelu8_weights.hex │ │ ├── MatMul14_weights.hex │ │ ├── inc │ │ │ ├── dory.h │ │ │ ├── layerAddRelu13.h │ │ │ ├── layerAddRelu5.h │ │ │ ├── layerAddRelu9.h │ │ │ ├── layerConvBNRelu0.h │ │ │ ├── layerConvBNRelu10.h │ │ │ ├── layerConvBNRelu11.h │ │ │ ├── layerConvBNRelu12.h │ │ │ ├── layerConvBNRelu2.h │ │ │ ├── layerConvBNRelu3.h │ │ │ ├── layerConvBNRelu4.h │ │ │ ├── layerConvBNRelu6.h │ │ │ ├── layerConvBNRelu7.h │ │ │ ├── layerConvBNRelu8.h │ │ │ ├── layerMatMul14_last.h │ │ │ ├── layerMaxPool1.h │ │ │ ├── mchan_test.h │ │ │ ├── mem_controller.h │ │ │ ├── network.h │ │ │ ├── pulp_nn_kernels.h │ │ │ └── pulp_nn_utils.h │ │ ├── inputs.hex │ │ └── src │ │ │ ├── dory.c │ │ │ ├── layerAddRelu13.c │ │ │ ├── layerAddRelu5.c │ │ │ ├── layerAddRelu9.c │ │ │ ├── layerConvBNRelu0.c │ │ │ ├── layerConvBNRelu10.c │ │ │ ├── layerConvBNRelu11.c │ │ │ ├── layerConvBNRelu12.c │ │ │ ├── layerConvBNRelu2.c │ │ │ ├── layerConvBNRelu3.c │ │ │ ├── layerConvBNRelu4.c │ │ │ ├── layerConvBNRelu6.c │ │ │ ├── layerConvBNRelu7.c │ │ │ ├── layerConvBNRelu8.c │ │ │ ├── layerMatMul14_last.c │ │ │ ├── layerMaxPool1.c │ │ │ ├── main.c │ │ │ ├── mem_controller.c │ │ │ ├── network.c │ │ │ ├── pulp_nn_add.c │ │ │ ├── pulp_nn_avgpool.c │ │ │ ├── pulp_nn_conv_Co_parallel.c │ │ │ ├── pulp_nn_conv_HoWo_parallel.c │ │ │ ├── pulp_nn_conv_Ho_parallel.c │ │ │ ├── pulp_nn_depthwise_3x3_s1.c │ │ │ ├── pulp_nn_depthwise_generic.c │ │ │ ├── pulp_nn_depthwise_generic_less_4_weights.c │ │ │ ├── pulp_nn_linear.c │ │ │ ├── pulp_nn_linear_out_32.c │ │ │ ├── pulp_nn_matmul.c │ │ │ ├── pulp_nn_maxpool.c │ │ │ ├── pulp_nn_pointwise_Co_parallel.c │ │ │ ├── pulp_nn_pointwise_HoWo_parallel.c │ │ │ ├── pulp_nn_pointwise_Ho_parallel.c │ │ │ └── pulp_nn_utils.c │ └── Makefile │ └── tiny-pulp-dronet-v3 │ ├── DORY_network │ ├── ConvBNRelu0_weights.hex │ ├── ConvBNRelu11_weights.hex │ ├── ConvBNRelu13_weights.hex │ ├── ConvBNRelu3_weights.hex │ ├── ConvBNRelu5_weights.hex │ ├── ConvBNRelu7_weights.hex │ ├── ConvBNRelu9_weights.hex │ ├── ConvDWBNRelu10_weights.hex │ ├── ConvDWBNRelu12_weights.hex │ ├── ConvDWBNRelu2_weights.hex │ ├── ConvDWBNRelu4_weights.hex │ ├── ConvDWBNRelu6_weights.hex │ ├── ConvDWBNRelu8_weights.hex │ ├── MatMul14_weights.hex │ ├── inc │ │ ├── dory.h │ │ ├── layerConvBNRelu0.h │ │ ├── layerConvBNRelu11.h │ │ ├── layerConvBNRelu13.h │ │ ├── layerConvBNRelu3.h │ │ ├── layerConvBNRelu7.h │ │ ├── layerConvBNRelu9.h │ │ ├── layerConvDWBNRelu10.h │ │ ├── layerConvDWBNRelu12.h │ │ ├── layerConvDWBNRelu2.h │ │ ├── layerConvDWBNRelu4.h │ │ ├── layerConvDWBNRelu6.h │ │ ├── layerConvDWBNRelu8.h │ │ ├── layerMatMul14_last.h │ │ ├── layerMaxPool1.h │ │ ├── mchan_test.h │ │ ├── mem_controller.h │ │ ├── network.h │ │ ├── pulp_nn_kernels.h │ │ └── pulp_nn_utils.h │ ├── inputs.hex │ └── src │ │ ├── dory.c │ │ ├── layerConvBNRelu0.c │ │ ├── layerConvBNRelu11.c │ │ ├── layerConvBNRelu13.c │ │ ├── layerConvBNRelu3.c │ │ ├── layerConvBNRelu7.c │ │ ├── layerConvBNRelu9.c │ │ ├── layerConvDWBNRelu10.c │ │ ├── layerConvDWBNRelu12.c │ │ ├── layerConvDWBNRelu2.c │ │ ├── layerConvDWBNRelu4.c │ │ ├── layerConvDWBNRelu6.c │ │ ├── layerConvDWBNRelu8.c │ │ ├── layerMatMul14_last.c │ │ ├── layerMaxPool1.c │ │ ├── main.c │ │ ├── mem_controller.c │ │ ├── network.c │ │ ├── pulp_nn_add.c │ │ ├── pulp_nn_avgpool.c │ │ ├── pulp_nn_conv_Co_parallel.c │ │ ├── pulp_nn_conv_HoWo_parallel.c │ │ ├── pulp_nn_conv_Ho_parallel.c │ │ ├── pulp_nn_depthwise_3x3_s1.c │ │ ├── pulp_nn_depthwise_generic.c │ │ ├── pulp_nn_depthwise_generic_less_4_weights.c │ │ ├── pulp_nn_linear.c │ │ ├── pulp_nn_linear_out_32.c │ │ ├── pulp_nn_matmul.c │ │ ├── pulp_nn_maxpool.c │ │ ├── pulp_nn_pointwise_Co_parallel.c │ │ ├── pulp_nn_pointwise_HoWo_parallel.c │ │ ├── pulp_nn_pointwise_Ho_parallel.c │ │ └── pulp_nn_utils.c │ └── Makefile ├── imgs └── dataset.jpg ├── model ├── dronet_v3.py ├── pulp-dronet-v3-resblock-1.0.pth └── tiny-pulp-dronet-v3-dw-pw-0.125.pth ├── nemo-dory └── quantize.py ├── scripts.sh ├── testing.py ├── training.py ├── training └── .gitkeep └── utility.py /.gitignore: -------------------------------------------------------------------------------- 1 | # my folders 2 | *checkpoints/ 3 | *nemo_output/ 4 | *bin/ 5 | runs/ 6 | logs/ 7 | tiny-pulp-dronet-v3/dataset/ 8 | tiny-pulp-dronet-v3/training/ 9 | 10 | # Byte-compiled / optimized / DLL files 11 | __pycache__/ 12 | *.py[cod] 13 | *$py.class 14 | 15 | # C extensions 16 | *.so 17 | 18 | # Distribution / packaging 19 | .Python 20 | build/ 21 | develop-eggs/ 22 | dist/ 23 | downloads/ 24 | eggs/ 25 | .eggs/ 26 | lib/ 27 | lib64/ 28 | parts/ 29 | sdist/ 30 | var/ 31 | wheels/ 32 | *.egg-info/ 33 | .installed.cfg 34 | *.egg 35 | MANIFEST 36 | 37 | # PyInstaller 38 | # Usually these files are written by a python script from a template 39 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 40 | *.manifest 41 | *.spec 42 | 43 | # Installer logs 44 | pip-log.txt 45 | pip-delete-this-directory.txt 46 | 47 | # Unit test / coverage reports 48 | htmlcov/ 49 | .tox/ 50 | .coverage 51 | .coverage.* 52 | .cache 53 | nosetests.xml 54 | coverage.xml 55 | *.cover 56 | .hypothesis/ 57 | .pytest_cache/ 58 | 59 | # Translations 60 | *.mo 61 | *.pot 62 | 63 | # Django stuff: 64 | *.log 65 | local_settings.py 66 | db.sqlite3 67 | 68 | # Flask stuff: 69 | instance/ 70 | .webassets-cache 71 | 72 | # Scrapy stuff: 73 | .scrapy 74 | 75 | # Sphinx documentation 76 | docs/_build/ 77 | 78 | # PyBuilder 79 | target/ 80 | 81 | # Jupyter Notebook 82 | .ipynb_checkpoints 83 | 84 | # pyenv 85 | .python-version 86 | 87 | # celery beat schedule file 88 | celerybeat-schedule 89 | 90 | # SageMath parsed files 91 | *.sage.py 92 | 93 | # Environments 94 | .env 95 | .venv 96 | env/ 97 | venv/ 98 | ENV/ 99 | env.bak/ 100 | venv.bak/ 101 | 102 | # Spyder project settings 103 | .spyderproject 104 | .spyproject 105 | 106 | # Rope project settings 107 | .ropeproject 108 | 109 | # mkdocs documentation 110 | /site 111 | 112 | # mypy 113 | .mypy_cache/ -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "dataset/Himax_Dataset"] 2 | path = pulp-dronet-v1/dataset/Himax_Dataset 3 | url = https://github.com/pulp-platform/Himax_Dataset.git 4 | [submodule "dataset/Udacity_Dataset"] 5 | path = pulp-dronet-v1/dataset/Udacity_Dataset 6 | url = https://github.com/pulp-platform/Udacity_Dataset.git 7 | [submodule "dataset/Zurich_Bicycle_Dataset"] 8 | path = pulp-dronet-v1/dataset/Zurich_Bicycle_Dataset 9 | url = https://github.com/pulp-platform/Zurich_Bicycle_Dataset.git 10 | [submodule "src/autotiler"] 11 | path = pulp-dronet-v1/src/autotiler 12 | url = https://github.com/pulp-platform/autotiler.git 13 | [submodule "tiny-pulp-dronet-v3/nemo-dory/nemo"] 14 | path = tiny-pulp-dronet-v3/nemo-dory/nemo 15 | url = git@github.com:LorenzoLamberti94/nemo.git 16 | [submodule "tiny-pulp-dronet-v3/nemo-dory/dory"] 17 | path = tiny-pulp-dronet-v3/nemo-dory/dory 18 | url = git@github.com:LorenzoLamberti94/dory_dronet.git 19 | [submodule "dataset_collection_framework/crazyflie_firmware_patches/crazyflie-firmware-modified-dataset"] 20 | path = dataset_collection_framework/crazyflie_firmware_patches/crazyflie-firmware-modified-dataset 21 | url = git@github.com:LorenzoLamberti94/crazyflie-firmware-modified-dataset.git 22 | [submodule "tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/viewer-pulp-dronet"] 23 | path = tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/viewer-pulp-dronet 24 | url = https://github.com/LorenzoLamberti94/viewer-pulp-dronet 25 | -------------------------------------------------------------------------------- /dataset_collection_framework/GAP8_streamer/inc/frame_streamer.h: -------------------------------------------------------------------------------- 1 | /*----------------------------------------------------------------------------- 2 | Copyright (C) 2024 University of Bologna, Italy, ETH Zurich, Switzerland. 3 | All rights reserved. 4 | 5 | Licensed under the Apache License, Version 2.0 (the "License"); 6 | you may not use this file except in compliance with the License. 7 | See LICENSE in the top directory for details. 8 | You may obtain a copy of the License at 9 | 10 | http://www.apache.org/licenses/LICENSE-2.0 11 | 12 | Unless required by applicable law or agreed to in writing, software 13 | distributed under the License is distributed on an "AS IS" BASIS, 14 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | See the License for the specific language governing permissions and 16 | limitations under the License. 17 | 18 | File: frame_streamer.h 19 | Author: Lorenzo Lamberti 20 | Date: 01.03.2024 21 | -------------------------------------------------------------------------------*/ 22 | 23 | #ifndef __TOOLS__FRAME_STREAMER_H__ 24 | #define __TOOLS__FRAME_STREAMER_H__ 25 | 26 | #include 27 | #include 28 | #include 29 | #include "gaplib/jpeg_encoder.h" 30 | #include "bsp/transport.h" 31 | 32 | struct frame_streamer_conf { 33 | struct pi_device *transport; 34 | frame_streamer_format_e format; 35 | uint32_t width; 36 | uint32_t height; 37 | uint32_t depth; 38 | char *name; 39 | }; 40 | 41 | // ===================Added from frame_streamer.c ===================== 42 | typedef struct 43 | { 44 | jpeg_encoder_t encoder; 45 | pi_buffer_t bitstream; 46 | } frame_streamer_jpeg_t; 47 | 48 | typedef struct 49 | { 50 | struct pi_transport_header header; 51 | frame_streamer_open_req_t req; 52 | } frame_streamer_open_req_full_t; 53 | 54 | 55 | struct frame_streamer_s { 56 | struct pi_device *transport; 57 | frame_streamer_format_e format; 58 | int channel; 59 | struct pi_transport_header header; 60 | frame_streamer_open_req_full_t req; 61 | frame_streamer_jpeg_t *jpeg; 62 | unsigned int height; 63 | unsigned int width; 64 | }; 65 | 66 | // ===================Added from frame_streamer.c ===================== 67 | 68 | typedef struct frame_streamer_s frame_streamer_t; 69 | 70 | 71 | int frame_streamer_conf_init(struct frame_streamer_conf *conf); 72 | 73 | frame_streamer_t *frame_streamer_open(struct frame_streamer_conf *conf); 74 | 75 | int frame_streamer_send_async(frame_streamer_t *streamer, pi_buffer_t *buffer, pi_task_t *task); 76 | 77 | int frame_streamer_send(frame_streamer_t *streamer, pi_buffer_t *buffer); 78 | 79 | #endif 80 | -------------------------------------------------------------------------------- /dataset_collection_framework/GAP8_streamer/wifi_jpeg_streamer/Makefile: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2024 University of Bologna, Italy, ETH Zurich, Switzerland. 2 | # All rights reserved. 3 | 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # See LICENSE in the top directory for details. 7 | # You may obtain a copy of the License at 8 | 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, 13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | # See the License for the specific language governing permissions and 15 | # limitations under the License. 16 | 17 | # File: Makefile 18 | # Author: Lorenzo Lamberti 19 | # Date: 01.03.2024 20 | 21 | APP = wifi_frame_streamer 22 | APP_SRCS += wifi_frame_streamer.c 23 | 24 | APP_CFLAGS += -O3 -g 25 | 26 | APP_LDFLAGS += -lgaptools -lgaplib -lm 27 | 28 | RUNNER_CONFIG = $(CURDIR)/config.ini 29 | 30 | APP_SRCS := $(filter-out $(GAP_SDK_HOME)/tools/gap_tools/frame_streamer/frame_streamer.c, $(APP_SRCS)) 31 | APP_INC := $(filter-out $(GAP_SDK_HOME)/home/bitcraze/gap_sdk/tools/gap_tools/include/tools, $(APP_INC)) 32 | APP_INC := $(filter-out $(wildcard *frame_streamer.h), $(APP_INC)) 33 | 34 | include $(RULES_DIR)/pmsis_rules.mk 35 | -------------------------------------------------------------------------------- /dataset_collection_framework/GAP8_streamer/wifi_jpeg_streamer/config.ini: -------------------------------------------------------------------------------- 1 | [board.devices.nina_w10] 2 | include = devices/nina_w10.json 3 | interface = spim1 4 | cs = 0 5 | gpio_ready = gpio18 6 | config.gpio_ready = gpio18 7 | 8 | 9 | [config] 10 | runner.peripherals=true -------------------------------------------------------------------------------- /dataset_collection_framework/conda_deps.yml: -------------------------------------------------------------------------------- 1 | name: dataset_collection_framework 2 | channels: 3 | - defaults 4 | dependencies: 5 | - _libgcc_mutex=0.1=main 6 | - ca-certificates=2021.1.19 7 | - certifi=2020.12.5 8 | - ld_impl_linux-64=2.33.1 9 | - libedit=3.1.20191231 10 | - libffi=3.3 11 | - libgcc-ng=9.1.0 12 | - libstdcxx-ng=9.1.0 13 | - ncurses=6.2 14 | - openssl=1.1.1j 15 | - pip=21.0.1 16 | - python=3.8.8 17 | - readline=8.1 18 | - setuptools=52.0.0 19 | - sqlite=3.33.0 20 | - tk=8.6.10 21 | - wheel=0.36.2 22 | - xz=5.2.5 23 | - zlib=1.2.11 24 | - pip: 25 | - brotli==1.0.9 26 | - cflib==0.1.15.0 27 | - click==7.1.2 28 | - csnake==0.3.1 29 | - cycler==0.10.0 30 | - dash==1.19.0 31 | - dash-core-components==1.15.0 32 | - dash-html-components==1.1.2 33 | - dash-renderer==1.9.0 34 | - dash-table==4.11.2 35 | - flask==1.1.2 36 | - flask-compress==1.9.0 37 | - future==0.18.2 38 | - "git+https://github.com/bitcraze/crazyflie-clients-python.git@f25f72d3e8ed1e571f349ac4c2f7b9c254d4f039" 39 | - itsdangerous==1.1.0 40 | - jinja2==2.11.3 41 | - kiwisolver==1.3.1 42 | - markupsafe==1.1.1 43 | - matplotlib==3.4.1 44 | - numpy==1.19.2 45 | - opencv-python==4.5.1.48 46 | - pandas==1.2.3 47 | - pbkdf2==1.3 48 | - pillow==8.1.2 49 | - plotly==4.14.3 50 | - pygame==2.0.1 51 | - pyparsing==2.4.7 52 | - pyqt5==5.15.2 53 | - pyqt5-plugins==5.15.2.2.1.0 54 | - pyqt5-sip==12.8.1 55 | - pyqt5-tools==5.15.2.3.0.2 56 | - pyqtgraph==0.12.1 57 | - python-dateutil==2.8.1 58 | - python-dotenv==0.17.0 59 | - pytz==2021.1 60 | - pyusb==1.1.1 61 | - qled==1.3.1 62 | - qt5-applications==5.15.2.2.1 63 | - qt5-tools==5.15.2.1.0.1 64 | - retrying==1.3.3 65 | - six==1.15.0 66 | - werkzeug==1.0.1 67 | -------------------------------------------------------------------------------- /dataset_collection_framework/crazyflie_firmware_patches/dataset_collection_app/Makefile: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2024 University of Bologna, Italy, ETH Zurich, Switzerland. 2 | # All rights reserved. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # See LICENSE in the top directory for details. 7 | # You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, 13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | # See the License for the specific language governing permissions and 15 | # limitations under the License. 16 | # 17 | # File: Makefile 18 | # Author: Lorenzo Lamberti 19 | # Daniel Rieben 20 | # Date: 01.03.2024 21 | 22 | # Add folder to the path 23 | CRAZYFLIE_BASE = ../../external/crazyflie-firmware 24 | VPATH += $(CRAZYFLIE_BASE)/../../crazyflie_firmware_patches/dataset_collection_app 25 | 26 | # Load the drivers/files used for the data set collector (if you want to load more than one deck change deck_info.c) 27 | CFLAGS += -DDECK_FORCE=datasetCollectorDriver 28 | PROJ_OBJ += datasetcollector.o 29 | 30 | DEBUG=1 31 | 32 | # Some firmware changes are required so the original files from the crazyflie-firmware are excluded 33 | # and the modified ones are added (add one line for each) 34 | INCLUDES := $(filter-out -I$(CRAZYFLIE_BASE)/src/modules/interface/log.h, $(INCLUDES)) 35 | SRC_FILES := $(filter-out $(CRAZYFLIE_BASE)/src/modules/src/log.c, $(SRC_FILES)) 36 | # Add the modified files 37 | VPATH += $(CRAZYFLIE_BASE)/../../crazyflie_firmware_patches/crazyflie-firmware-modified-dataset 38 | 39 | include $(CRAZYFLIE_BASE)/Makefile 40 | -------------------------------------------------------------------------------- /dataset_collection_framework/crazyflie_firmware_patches/dataset_collection_app/current_platform.mk: -------------------------------------------------------------------------------- 1 | PLATFORM=cf2 2 | -------------------------------------------------------------------------------- /dataset_collection_framework/crazyflie_firmware_patches/dataset_collection_app/datasetcollector.h: -------------------------------------------------------------------------------- 1 | /*----------------------------------------------------------------------------- 2 | Copyright (C) 2024 University of Bologna, Italy, ETH Zurich, Switzerland. 3 | All rights reserved. 4 | 5 | Licensed under the Apache License, Version 2.0 (the "License"); 6 | you may not use this file except in compliance with the License. 7 | See LICENSE in the top directory for details. 8 | You may obtain a copy of the License at 9 | 10 | http://www.apache.org/licenses/LICENSE-2.0 11 | 12 | Unless required by applicable law or agreed to in writing, software 13 | distributed under the License is distributed on an "AS IS" BASIS, 14 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | See the License for the specific language governing permissions and 16 | limitations under the License. 17 | 18 | File: datasetcollector.h 19 | Author: Lorenzo Lamberti 20 | Daniel Rieben 21 | Date: 01.03.2024 22 | -------------------------------------------------------------------------------*/ 23 | 24 | #ifndef DATASETCOLLECTOR_H_ 25 | #define DATASETCOLLECTOR_H_ 26 | 27 | #include 28 | 29 | unsigned int get_dataset_collector_timestamp(void); 30 | 31 | 32 | #endif /* DATASETCOLLECTOR_H_ */ 33 | -------------------------------------------------------------------------------- /dataset_collection_framework/dataset_collector_python/DatasetLogger.py: -------------------------------------------------------------------------------- 1 | #-----------------------------------------------------------------------------# 2 | # Copyright(C) 2024 University of Bologna, Italy, ETH Zurich, Switzerland. # 3 | # All rights reserved. # 4 | # # 5 | # Licensed under the Apache License, Version 2.0 (the "License"); # 6 | # you may not use this file except in compliance with the License. # 7 | # See LICENSE in the top directory for details. # 8 | # You may obtain a copy of the License at # 9 | # # 10 | # http://www.apache.org/licenses/LICENSE-2.0 # 11 | # # 12 | # Unless required by applicable law or agreed to in writing, software # 13 | # distributed under the License is distributed on an "AS IS" BASIS, # 14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 15 | # See the License for the specific language governing permissions and # 16 | # limitations under the License. # 17 | # # 18 | # File: DatasetLogger.py # 19 | # Authors: # 20 | # Lorenzo Lamberti # 21 | # Daniel Rieben # 22 | # Date: 01.03.2024 # 23 | #-----------------------------------------------------------------------------# 24 | 25 | from cflib.crazyflie.log import LogConfig, LogVariable, LogTocElement 26 | import logging 27 | from typing import List 28 | 29 | class DatasetLogger: 30 | def __init__(self, log_configs: List[LogConfig], name="DatasetLogger"): 31 | super().__init__() 32 | self.logger = logging.getLogger(name) 33 | self.streamHandler = logging.StreamHandler() 34 | self.streamHandler.setLevel(logging.INFO) 35 | format_str = "" 36 | for config in log_configs: 37 | var : LogVariable 38 | for var in config.variables: 39 | type = LogTocElement.get_cstring_from_id(var.fetch_as) 40 | print(var) 41 | 42 | self.formatter = logging.Formatter() 43 | 44 | 45 | if __name__ == "__main__": 46 | lg_stab = LogConfig(name='Stabilizer', period_in_ms=500) # Log.c changed s.t. 500 = 50ms 47 | lg_stab.add_variable('stabilizer.roll', 'float') 48 | lg_stab.add_variable('stabilizer.pitch', 'float') 49 | lg_stab.add_variable('stabilizer.yaw', 'float') 50 | lg_stab.add_variable('stabilizer.thrust', 'float') 51 | lg_stab.add_variable('range.front', 'uint16_t') 52 | logger = DatasetLogger([lg_stab]) 53 | -------------------------------------------------------------------------------- /dataset_collection_framework/dataset_collector_python/UI/coordinate_system.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/dataset_collection_framework/dataset_collector_python/UI/coordinate_system.jpg -------------------------------------------------------------------------------- /dataset_collection_framework/dataset_collector_python/UI/create_ui_python_code.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | pyuic5 -o datasetcollector_ui.py datasetcollector.ui 4 | pyuic5 -o logConfigDialog.py logConfigDialog.ui 5 | pyuic5 -o controlConfigDialog.py controlConfigDialog.ui -------------------------------------------------------------------------------- /dataset_collection_framework/dataset_collector_python/control_config.json: -------------------------------------------------------------------------------- 1 | {"axis": {"3": ["yaw", 1.0], "5": ["thrust", 1.0], "1": ["pitch", -1.0], "0": ["roll", -1.0]}, "button": {"5": ["assist_mode", 1]}, "hat": {}, "ball": {}} -------------------------------------------------------------------------------- /dataset_collection_framework/dataset_collector_python/dataset_tools/UI/create_ui_python_code.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | pyuic5 -o imageViewerUI.py imageViewer.ui -------------------------------------------------------------------------------- /dataset_collection_framework/dataset_collector_python/dataset_tools/count_images_dataset.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | for f in *; do [ -d ./"$f" ] && find ./"$f" -maxdepth 1 -exec echo \; | wc -l && echo $f; done 3 | 4 | -------------------------------------------------------------------------------- /dataset_collection_framework/dataset_collector_python/dataset_tools/save_all_videos.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | conda activate dataset 3 | python image_viewer_cv.py --video --folder=acquisition1 4 | python image_viewer_cv.py --video --folder=acquisition2 5 | python image_viewer_cv.py --video --folder=acquisition3 6 | python image_viewer_cv.py --video --folder=acquisition4 7 | python image_viewer_cv.py --video --folder=acquisition5 8 | python image_viewer_cv.py --video --folder=acquisition6 9 | python image_viewer_cv.py --video --folder=acquisition7 10 | python image_viewer_cv.py --video --folder=acquisition8 11 | python image_viewer_cv.py --video --folder=acquisition9 12 | python image_viewer_cv.py --video --folder=acquisition10 13 | python image_viewer_cv.py --video --folder=acquisition11 14 | python image_viewer_cv.py --video --folder=acquisition12 15 | python image_viewer_cv.py --video --folder=acquisition13 16 | python image_viewer_cv.py --video --folder=acquisition14 17 | python image_viewer_cv.py --video --folder=acquisition15 18 | python image_viewer_cv.py --video --folder=acquisition16 19 | python image_viewer_cv.py --video --folder=acquisition17 20 | python image_viewer_cv.py --video --folder=acquisition18 21 | python image_viewer_cv.py --video --folder=acquisition19 22 | python image_viewer_cv.py --video --folder=acquisition20 23 | python image_viewer_cv.py --video --folder=acquisition21 24 | python image_viewer_cv.py --video --folder=acquisition22 25 | python image_viewer_cv.py --video --folder=acquisition23 26 | python image_viewer_cv.py --video --folder=acquisition24 27 | python image_viewer_cv.py --video --folder=acquisition25 28 | python image_viewer_cv.py --video --folder=acquisition26 29 | python image_viewer_cv.py --video --folder=acquisition27 30 | python image_viewer_cv.py --video --folder=acquisition28 31 | python image_viewer_cv.py --video --folder=acquisition29 32 | python image_viewer_cv.py --video --folder=acquisition30 33 | python image_viewer_cv.py --video --folder=acquisition31 34 | python image_viewer_cv.py --video --folder=acquisition32 35 | python image_viewer_cv.py --video --folder=acquisition33 36 | python image_viewer_cv.py --video --folder=acquisition34 37 | python image_viewer_cv.py --video --folder=acquisition35 38 | python image_viewer_cv.py --video --folder=acquisition36 39 | python image_viewer_cv.py --video --folder=acquisition37 40 | python image_viewer_cv.py --video --folder=acquisition38 41 | python image_viewer_cv.py --video --folder=acquisition39 42 | python image_viewer_cv.py --video --folder=acquisition40 43 | python image_viewer_cv.py --video --folder=acquisition41 44 | python image_viewer_cv.py --video --folder=acquisition42 45 | python image_viewer_cv.py --video --folder=acquisition43 46 | python image_viewer_cv.py --video --folder=acquisition44 47 | python image_viewer_cv.py --video --folder=acquisition45 48 | python image_viewer_cv.py --video --folder=acquisition46 49 | python image_viewer_cv.py --video --folder=acquisition47 50 | python image_viewer_cv.py --video --folder=acquisition48 51 | python image_viewer_cv.py --video --folder=acquisition49 52 | python image_viewer_cv.py --video --folder=acquisition50 53 | python image_viewer_cv.py --video --folder=acquisition51 54 | python image_viewer_cv.py --video --folder=acquisition52 55 | python image_viewer_cv.py --video --folder=acquisition53 56 | python image_viewer_cv.py --video --folder=acquisition55 57 | conda deactivate 58 | 59 | -------------------------------------------------------------------------------- /dataset_collection_framework/dataset_collector_python/default_config.json: -------------------------------------------------------------------------------- 1 | {"DroneState": "{\"sample_period_ms\": 10, \"total_byte_size\": 16, \"variables\": {\"stabilizer.roll\": {\"ident\": 104, \"ctype\": \"float\", \"pytype\": \" # 21 | # Daniel Rieben # 22 | # Date: 01.03.2024 # 23 | #-----------------------------------------------------------------------------# 24 | 25 | from PIL import Image, ImageDraw, ImageFont 26 | import numpy as np 27 | import matplotlib.pyplot as plt 28 | from csnake import CodeWriter, Variable, FormattedLiteral 29 | 30 | 31 | digits = [str(digit) for digit in range(10)] 32 | 33 | img_arrays = [] 34 | font = ImageFont.truetype(r"/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf", 12) 35 | for digit in digits: 36 | img = Image.new('L', (10, 11), color=(0,)) 37 | draw = ImageDraw.Draw(img) 38 | draw.text((1, -2), digit, (255,), font=font) 39 | img_array = np.array(img) 40 | # plt.imshow(img_array, cmap='gray') 41 | # plt.show() 42 | img_arrays.append(img_array) 43 | 44 | digit_imgs = np.array(img_arrays) 45 | digits_var = Variable( 46 | "digits_imgs", 47 | primitive="uint8_t", 48 | value=np.array(img_arrays) 49 | ) 50 | cw = CodeWriter() 51 | cw.add_variable_initialization(digits_var) 52 | print(cw) -------------------------------------------------------------------------------- /dataset_collection_framework/external/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/dataset_collection_framework/external/.gitkeep -------------------------------------------------------------------------------- /dataset_collection_framework/images/LED_correct_synch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/dataset_collection_framework/images/LED_correct_synch.png -------------------------------------------------------------------------------- /dataset_collection_framework/images/Log_config.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/dataset_collection_framework/images/Log_config.png -------------------------------------------------------------------------------- /dataset_collection_framework/images/gamepad_mapping.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/dataset_collection_framework/images/gamepad_mapping.png -------------------------------------------------------------------------------- /dataset_collection_framework/images/gui_connected_with_comments.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/dataset_collection_framework/images/gui_connected_with_comments.png -------------------------------------------------------------------------------- /dataset_visualizer/README.md: -------------------------------------------------------------------------------- 1 | # Dataset visualizer 2 | 3 |

4 | 5 | 6 |

7 | 8 |

Left: the dataset_visualizer. Right: the dataset visualizer "grid view".

9 | 10 | 11 | This tool allows for: 12 | * visualization of all the images of the dataset 13 | * changing labels manually, if you spot errors 14 | * visualize and modify the metadata of the acquisition folders 15 | * generate videos of the acquisition sequencies, including images and labels. 16 | 17 | ## Setup 18 | 19 | Create conda env: 20 | ```bash 21 | conda create -n dataset_visualizer python 22 | conda activate dataset_visualizer 23 | ``` 24 | 25 | Install dataset_visualizer local package: 26 | ```bash 27 | cd pulp-dronet/dataset_visualizer/ 28 | pip install -e . 29 | ``` 30 | 31 | ## How to use the dataset visualizer 32 | 33 | Refer to `main.py` for the dataset visualizer. Example: 34 | 35 | ```bash 36 | cd dataset_visualizer/ 37 | python main.py --dataset_path=../../pulp-dronet/tiny-pulp-dronet-v3/dataset/testing/lorenzo_lamberti/dataset-session1 --acquisition=acquisition1 38 | ``` 39 | 40 | Additional options: 41 | ```bash 42 | --video : genetare a video with opencv of the acquisition folder (images + labels) 43 | --framerate : set the framerate of the video [frames/s] 44 | --mark_collision : mark all images in this acquisition folder as collision 45 | --mark_no_collision : mark all images in this acquisition folder as no collision 46 | ``` 47 | 48 | **How to use the GUI:** 49 | * Use 'a' and 'd' to switch to previous/next image. 50 | * Use 'w' to mark collision. 51 | * Use 's' to mark no collision. 52 | * Use 'i' to delete an erroneous yaw rate 53 | * Use 'l' to go left 54 | * Use 'r' to go right 55 | * Use 'q' to delete the image from the dataset (it won't be displayed next time the program is started) 56 | * Use 'e' to un-delete the image 57 | 58 | Everything is saved as soon as you change the value. 59 | 60 | 61 | **Bonus** 62 | If you want faster image visualization use opencv only: 63 | 64 | ```bash 65 | cd dataset_visualizer/ 66 | python imave_visualizer.py --dataset_path=../../pulp-dronet/tiny-pulp-dronet-v3/dataset/testing/lorenzo_lamberti/dataset-session1 --acquisition=acquisition1 67 | ``` -------------------------------------------------------------------------------- /dataset_visualizer/dataset_visualizer/stats_config.json: -------------------------------------------------------------------------------- 1 | { 2 | "Scenario": {"Indoor":0,"Outdoor":0}, 3 | "Path": {"Straight":0, "Turn":0, "Mixed":0}, 4 | "Obstacles": {"None":0, "Pedestrians":0, "Objects":0}, 5 | "Height": {"0.5m":0, "1m":0, "1.5m":0}, 6 | "Behaviour": {"Overpassing":0, "StandStill": 0, "N/A":0}, 7 | "Light": {"Bright":0, "Dark": 0, "Normal":0, "Mixed":0}, 8 | "No_Images": 0 9 | } 10 | -------------------------------------------------------------------------------- /dataset_visualizer/imgs/dataset_visualizer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/dataset_visualizer/imgs/dataset_visualizer.png -------------------------------------------------------------------------------- /dataset_visualizer/imgs/dataset_visualizer_grid_view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/dataset_visualizer/imgs/dataset_visualizer_grid_view.png -------------------------------------------------------------------------------- /dataset_visualizer/setup.py: -------------------------------------------------------------------------------- 1 | #-----------------------------------------------------------------------------# 2 | # Copyright(C) 2024 University of Bologna, Italy, ETH Zurich, Switzerland. # 3 | # All rights reserved. # 4 | # # 5 | # Licensed under the Apache License, Version 2.0 (the "License"); # 6 | # you may not use this file except in compliance with the License. # 7 | # See LICENSE in the top directory for details. # 8 | # You may obtain a copy of the License at # 9 | # # 10 | # http://www.apache.org/licenses/LICENSE-2.0 # 11 | # # 12 | # Unless required by applicable law or agreed to in writing, software # 13 | # distributed under the License is distributed on an "AS IS" BASIS, # 14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 15 | # See the License for the specific language governing permissions and # 16 | # limitations under the License. # 17 | # # 18 | # File: setup.py # 19 | # Authors: # 20 | # Michal Barcis # 21 | # Lorenzo Lamberti # 22 | # Date: 01.03.2024 # 23 | #-----------------------------------------------------------------------------# 24 | 25 | from distutils.core import setup 26 | 27 | setup(name='dataset_visualizer', 28 | version='1.0', 29 | description='A Python package used to visualize the dataset of the PULP-DroNet project', 30 | packages=['dataset_visualizer'], 31 | install_requires=[ 32 | 'opencv-python>=4.5.3.56', 33 | 'tk>=0.1.0', 34 | 'pandas>=1.2.3', 35 | 'pillow>=8.1.2', 36 | ], 37 | ) -------------------------------------------------------------------------------- /imgs/PULP_drone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/imgs/PULP_drone.png -------------------------------------------------------------------------------- /imgs/pulp_dronet_evolution.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/imgs/pulp_dronet_evolution.png -------------------------------------------------------------------------------- /pulp-dronet-v1/.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | end_of_line = lf 5 | insert_final_newline = true 6 | indent_style = tab 7 | indent_size = 4 8 | 9 | -------------------------------------------------------------------------------- /pulp-dronet-v1/LICENSE_README.md: -------------------------------------------------------------------------------- 1 | The project's structure is the following: 2 | 3 | ``` 4 | ├── pulp-dronet-v1/ 5 | │ ├── bin/ 6 | │ │ ├── PULPDroNet_GAPuino 7 | │ │ ├── PULPDroNet_PULPShield 8 | │ ├── dataset/ 9 | │ │ ├── Himax_Dataset/ 10 | │ │ ├── Udacity_Dataset/ 11 | │ │ ├── Zurich_Bicycle_Dataset/ 12 | │ ├── imgs/ 13 | │ │ ├── PULP_dataset.png 14 | │ │ ├── PULP_drone.png 15 | │ │ ├── PULP_proto.png 16 | │ │ ├── PULP_setup.png 17 | │ ├── PULP-Shield/ 18 | │ │ ├── GAP8/ 19 | │ │ ├── jtag-convboard/ 20 | │ ├── src/ 21 | │ │ ├── autotiler/ 22 | │ │ ├── config.h 23 | │ │ ├── config.ini 24 | │ │ ├── PULPDronet.c 25 | │ │ ├── PULPDronetGenerator.c 26 | │ │ ├── PULPDronetKernels.c 27 | │ │ ├── PULPDronetKernels.h 28 | │ │ ├── PULPDronetKernelsInit.c 29 | │ │ ├── PULPDronetKernelsInit.h 30 | │ │ ├── Makefile 31 | │ │ ├── run_dataset.sh 32 | │ ├── weights/ 33 | │ │ ├── binary/ 34 | │ │ ├── WeightsPULPDroNet.raw 35 | │ ├── LICENSE.apache.md 36 | │ ├── LICENSE_README.md 37 | │ ├── README.md 38 | ``` 39 | 40 | All the folders, sub-folders and files in this project except for the content of the following two folders: 41 | 42 | * `pulp-dronet-v1/dataset/Udacity_Dataset` 43 | * `pulp-dronet-v1/dataset/Zurich_Bicycle_Dataset` 44 | 45 | are released open-source with the Apache 2.0 license. 46 | A copy of the Apache 2.0 license is included in `pulp-dronet\LICENSE.apache.md` and in `pulp-dronet-v1/dataset/Himax_Dataset/LICENSE.apache.md`. 47 | 48 | All the files in `pulp-dronet-v1/dataset/Udacity_Dataset` and `pulp-dronet-v1/dataset/Zurich_Bicycle_Dataset` are released with the MIT License included in the same folder as `LICENSE.mit.md`. 49 | -------------------------------------------------------------------------------- /pulp-dronet-v1/PULP-Shield/GAP8/BOM1.BomDoc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v1/PULP-Shield/GAP8/BOM1.BomDoc -------------------------------------------------------------------------------- /pulp-dronet-v1/PULP-Shield/GAP8/Doc/GAP_Shield.PDF: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v1/PULP-Shield/GAP8/Doc/GAP_Shield.PDF -------------------------------------------------------------------------------- /pulp-dronet-v1/PULP-Shield/GAP8/Fabrication/Assembly Drawings/AssemblyDrawings.PDF: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v1/PULP-Shield/GAP8/Fabrication/Assembly Drawings/AssemblyDrawings.PDF -------------------------------------------------------------------------------- /pulp-dronet-v1/PULP-Shield/GAP8/Fabrication/BOM/Purchasing List-BOM1.xls: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v1/PULP-Shield/GAP8/Fabrication/BOM/Purchasing List-BOM1.xls -------------------------------------------------------------------------------- /pulp-dronet-v1/PULP-Shield/GAP8/Fabrication/Gerber/PCB1-macro.APR_LIB: -------------------------------------------------------------------------------- 1 | G04:AMPARAMS|DCode=28|XSize=66.93mil|YSize=10.83mil|CornerRadius=1.95mil|HoleSize=0mil|Usage=FLASHONLY|Rotation=0.000|XOffset=0mil|YOffset=0mil|HoleType=Round|Shape=RoundedRectangle|* 2 | %AMROUNDEDRECTD28* 3 | 21,1,0.06693,0.00693,0,0,0.0* 4 | 21,1,0.06303,0.01083,0,0,0.0* 5 | 1,1,0.00390,0.03152,-0.00347* 6 | 1,1,0.00390,-0.03152,-0.00347* 7 | 1,1,0.00390,-0.03152,0.00347* 8 | 1,1,0.00390,0.03152,0.00347* 9 | % 10 | G04:AMPARAMS|DCode=29|XSize=66.93mil|YSize=10.83mil|CornerRadius=1.95mil|HoleSize=0mil|Usage=FLASHONLY|Rotation=90.000|XOffset=0mil|YOffset=0mil|HoleType=Round|Shape=RoundedRectangle|* 11 | %AMROUNDEDRECTD29* 12 | 21,1,0.06693,0.00693,0,0,90.0* 13 | 21,1,0.06303,0.01083,0,0,90.0* 14 | 1,1,0.00390,0.00347,0.03152* 15 | 1,1,0.00390,0.00347,-0.03152* 16 | 1,1,0.00390,-0.00347,-0.03152* 17 | 1,1,0.00390,-0.00347,0.03152* 18 | % 19 | G04:AMPARAMS|DCode=41|XSize=183.86mil|YSize=183.86mil|CornerRadius=3.19mil|HoleSize=0mil|Usage=FLASHONLY|Rotation=270.000|XOffset=0mil|YOffset=0mil|HoleType=Round|Shape=RoundedRectangle|* 20 | %AMROUNDEDRECTD41* 21 | 21,1,0.18386,0.17748,0,0,270.0* 22 | 21,1,0.17748,0.18386,0,0,270.0* 23 | 1,1,0.00638,-0.08874,-0.08874* 24 | 1,1,0.00638,-0.08874,0.08874* 25 | 1,1,0.00638,0.08874,0.08874* 26 | 1,1,0.00638,0.08874,-0.08874* 27 | % 28 | G04:AMPARAMS|DCode=42|XSize=69.69mil|YSize=13.58mil|CornerRadius=3.33mil|HoleSize=0mil|Usage=FLASHONLY|Rotation=0.000|XOffset=0mil|YOffset=0mil|HoleType=Round|Shape=RoundedRectangle|* 29 | %AMROUNDEDRECTD42* 30 | 21,1,0.06969,0.00693,0,0,0.0* 31 | 21,1,0.06303,0.01358,0,0,0.0* 32 | 1,1,0.00665,0.03152,-0.00347* 33 | 1,1,0.00665,-0.03152,-0.00347* 34 | 1,1,0.00665,-0.03152,0.00347* 35 | 1,1,0.00665,0.03152,0.00347* 36 | % 37 | G04:AMPARAMS|DCode=43|XSize=69.69mil|YSize=13.58mil|CornerRadius=3.33mil|HoleSize=0mil|Usage=FLASHONLY|Rotation=90.000|XOffset=0mil|YOffset=0mil|HoleType=Round|Shape=RoundedRectangle|* 38 | %AMROUNDEDRECTD43* 39 | 21,1,0.06969,0.00693,0,0,90.0* 40 | 21,1,0.06303,0.01358,0,0,90.0* 41 | 1,1,0.00665,0.00347,0.03152* 42 | 1,1,0.00665,0.00347,-0.03152* 43 | 1,1,0.00665,-0.00347,-0.03152* 44 | 1,1,0.00665,-0.00347,0.03152* 45 | % 46 | G04:AMPARAMS|DCode=77|XSize=181.1mil|YSize=181.1mil|CornerRadius=1.81mil|HoleSize=0mil|Usage=FLASHONLY|Rotation=270.000|XOffset=0mil|YOffset=0mil|HoleType=Round|Shape=RoundedRectangle|* 47 | %AMROUNDEDRECTD77* 48 | 21,1,0.18110,0.17748,0,0,270.0* 49 | 21,1,0.17748,0.18110,0,0,270.0* 50 | 1,1,0.00362,-0.08874,-0.08874* 51 | 1,1,0.00362,-0.08874,0.08874* 52 | 1,1,0.00362,0.08874,0.08874* 53 | 1,1,0.00362,0.08874,-0.08874* 54 | % 55 | G04:AMPARAMS|DCode=112|XSize=15.75mil|YSize=47.24mil|CornerRadius=1.97mil|HoleSize=0mil|Usage=FLASHONLY|Rotation=180.000|XOffset=0mil|YOffset=0mil|HoleType=Round|Shape=RoundedRectangle|* 56 | %AMROUNDEDRECTD112* 57 | 21,1,0.01575,0.04331,0,0,180.0* 58 | 21,1,0.01181,0.04724,0,0,180.0* 59 | 1,1,0.00394,-0.00591,0.02165* 60 | 1,1,0.00394,0.00591,0.02165* 61 | 1,1,0.00394,0.00591,-0.02165* 62 | 1,1,0.00394,-0.00591,-0.02165* 63 | % 64 | G04:AMPARAMS|DCode=123|XSize=21.65mil|YSize=53.15mil|CornerRadius=4.92mil|HoleSize=0mil|Usage=FLASHONLY|Rotation=180.000|XOffset=0mil|YOffset=0mil|HoleType=Round|Shape=RoundedRectangle|* 65 | %AMROUNDEDRECTD123* 66 | 21,1,0.02165,0.04331,0,0,180.0* 67 | 21,1,0.01181,0.05315,0,0,180.0* 68 | 1,1,0.00984,-0.00591,0.02165* 69 | 1,1,0.00984,0.00591,0.02165* 70 | 1,1,0.00984,0.00591,-0.02165* 71 | 1,1,0.00984,-0.00591,-0.02165* 72 | % 73 | -------------------------------------------------------------------------------- /pulp-dronet-v1/PULP-Shield/GAP8/Fabrication/Gerber/PCB1.EXTREP: -------------------------------------------------------------------------------- 1 | ------------------------------------------------------------------------------------------ 2 | Gerber File Extension Report For: PCB1.GBR 12.04.2019 15:31:55 3 | ------------------------------------------------------------------------------------------ 4 | 5 | 6 | ------------------------------------------------------------------------------------------ 7 | Layer Extension Layer Description 8 | ------------------------------------------------------------------------------------------ 9 | .GTO Top Overlay 10 | .GTP Top Paste 11 | .GTS Top Solder 12 | .GTL Top Layer 13 | .GP1 GND 14 | .GP2 POWER 15 | .GBL Bottom Layer 16 | .GBS Bottom Solder 17 | .GBP Bottom Paste 18 | .GBO Bottom Overlay 19 | ------------------------------------------------------------------------------------------ 20 | -------------------------------------------------------------------------------- /pulp-dronet-v1/PULP-Shield/GAP8/Fabrication/Gerber/PCB1.RUL: -------------------------------------------------------------------------------- 1 | DRC Rules Export File for PCB: H:\PCB-Reviews\2019\Daniele Palossi\gap_shield-release\PCB1.PcbDoc 2 | RuleKind=Clearance|RuleName=Clearance_1|Scope=Board|Minimum=0.00 3 | RuleKind=Clearance|RuleName=Clearance_pulp|Scope=Board|Minimum=3.94 4 | RuleKind=Clearance|RuleName=Clearance|Scope=Board|Minimum=3.94 5 | RuleKind=Width|RuleName=Width_PWR|Scope=Board|Minimum=5.91 6 | RuleKind=Width|RuleName=Width|Scope=Board|Minimum=3.94 7 | RuleKind=SolderMaskExpansion|RuleName=SolderMaskExpansion|Scope=Board|Minimum=2.95 8 | RuleKind=ShortCircuit|RuleName=ShortCircuit_variant_footprint|Scope=Board|Allowed=1 9 | RuleKind=ShortCircuit|RuleName=ShortCircuit|Scope=Board|Allowed=0 10 | RuleKind=MinimumAnnularRing|RuleName=MinimumAnnularRing|Scope=Board|Minimum=3.94 11 | -------------------------------------------------------------------------------- /pulp-dronet-v1/PULP-Shield/GAP8/Fabrication/NC Drill/PCB1-BoardEdgeRout.TXT: -------------------------------------------------------------------------------- 1 | M48 2 | ;Layer_Color=9474304 3 | ;FILE_FORMAT=2:5 4 | INCH,LZ 5 | T6F00S00C0.09449 6 | % 7 | G90 8 | G05 9 | T06 10 | G00X0099782Y-0016336 11 | M15 12 | G01X0101024Y-0015756 13 | G01X0101766Y-0015152 14 | G01X0113577Y-0003341 15 | G01X0114395Y-0002241 16 | G01X0114864Y-0000952 17 | G01X0114961Y0 18 | G01X0114961Y0074803 19 | G01X0114762Y007616 20 | G01X0114182Y0077402 21 | G01X0113577Y0078144 22 | G01X0101766Y0089955 23 | G01X0100666Y0090773 24 | G01X0099377Y0091242 25 | G01X0098425Y0091339 26 | G01X0092256Y0091339 27 | G01X0079318Y0109083 28 | G01X0078358Y0110062 29 | G01X0077157Y0110724 30 | G01X00755Y0111024 31 | G01X0034589Y0111024 32 | G01X0033233Y0110825 33 | G01X0031991Y0110245 34 | G01X0030745Y0109045 35 | G01X0018097Y0091339 36 | G01X0011811Y0091339 37 | G01X0010454Y009114 38 | G01X0009212Y009056 39 | G01X000847Y0089955 40 | G01X-0003341Y0078144 41 | G01X-0004159Y0077044 42 | G01X-0004627Y0075755 43 | G01X-0004724Y0074803 44 | G01X-0004724Y0 45 | G01X-0004525Y-0001357 46 | G01X-0003945Y-0002599 47 | G01X-0003341Y-0003341 48 | G01X000847Y-0015152 49 | G01X000957Y-001597 50 | G01X0010859Y-0016438 51 | G01X0011811Y-0016535 52 | G01X0098425Y-0016535 53 | G01X0099782Y-0016336 54 | M16 55 | M17 56 | M30 57 | -------------------------------------------------------------------------------- /pulp-dronet-v1/PULP-Shield/GAP8/Fabrication/NC Drill/PCB1.DRR: -------------------------------------------------------------------------------- 1 | ---------------------------------------------------------------------------------------------------------------------------------- 2 | NCDrill File Report For: PCB1.PcbDoc 12.04.2019 15:31:56 3 | ---------------------------------------------------------------------------------------------------------------------------------- 4 | 5 | Layer Pair : Top Layer to Bottom Layer 6 | ASCII RoundHoles File : PCB1.TXT 7 | 8 | Tool Hole Size Hole Tolerance Hole Type Hole Count Plated Tool Travel 9 | ---------------------------------------------------------------------------------------------------------------------------------- 10 | T1 8mil (0.2mm) Round 193 PTH 0.00inch (0.00mm) 11 | T2 24mil (0.6mm) Round 4 PTH 0.00inch (0.00mm) 12 | T3 28mil (0.7mm) Round 10 PTH 0.00inch (0.00mm) 13 | T4 35mil (0.89mm) Round 20 PTH 0.00inch (0.00mm) 14 | T5 63mil (1.6mm) Round 2 PTH 0.00inch (0.00mm) 15 | ---------------------------------------------------------------------------------------------------------------------------------- 16 | Totals 229 17 | 18 | Total Processing Time (hh:mm:ss) : 00:00:00 19 | -------------------------------------------------------------------------------- /pulp-dronet-v1/PULP-Shield/GAP8/Fabrication/NC Drill/PCB1.LDP: -------------------------------------------------------------------------------- 1 | Layer Pairs Export File for PCB: H:\PCB-Reviews\2019\Daniele Palossi\gap_shield-release\PCB1.PcbDoc 2 | LayersSetName=Top_Bot_Thru_Holes|DrillFile=pcb1.txt|DrillLayers=gtl,gp1,gp2,gbl 3 | -------------------------------------------------------------------------------- /pulp-dronet-v1/PULP-Shield/GAP8/Fabrication/Pick Place/Pick Place for PCB1.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v1/PULP-Shield/GAP8/Fabrication/Pick Place/Pick Place for PCB1.txt -------------------------------------------------------------------------------- /pulp-dronet-v1/PULP-Shield/GAP8/GAP_Shield.PrjPcbStructure: -------------------------------------------------------------------------------- 1 | Record=TopLevelDocument|FileName=GAPandPeripherals.SchDoc 2 | -------------------------------------------------------------------------------- /pulp-dronet-v1/PULP-Shield/GAP8/GAPandPeripherals.Harness: -------------------------------------------------------------------------------- 1 | Camera=PCLK,HSYNC,VSYNC,D0,D1,D2,D3,D4,D5,D6,D7 2 | Hyper=CK,\C\K\,DQ0,DQ1,DQ2,DQ3,DQ4,DQ5,DQ6,DQ7,RWDS 3 | I2C=SCL,SDA 4 | JTAG=\T\R\S\T\,TCK,TMS,TDI,TDO 5 | SPI=SCK,MISO,MOSI 6 | -------------------------------------------------------------------------------- /pulp-dronet-v1/PULP-Shield/GAP8/GAPandPeripherals.SchDoc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v1/PULP-Shield/GAP8/GAPandPeripherals.SchDoc -------------------------------------------------------------------------------- /pulp-dronet-v1/PULP-Shield/GAP8/PCB1.PcbDoc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v1/PULP-Shield/GAP8/PCB1.PcbDoc -------------------------------------------------------------------------------- /pulp-dronet-v1/PULP-Shield/GAP8/Power.Harness: -------------------------------------------------------------------------------- 1 | SPI=MOSI,MISO,SCK 2 | -------------------------------------------------------------------------------- /pulp-dronet-v1/PULP-Shield/GAP8/Power.SchDoc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v1/PULP-Shield/GAP8/Power.SchDoc -------------------------------------------------------------------------------- /pulp-dronet-v1/PULP-Shield/jtag-convboard/BOM1.BomDoc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v1/PULP-Shield/jtag-convboard/BOM1.BomDoc -------------------------------------------------------------------------------- /pulp-dronet-v1/PULP-Shield/jtag-convboard/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | All notable changes to this project will be documented in this file. 3 | 4 | The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) 5 | and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). 6 | 7 | ## [Unreleased] 8 | 9 | ### Added 10 | 11 | ### Changed 12 | 13 | ### Removed 14 | 15 | ### Fixed 16 | 17 | 18 | ## [1.1.0] - 2018-09-10 19 | 20 | ### Added 21 | - 50mil header to connect to smaller targets 22 | 23 | ### Removed 24 | - LED capacitors 25 | 26 | 27 | ## [1.0.0] - 2018-05-03 28 | 29 | ### Added 30 | 31 | - JTAG converter PCB 32 | -------------------------------------------------------------------------------- /pulp-dronet-v1/PULP-Shield/jtag-convboard/JTAGconv.PcbDoc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v1/PULP-Shield/jtag-convboard/JTAGconv.PcbDoc -------------------------------------------------------------------------------- /pulp-dronet-v1/PULP-Shield/jtag-convboard/JTAGconv.PrjPcbStructure: -------------------------------------------------------------------------------- 1 | Record=TopLevelDocument|FileName=JTAGconv.SchDoc 2 | -------------------------------------------------------------------------------- /pulp-dronet-v1/PULP-Shield/jtag-convboard/JTAGconv.SchDoc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v1/PULP-Shield/jtag-convboard/JTAGconv.SchDoc -------------------------------------------------------------------------------- /pulp-dronet-v1/PULP-Shield/jtag-convboard/Project Outputs for JTAGconv/Fabrication Data/Gerber_v1.1/JTAGconv_v1.1.EXTREP: -------------------------------------------------------------------------------- 1 | ------------------------------------------------------------------------------------------ 2 | Gerber File Extension Report For: JTAGconv_v1.1.GBR 10.09.2018 17:19:53 3 | ------------------------------------------------------------------------------------------ 4 | 5 | 6 | ------------------------------------------------------------------------------------------ 7 | Layer Extension Layer Description 8 | ------------------------------------------------------------------------------------------ 9 | .GTL Component Side 10 | .GBL Bottom Layer 11 | .GTO Top Overlay 12 | .GTS Top Solder 13 | .GBS Solder Side 14 | .GBO Bottom Overlay 15 | .GD1 Drill Drawing 16 | ------------------------------------------------------------------------------------------ 17 | -------------------------------------------------------------------------------- /pulp-dronet-v1/PULP-Shield/jtag-convboard/Project Outputs for JTAGconv/Fabrication Data/Gerber_v1.1/JTAGconv_v1.1.GBS: -------------------------------------------------------------------------------- 1 | G04 Layer_Color=16711935* 2 | %FSLAX25Y25*% 3 | %MOIN*% 4 | G70* 5 | G01* 6 | G75* 7 | %ADD25R,0.06496X0.06496*% 8 | %ADD26C,0.06496*% 9 | %ADD27R,0.06496X0.06496*% 10 | %ADD28C,0.06890*% 11 | %ADD29C,0.04528*% 12 | %ADD30R,0.01968X0.02362*% 13 | %ADD31R,0.04134X0.02559*% 14 | D25* 15 | X116181Y205000D02* 16 | D03* 17 | D26* 18 | Y195000D02* 19 | D03* 20 | Y185000D02* 21 | D03* 22 | Y175000D02* 23 | D03* 24 | Y165000D02* 25 | D03* 26 | Y155000D02* 27 | D03* 28 | Y145000D02* 29 | D03* 30 | Y135000D02* 31 | D03* 32 | Y125000D02* 33 | D03* 34 | Y115000D02* 35 | D03* 36 | X106181Y205000D02* 37 | D03* 38 | Y195000D02* 39 | D03* 40 | Y185000D02* 41 | D03* 42 | Y175000D02* 43 | D03* 44 | Y165000D02* 45 | D03* 46 | Y155000D02* 47 | D03* 48 | Y145000D02* 49 | D03* 50 | Y135000D02* 51 | D03* 52 | Y125000D02* 53 | D03* 54 | Y115000D02* 55 | D03* 56 | X165453Y200000D02* 57 | D03* 58 | X155453Y190000D02* 59 | D03* 60 | Y180000D02* 61 | D03* 62 | Y170000D02* 63 | D03* 64 | Y160000D02* 65 | D03* 66 | X165453Y190000D02* 67 | D03* 68 | Y180000D02* 69 | D03* 70 | Y170000D02* 71 | D03* 72 | Y160000D02* 73 | D03* 74 | D27* 75 | X155453Y200000D02* 76 | D03* 77 | D28* 78 | X183031Y121000D02* 79 | D03* 80 | X172031D02* 81 | D03* 82 | X161031D02* 83 | D03* 84 | X150031D02* 85 | D03* 86 | X139032D02* 87 | D03* 88 | X128032D02* 89 | D03* 90 | X194421Y131181D02* 91 | D03* 92 | Y111181D02* 93 | D03* 94 | D29* 95 | X187126Y190020D02* 96 | D03* 97 | Y185020D02* 98 | D03* 99 | Y180020D02* 100 | D03* 101 | Y175020D02* 102 | D03* 103 | Y170020D02* 104 | D03* 105 | X192126Y190020D02* 106 | D03* 107 | Y185020D02* 108 | D03* 109 | Y180020D02* 110 | D03* 111 | Y175020D02* 112 | D03* 113 | Y170020D02* 114 | D03* 115 | D30* 116 | X156890Y135925D02* 117 | D03* 118 | X159449D02* 119 | D03* 120 | X162008D02* 121 | D03* 122 | Y143602D02* 123 | D03* 124 | X159449D02* 125 | D03* 126 | X156890D02* 127 | D03* 128 | X149213Y149508D02* 129 | D03* 130 | X146653D02* 131 | D03* 132 | X144095D02* 133 | D03* 134 | Y141831D02* 135 | D03* 136 | X146653D02* 137 | D03* 138 | X149213D02* 139 | D03* 140 | X149606Y164272D02* 141 | D03* 142 | X147047D02* 143 | D03* 144 | X144488D02* 145 | D03* 146 | Y156595D02* 147 | D03* 148 | X147047D02* 149 | D03* 150 | X149606D02* 151 | D03* 152 | D31* 153 | X132677Y137795D02* 154 | D03* 155 | Y140945D02* 156 | D03* 157 | Y144095D02* 158 | D03* 159 | Y147244D02* 160 | D03* 161 | Y150394D02* 162 | D03* 163 | Y153543D02* 164 | D03* 165 | Y156693D02* 166 | D03* 167 | Y159843D02* 168 | D03* 169 | X138976Y137795D02* 170 | D03* 171 | Y140945D02* 172 | D03* 173 | Y144095D02* 174 | D03* 175 | Y147244D02* 176 | D03* 177 | Y150394D02* 178 | D03* 179 | Y153543D02* 180 | D03* 181 | Y156693D02* 182 | D03* 183 | Y159843D02* 184 | D03* 185 | M02* 186 | -------------------------------------------------------------------------------- /pulp-dronet-v1/PULP-Shield/jtag-convboard/Project Outputs for JTAGconv/Fabrication Data/Gerber_v1.1/JTAGconv_v1.1.GTS: -------------------------------------------------------------------------------- 1 | G04 Layer_Color=8388736* 2 | %FSLAX25Y25*% 3 | %MOIN*% 4 | G70* 5 | G01* 6 | G75* 7 | %ADD24R,0.05709X0.03347*% 8 | %ADD25R,0.06496X0.06496*% 9 | %ADD26C,0.06496*% 10 | %ADD27R,0.06496X0.06496*% 11 | %ADD28C,0.06890*% 12 | %ADD29C,0.04528*% 13 | D24* 14 | X172031Y113000D02* 15 | D03* 16 | Y105520D02* 17 | D03* 18 | X183031Y112740D02* 19 | D03* 20 | Y105260D02* 21 | D03* 22 | X150031Y112740D02* 23 | D03* 24 | Y105260D02* 25 | D03* 26 | X161031Y112740D02* 27 | D03* 28 | Y105260D02* 29 | D03* 30 | X128032Y112740D02* 31 | D03* 32 | Y105260D02* 33 | D03* 34 | X139032Y112740D02* 35 | D03* 36 | Y105260D02* 37 | D03* 38 | X194421Y124921D02* 39 | D03* 40 | Y117441D02* 41 | D03* 42 | D25* 43 | X116181Y205000D02* 44 | D03* 45 | D26* 46 | Y195000D02* 47 | D03* 48 | Y185000D02* 49 | D03* 50 | Y175000D02* 51 | D03* 52 | Y165000D02* 53 | D03* 54 | Y155000D02* 55 | D03* 56 | Y145000D02* 57 | D03* 58 | Y135000D02* 59 | D03* 60 | Y125000D02* 61 | D03* 62 | Y115000D02* 63 | D03* 64 | X106181Y205000D02* 65 | D03* 66 | Y195000D02* 67 | D03* 68 | Y185000D02* 69 | D03* 70 | Y175000D02* 71 | D03* 72 | Y165000D02* 73 | D03* 74 | Y155000D02* 75 | D03* 76 | Y145000D02* 77 | D03* 78 | Y135000D02* 79 | D03* 80 | Y125000D02* 81 | D03* 82 | Y115000D02* 83 | D03* 84 | X165453Y200000D02* 85 | D03* 86 | X155453Y190000D02* 87 | D03* 88 | Y180000D02* 89 | D03* 90 | Y170000D02* 91 | D03* 92 | Y160000D02* 93 | D03* 94 | X165453Y190000D02* 95 | D03* 96 | Y180000D02* 97 | D03* 98 | Y170000D02* 99 | D03* 100 | Y160000D02* 101 | D03* 102 | D27* 103 | X155453Y200000D02* 104 | D03* 105 | D28* 106 | X183031Y121000D02* 107 | D03* 108 | X172031D02* 109 | D03* 110 | X161031D02* 111 | D03* 112 | X150031D02* 113 | D03* 114 | X139032D02* 115 | D03* 116 | X128032D02* 117 | D03* 118 | X194421Y131181D02* 119 | D03* 120 | Y111181D02* 121 | D03* 122 | D29* 123 | X187126Y190020D02* 124 | D03* 125 | Y185020D02* 126 | D03* 127 | Y180020D02* 128 | D03* 129 | Y175020D02* 130 | D03* 131 | Y170020D02* 132 | D03* 133 | X192126Y190020D02* 134 | D03* 135 | Y185020D02* 136 | D03* 137 | Y180020D02* 138 | D03* 139 | Y175020D02* 140 | D03* 141 | Y170020D02* 142 | D03* 143 | M02* 144 | -------------------------------------------------------------------------------- /pulp-dronet-v1/PULP-Shield/jtag-convboard/Project Outputs for JTAGconv/Fabrication Data/Gerber_v1.1/JTAGconv_v1.1.REP: -------------------------------------------------------------------------------- 1 | ************************************************************* 2 | FileName = JTAGconv_v1.1.GBR 3 | AutoAperture = True 4 | ************************************************************* 5 | Generating : Component Side 6 | File : JTAGconv_v1.1.GTL 7 | 8 | Adding Layer : Component Side 9 | 10 | Adding Layer : Multi-Layer 11 | 12 | 13 | Used DCodes : 14 | D10 15 | D11 16 | D12 17 | D13 18 | D14 19 | D15 20 | D16 21 | D17 22 | D18 23 | D19 24 | ************************************************************* 25 | 26 | ************************************************************* 27 | Generating : Bottom Layer 28 | File : JTAGconv_v1.1.GBL 29 | 30 | Adding Layer : Bottom Layer 31 | 32 | Adding Layer : Multi-Layer 33 | 34 | 35 | Used DCodes : 36 | D11 37 | D12 38 | D14 39 | D15 40 | D16 41 | D17 42 | D18 43 | D19 44 | D20 45 | D21 46 | ************************************************************* 47 | 48 | ************************************************************* 49 | Generating : Top Overlay 50 | File : JTAGconv_v1.1.GTO 51 | 52 | Adding Layer : Top Overlay 53 | 54 | 55 | Used DCodes : 56 | D11 57 | D13 58 | D22 59 | D23 60 | ************************************************************* 61 | 62 | ************************************************************* 63 | Generating : Top Solder 64 | File : JTAGconv_v1.1.GTS 65 | 66 | Adding Layer : Top Solder 67 | 68 | Adding Layer : Component Side 69 | 70 | Adding Layer : Multi-Layer 71 | 72 | 73 | Used DCodes : 74 | D24 75 | D25 76 | D26 77 | D27 78 | D28 79 | D29 80 | ************************************************************* 81 | 82 | ************************************************************* 83 | Generating : Solder Side 84 | File : JTAGconv_v1.1.GBS 85 | 86 | Adding Layer : Solder Side 87 | 88 | Adding Layer : Bottom Layer 89 | 90 | Adding Layer : Multi-Layer 91 | 92 | 93 | Used DCodes : 94 | D25 95 | D26 96 | D27 97 | D28 98 | D29 99 | D30 100 | D31 101 | ************************************************************* 102 | 103 | ************************************************************* 104 | Generating : Bottom Overlay 105 | File : JTAGconv_v1.1.GBO 106 | 107 | Adding Layer : Bottom Overlay 108 | 109 | 110 | Used DCodes : 111 | D11 112 | D22 113 | D32 114 | ************************************************************* 115 | 116 | ************************************************************* 117 | Generating : Drill Drawing 118 | File : JTAGconv_v1.1.GD1 119 | 120 | Adding Drill Pair : Component Side-Bottom Layer 121 | 122 | Adding Layer : Drill Drawing 123 | 124 | 125 | Used DCodes : 126 | D33 127 | D34 128 | ************************************************************* 129 | 130 | -------------------------------------------------------------------------------- /pulp-dronet-v1/PULP-Shield/jtag-convboard/Project Outputs for JTAGconv/Fabrication Data/Gerber_v1.1/JTAGconv_v1.1.RUL: -------------------------------------------------------------------------------- 1 | DRC Rules Export File for PCB: D:\Work\ETH\boards\jtag-convboard\JTAGconv.PcbDoc 2 | RuleKind=MinimumAnnularRing|RuleName=MinimumAnnularRing|Scope=Board|Minimum=5.91 3 | RuleKind=MinimumAnnularRing|RuleName=MinimumAnnularRing_Vias|Scope=Board|Minimum=4.88 4 | RuleKind=MinimumAnnularRing|RuleName=MinimumAnnularRing_Vias_bga|Scope=Board|Minimum=2.95 5 | RuleKind=ShortCircuit|RuleName=ShortCircuit|Scope=Board|Allowed=0 6 | RuleKind=ShortCircuit|RuleName=ShortCircuit_variant_footprint|Scope=Board|Allowed=1 7 | RuleKind=SolderMaskExpansion|RuleName=SolderMaskExpansion|Scope=Board|Minimum=2.95 8 | RuleKind=Width|RuleName=Width|Scope=Board|Minimum=5.91 9 | RuleKind=Width|RuleName=Width_PWR|Scope=Board|Minimum=5.91 10 | RuleKind=Width|RuleName=Width_bga|Scope=Board|Minimum=3.94 11 | RuleKind=Clearance|RuleName=Clearance|Scope=Board|Minimum=4.92 12 | RuleKind=Clearance|RuleName=Clearance_PULPLOGO|Scope=Board|Minimum=0.00 13 | RuleKind=Clearance|RuleName=Clearance_pulp|Scope=Board|Minimum=3.94 14 | RuleKind=Clearance|RuleName=Clearance_bga|Scope=Board|Minimum=2.95 15 | -------------------------------------------------------------------------------- /pulp-dronet-v1/PULP-Shield/jtag-convboard/Project Outputs for JTAGconv/Fabrication Data/Gerber_v1.1/JTAGconv_v1.1.apr: -------------------------------------------------------------------------------- 1 | D10 RECTANGULAR 51.181 27.559 0.000 FLASH 0.000 2 | D11 ROUNDED 7.874 7.874 0.000 LINE 0.000 3 | D12 ROUNDED 15.748 15.748 0.000 LINE 0.000 4 | D13 ROUNDED 5.905 5.905 0.000 LINE 0.000 5 | D14 RECTANGULAR 59.055 59.055 0.000 FLASH 270.000 6 | D15 ROUNDED 59.055 59.055 0.000 FLASH 0.000 7 | D16 RECTANGULAR 59.055 59.055 0.000 FLASH 0.000 8 | D17 ROUNDED 62.992 62.992 0.000 FLASH 0.000 9 | D18 ROUNDED 39.370 39.370 0.000 FLASH 0.000 10 | D19 ROUNDED 17.716 17.716 0.000 FLASH 0.000 11 | D20 RECTANGULAR 13.780 17.716 0.000 FLASH 180.000 12 | D21 RECTANGULAR 19.685 35.433 0.000 FLASH 90.000 13 | D22 ROUNDED 3.937 3.937 0.000 LINE 0.000 14 | D23 ROUNDED 10.000 10.000 0.000 LINE 0.000 15 | D24 RECTANGULAR 57.087 33.465 0.000 FLASH 0.000 16 | D25 RECTANGULAR 64.961 64.961 0.000 FLASH 270.000 17 | D26 ROUNDED 64.961 64.961 0.000 FLASH 0.000 18 | D27 RECTANGULAR 64.961 64.961 0.000 FLASH 0.000 19 | D28 ROUNDED 68.898 68.898 0.000 FLASH 0.000 20 | D29 ROUNDED 45.276 45.276 0.000 FLASH 0.000 21 | D30 RECTANGULAR 19.685 23.622 0.000 FLASH 180.000 22 | D31 RECTANGULAR 25.591 41.339 0.000 FLASH 90.000 23 | D32 ROUNDED 9.842 9.842 0.000 LINE 0.000 24 | D33 ROUNDED 2.000 2.000 0.000 LINE 0.000 25 | D34 ROUNDED 2.667 2.667 0.000 LINE 0.000 26 | -------------------------------------------------------------------------------- /pulp-dronet-v1/PULP-Shield/jtag-convboard/Project Outputs for JTAGconv/Fabrication Data/Gerber_v1.1/JTAGconv_v1.APR_LIB: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v1/PULP-Shield/jtag-convboard/Project Outputs for JTAGconv/Fabrication Data/Gerber_v1.1/JTAGconv_v1.APR_LIB -------------------------------------------------------------------------------- /pulp-dronet-v1/PULP-Shield/jtag-convboard/Project Outputs for JTAGconv/Fabrication Data/NC Drill_v1.1/JTAGconv-BoardEdgeRout.TXT: -------------------------------------------------------------------------------- 1 | M48 2 | ;Layer_Color=9474304 3 | ;FILE_FORMAT=2:5 4 | INCH,LZ 5 | T5F00S00C0.09449 6 | % 7 | G90 8 | G05 9 | T05 10 | G00X0201357Y0095475 11 | M15 12 | G01X0202599Y0096055 13 | G01X0203622Y0096967 14 | G01X0204341Y0098135 15 | G01X0204724Y01 16 | G01X0204724Y022 17 | G01X0204525Y0221357 18 | G01X0203945Y0222599 19 | G01X0203033Y0223622 20 | G01X0201865Y0224341 21 | G01X02Y0224724 22 | G01X01Y0224724 23 | G01X0098643Y0224525 24 | G01X0097401Y0223945 25 | G01X0096378Y0223033 26 | G01X0095659Y0221865 27 | G01X0095276Y022 28 | G01X0095276Y01 29 | G01X0095475Y0098643 30 | G01X0096055Y0097401 31 | G01X0096967Y0096378 32 | G01X0098135Y0095659 33 | G01X01Y0095276 34 | G01X02Y0095276 35 | G01X0201357Y0095475 36 | M16 37 | M17 38 | M30 39 | -------------------------------------------------------------------------------- /pulp-dronet-v1/PULP-Shield/jtag-convboard/Project Outputs for JTAGconv/Fabrication Data/NC Drill_v1.1/JTAGconv_v1.1.DRR: -------------------------------------------------------------------------------- 1 | ---------------------------------------------------------------------------------------------------------------------------------- 2 | NCDrill File Report For: JTAGconv.PcbDoc 10.09.2018 17:19:55 3 | ---------------------------------------------------------------------------------------------------------------------------------- 4 | 5 | Layer Pair : Component Side to Bottom Layer 6 | ASCII RoundHoles File : JTAGconv_v1.1.TXT 7 | 8 | Tool Hole Size Hole Tolerance Hole Type Hole Count Plated Tool Travel 9 | ---------------------------------------------------------------------------------------------------------------------------------- 10 | T1 8mil (0.2mm) Round 23 PTH 3.88inch (98.64mm) 11 | T2 28mil (0.7mm) Round 10 PTH 0.45inch (11.43mm) 12 | T3 39mil (1mm) Round 10 PTH 0.90inch (22.86mm) 13 | T4 40mil (1.02mm) Round 28 PTH 3.77inch (95.88mm) 14 | ---------------------------------------------------------------------------------------------------------------------------------- 15 | Totals 71 16 | 17 | Total Processing Time (hh:mm:ss) : 00:00:00 18 | -------------------------------------------------------------------------------- /pulp-dronet-v1/PULP-Shield/jtag-convboard/Project Outputs for JTAGconv/Fabrication Data/NC Drill_v1.1/JTAGconv_v1.1.LDP: -------------------------------------------------------------------------------- 1 | Layer Pairs Export File for PCB: D:\Work\ETH\boards\jtag-convboard\JTAGconv.PcbDoc 2 | LayersSetName=Top_Bot_Thru_Holes|DrillFile=jtagconv_v1.1.txt|DrillLayers=gtl,gbl 3 | -------------------------------------------------------------------------------- /pulp-dronet-v1/PULP-Shield/jtag-convboard/Project Outputs for JTAGconv/Fabrication Data/NC Drill_v1.1/JTAGconv_v1.1.TXT: -------------------------------------------------------------------------------- 1 | M48 2 | ;Layer_Color=9474304 3 | ;FILE_FORMAT=2:5 4 | INCH,LZ 5 | ;TYPE=PLATED 6 | T1F00S00C0.00787 7 | T2F00S00C0.02756 8 | T3F00S00C0.03937 9 | T4F00S00C0.04016 10 | ;TYPE=NON_PLATED 11 | % 12 | T01 13 | X0127953Y0102362 14 | X0138976 15 | X0150031Y0102394 16 | X0152362Y0135925 17 | X0149213Y0137795 18 | X0148031Y014685 19 | X0145276Y0146457 20 | X0141929Y0141142 21 | X0147047Y0154528 22 | X0150787Y0154724 23 | X0159449Y0145276 24 | X0163681Y0143602 25 | X0170078Y0146063 26 | X0159449Y0137795 27 | X0179134Y0134252 28 | X0190945Y0117323 29 | X0183071Y0102362 30 | X0172047 31 | X0161024 32 | X0190453Y02 33 | X0193701 34 | X0142126Y0162992 35 | X0135433Y0163779 36 | T02 37 | X0187126Y017002 38 | Y017502 39 | Y018002 40 | Y018502 41 | Y019002 42 | X0192126 43 | Y018502 44 | Y018002 45 | Y017502 46 | Y017002 47 | T03 48 | X0165453Y016 49 | Y017 50 | Y018 51 | Y019 52 | Y02 53 | X0155453 54 | Y019 55 | Y018 56 | Y017 57 | Y016 58 | T04 59 | X0106181Y0115 60 | X0116181 61 | Y0125 62 | Y0135 63 | Y0145 64 | Y0155 65 | X0106181 66 | Y0145 67 | Y0135 68 | Y0125 69 | X0128032Y0121 70 | X0139032 71 | X0150031 72 | X0161031 73 | X0172031 74 | X0183031 75 | X0194421Y0111181 76 | Y0131181 77 | X0116181Y0165 78 | Y0175 79 | Y0185 80 | Y0195 81 | Y0205 82 | X0106181 83 | Y0195 84 | Y0185 85 | Y0175 86 | Y0165 87 | M30 88 | -------------------------------------------------------------------------------- /pulp-dronet-v1/PULP-Shield/jtag-convboard/Project Outputs for JTAGconv/Project Documentation/Assembly_v1.1.PDF: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v1/PULP-Shield/jtag-convboard/Project Outputs for JTAGconv/Project Documentation/Assembly_v1.1.PDF -------------------------------------------------------------------------------- /pulp-dronet-v1/PULP-Shield/jtag-convboard/Project Outputs for JTAGconv/Project Documentation/BOM_v1.1_raw.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v1/PULP-Shield/jtag-convboard/Project Outputs for JTAGconv/Project Documentation/BOM_v1.1_raw.xlsx -------------------------------------------------------------------------------- /pulp-dronet-v1/PULP-Shield/jtag-convboard/Project Outputs for JTAGconv/Project Documentation/JTAGconv_v1.1.PDF: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v1/PULP-Shield/jtag-convboard/Project Outputs for JTAGconv/Project Documentation/JTAGconv_v1.1.PDF -------------------------------------------------------------------------------- /pulp-dronet-v1/PULP-Shield/jtag-convboard/Project Outputs for JTAGconv/Project Documentation/JTAGconv_v1.1_complete.PDF: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v1/PULP-Shield/jtag-convboard/Project Outputs for JTAGconv/Project Documentation/JTAGconv_v1.1_complete.PDF -------------------------------------------------------------------------------- /pulp-dronet-v1/PULP-Shield/jtag-convboard/Project Outputs for JTAGconv/Project Documentation/PCBPrints_v1.1.PDF: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v1/PULP-Shield/jtag-convboard/Project Outputs for JTAGconv/Project Documentation/PCBPrints_v1.1.PDF -------------------------------------------------------------------------------- /pulp-dronet-v1/bin/PULPDroNet_GAPuino: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v1/bin/PULPDroNet_GAPuino -------------------------------------------------------------------------------- /pulp-dronet-v1/bin/PULPDroNet_PULPShield: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v1/bin/PULPDroNet_PULPShield -------------------------------------------------------------------------------- /pulp-dronet-v1/imgs/PULP_dataset.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v1/imgs/PULP_dataset.png -------------------------------------------------------------------------------- /pulp-dronet-v1/imgs/PULP_drone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v1/imgs/PULP_drone.png -------------------------------------------------------------------------------- /pulp-dronet-v1/imgs/PULP_proto.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v1/imgs/PULP_proto.png -------------------------------------------------------------------------------- /pulp-dronet-v1/imgs/PULP_setup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v1/imgs/PULP_setup.png -------------------------------------------------------------------------------- /pulp-dronet-v1/src/PULPDronetKernelsInit.c: -------------------------------------------------------------------------------- 1 | /*----------------------------------------------------------------------------* 2 | * Copyright (C) 2018-2019 ETH Zurich, Switzerland * 3 | * All rights reserved. * 4 | * * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); * 6 | * you may not use this file except in compliance with the License. * 7 | * See LICENSE.apache.md in the top directory for details. * 8 | * You may obtain a copy of the License at * 9 | * * 10 | * http://www.apache.org/licenses/LICENSE-2.0 * 11 | * * 12 | * Unless required by applicable law or agreed to in writing, software * 13 | * distributed under the License is distributed on an "AS IS" BASIS, * 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * 15 | * See the License for the specific language governing permissions and * 16 | * limitations under the License. * 17 | * * 18 | * File: PULPDronetKernelsInit.c * 19 | * Author: Daniele Palossi * 20 | * Date: 10.04.2019 * 21 | *----------------------------------------------------------------------------*/ 22 | 23 | 24 | #include "Gap8.h" 25 | #include "KernelLibStdTypes.h" 26 | L1_CL_MEM char *PULP_Dronet_L1_Memory; 27 | L2_MEM char *PULP_Dronet_L2_Memory; 28 | Kernel_Arg_T PULP_Dronet_KernelArgs[] = { 29 | }; 30 | 31 | Kernel_T PULP_Dronet_KernelDescr[] = { 32 | }; 33 | -------------------------------------------------------------------------------- /pulp-dronet-v1/src/PULPDronetKernelsInit.h: -------------------------------------------------------------------------------- 1 | /*----------------------------------------------------------------------------* 2 | * Copyright (C) 2018-2019 ETH Zurich, Switzerland * 3 | * All rights reserved. * 4 | * * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); * 6 | * you may not use this file except in compliance with the License. * 7 | * See LICENSE.apache.md in the top directory for details. * 8 | * You may obtain a copy of the License at * 9 | * * 10 | * http://www.apache.org/licenses/LICENSE-2.0 * 11 | * * 12 | * Unless required by applicable law or agreed to in writing, software * 13 | * distributed under the License is distributed on an "AS IS" BASIS, * 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * 15 | * See the License for the specific language governing permissions and * 16 | * limitations under the License. * 17 | * * 18 | * File: PULPDronetKernelsInit.h * 19 | * Author: Daniele Palossi * 20 | * Date: 10.04.2019 * 21 | *----------------------------------------------------------------------------*/ 22 | 23 | 24 | #ifndef __PULPDRONETKERNELSINI_H__ 25 | #define __PULPDRONETKERNELSINI_H__ 26 | 27 | #include "KernelLibStdTypes.h" 28 | extern Kernel_T PULP_Dronet_KernelDescr[]; 29 | 30 | 31 | 32 | #endif 33 | -------------------------------------------------------------------------------- /pulp-dronet-v1/src/config.ini: -------------------------------------------------------------------------------- 1 | [board.devices.hyperchip] 2 | include = devices/hyper.json 3 | interface = hyper0 4 | cs = 0 5 | 6 | [board.devices.camera] 7 | include = devices/camera.json 8 | interface = cpi0 9 | ctrl_interface = i2c0 10 | config.image-stream=%(srcdir)s/imgTest0.pgm 11 | 12 | [board.devices.spim] 13 | include = devices/spim_verif.json 14 | interface = spim1 15 | cs = 0 16 | config.tx_file.path=spimlog.txt 17 | 18 | [config] 19 | runner.peripherals=true 20 | runner.boot-mode = rom_hyper 21 | runner.flash_type = hyper 22 | runner.pads.default_profile = hyper -------------------------------------------------------------------------------- /pulp-dronet-v1/src/run_dataset.sh: -------------------------------------------------------------------------------- 1 | #------------------------------------------------------------------------------# 2 | # Copyright (C) 2018-2019 ETH Zurich, Switzerland # 3 | # All rights reserved. # 4 | # # 5 | # Licensed under the Apache License, Version 2.0 (the "License"); # 6 | # you may not use this file except in compliance with the License. # 7 | # See LICENSE.apache.md in the top directory for details. # 8 | # You may obtain a copy of the License at # 9 | # # 10 | # http://www.apache.org/licenses/LICENSE-2.0 # 11 | # # 12 | # Unless required by applicable law or agreed to in writing, software # 13 | # distributed under the License is distributed on an "AS IS" BASIS, # 14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 15 | # See the License for the specific language governing permissions and # 16 | # limitations under the License. # 17 | # # 18 | # File: run_dataset.sh # 19 | # Author: Daniele Palossi # 20 | # Date: 10.04.2019 # 21 | #------------------------------------------------------------------------------# 22 | 23 | 24 | #!/bin/bash 25 | 26 | ################################ Entire Dataset ################################ 27 | BASEDIR=$(pwd)/../dataset/ 28 | 29 | ################################### Sub-Sets ################################### 30 | # BASEDIR=$(pwd)/../dataset/Himax_Dataset/ 31 | # BASEDIR=$(pwd)/../dataset/Udacity_Dataset/ 32 | # BASEDIR=$(pwd)/../dataset/Zurich_Bicycle_Dataset/ 33 | 34 | ################################## Sub-Folders ################################# 35 | # BASEDIR=$(pwd)/../dataset/Himax_Dataset/test_2/ 36 | # BASEDIR=$(pwd)/../dataset/Himax_Dataset/test_10/ 37 | # BASEDIR=$(pwd)/../dataset/Himax_Dataset/test_15/ 38 | # BASEDIR=$(pwd)/../dataset/Himax_Dataset/test_23/ 39 | 40 | 41 | for s in $(find $BASEDIR -name "*.pgm" | sort -V); do 42 | # echo "Testing: $s" 43 | make conf run EXT_INPUT=$s | grep Result 44 | done -------------------------------------------------------------------------------- /pulp-dronet-v1/weights/WeightsPULPDroNet.raw: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v1/weights/WeightsPULPDroNet.raw -------------------------------------------------------------------------------- /pulp-dronet-v1/weights/binary/bias_conv2d_1.hex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v1/weights/binary/bias_conv2d_1.hex -------------------------------------------------------------------------------- /pulp-dronet-v1/weights/binary/bias_conv2d_10.hex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v1/weights/binary/bias_conv2d_10.hex -------------------------------------------------------------------------------- /pulp-dronet-v1/weights/binary/bias_conv2d_2.hex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v1/weights/binary/bias_conv2d_2.hex -------------------------------------------------------------------------------- /pulp-dronet-v1/weights/binary/bias_conv2d_3.hex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v1/weights/binary/bias_conv2d_3.hex -------------------------------------------------------------------------------- /pulp-dronet-v1/weights/binary/bias_conv2d_4.hex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v1/weights/binary/bias_conv2d_4.hex -------------------------------------------------------------------------------- /pulp-dronet-v1/weights/binary/bias_conv2d_5.hex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v1/weights/binary/bias_conv2d_5.hex -------------------------------------------------------------------------------- /pulp-dronet-v1/weights/binary/bias_conv2d_6.hex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v1/weights/binary/bias_conv2d_6.hex -------------------------------------------------------------------------------- /pulp-dronet-v1/weights/binary/bias_conv2d_7.hex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v1/weights/binary/bias_conv2d_7.hex -------------------------------------------------------------------------------- /pulp-dronet-v1/weights/binary/bias_conv2d_8.hex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v1/weights/binary/bias_conv2d_8.hex -------------------------------------------------------------------------------- /pulp-dronet-v1/weights/binary/bias_conv2d_9.hex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v1/weights/binary/bias_conv2d_9.hex -------------------------------------------------------------------------------- /pulp-dronet-v1/weights/binary/bias_dense_1.hex: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /pulp-dronet-v1/weights/binary/bias_dense_2.hex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v1/weights/binary/bias_dense_2.hex -------------------------------------------------------------------------------- /pulp-dronet-v1/weights/binary/weights_conv2d_1.hex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v1/weights/binary/weights_conv2d_1.hex -------------------------------------------------------------------------------- /pulp-dronet-v1/weights/binary/weights_conv2d_10.hex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v1/weights/binary/weights_conv2d_10.hex -------------------------------------------------------------------------------- /pulp-dronet-v1/weights/binary/weights_conv2d_2.hex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v1/weights/binary/weights_conv2d_2.hex -------------------------------------------------------------------------------- /pulp-dronet-v1/weights/binary/weights_conv2d_3.hex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v1/weights/binary/weights_conv2d_3.hex -------------------------------------------------------------------------------- /pulp-dronet-v1/weights/binary/weights_conv2d_4.hex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v1/weights/binary/weights_conv2d_4.hex -------------------------------------------------------------------------------- /pulp-dronet-v1/weights/binary/weights_conv2d_5.hex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v1/weights/binary/weights_conv2d_5.hex -------------------------------------------------------------------------------- /pulp-dronet-v1/weights/binary/weights_conv2d_6.hex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v1/weights/binary/weights_conv2d_6.hex -------------------------------------------------------------------------------- /pulp-dronet-v1/weights/binary/weights_conv2d_7.hex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v1/weights/binary/weights_conv2d_7.hex -------------------------------------------------------------------------------- /pulp-dronet-v1/weights/binary/weights_conv2d_8.hex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v1/weights/binary/weights_conv2d_8.hex -------------------------------------------------------------------------------- /pulp-dronet-v1/weights/binary/weights_conv2d_9.hex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v1/weights/binary/weights_conv2d_9.hex -------------------------------------------------------------------------------- /pulp-dronet-v1/weights/binary/weights_dense_1.hex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v1/weights/binary/weights_dense_1.hex -------------------------------------------------------------------------------- /pulp-dronet-v1/weights/binary/weights_dense_2.hex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v1/weights/binary/weights_dense_2.hex -------------------------------------------------------------------------------- /pulp-dronet-v2/conda_deps.yml: -------------------------------------------------------------------------------- 1 | name: pulp-dronet-v2 2 | channels: 3 | - defaults 4 | dependencies: 5 | - _libgcc_mutex=0.1=main 6 | - blas=1.0=mkl 7 | - ca-certificates=2021.4.13=h06a4308_1 8 | - certifi=2020.12.5=py38h06a4308_0 9 | - intel-openmp=2021.2.0=h06a4308_610 10 | - ld_impl_linux-64=2.33.1=h53a641e_7 11 | - libffi=3.3=he6710b0_2 12 | - libgcc-ng=9.1.0=hdf63c60_0 13 | - libstdcxx-ng=9.1.0=hdf63c60_0 14 | - mkl=2021.2.0=h06a4308_296 15 | - mkl-service=2.3.0=py38h27cfd23_1 16 | - mkl_fft=1.3.0=py38h42c9631_2 17 | - mkl_random=1.2.1=py38ha9443f7_2 18 | - ncurses=6.2=he6710b0_1 19 | - numpy=1.20.1=py38h93e21f0_0 20 | - numpy-base=1.20.1=py38h7d8b39e_0 21 | - openssl=1.1.1k=h27cfd23_0 22 | - pip=21.0.1=py38h06a4308_0 23 | - python=3.8.8=hdb3f193_5 24 | - readline=8.1=h27cfd23_0 25 | - setuptools=52.0.0=py38h06a4308_0 26 | - six=1.15.0=py38h06a4308_0 27 | - sqlite=3.35.4=hdfb4753_0 28 | - tk=8.6.10=hbc83047_0 29 | - wheel=0.36.2=pyhd3eb1b0_0 30 | - xz=5.2.5=h7b6447c_0 31 | - zlib=1.2.11=h7b6447c_3 32 | - pip: 33 | - joblib==1.0.1 34 | - packaging==20.9 35 | - pillow==8.2.0 36 | - pyparsing==2.4.7 37 | - pytorch-nemo==0.0.8 38 | - scikit-learn==0.24.2 39 | - scipy==1.6.3 40 | - threadpoolctl==2.1.0 41 | - torch==1.6.0 42 | - torchsummary==1.5.1 43 | - torchvision==0.7.0 44 | - tqdm==4.60.0 45 | - typing-extensions==3.10.0.0 -------------------------------------------------------------------------------- /pulp-dronet-v2/config.py: -------------------------------------------------------------------------------- 1 | #-------------------------------------------------------------------------------# 2 | # Copyright (C) 2020-2021 ETH Zurich, Switzerland, University of Bologna, Italy.# 3 | # All rights reserved. # 4 | # # 5 | # Licensed under the Apache License, Version 2.0 (the "License"); # 6 | # you may not use this file except in compliance with the License. # 7 | # See LICENSE in the top directory for details. # 8 | # You may obtain a copy of the License at # 9 | # # 10 | # http://www.apache.org/licenses/LICENSE-2.0 # 11 | # # 12 | # Unless required by applicable law or agreed to in writing, software # 13 | # distributed under the License is distributed on an "AS IS" BASIS, # 14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 15 | # See the License for the specific language governing permissions and # 16 | # limitations under the License. # 17 | # # 18 | # File: config.py # 19 | # Author: Lorenzo Lamberti # 20 | # Daniele Palossi # 21 | # Vlad Niculescu # 22 | # Date: 18.02.2021 # 23 | #-------------------------------------------------------------------------------# 24 | 25 | # This file gathers all the default values for the following scripts: 26 | # training.py, testing.py, evaluation.py, quantize.py, onnx_converter.py 27 | 28 | class cfg: 29 | pass 30 | 31 | # default for all scripts 32 | cfg.data_path= '../pulp-dronet-dataset/' 33 | cfg.logs_path='./logs/' 34 | cfg.flow='nemo_dory' 35 | cfg.testing_dataset='original' 36 | cfg.model_weights='model/dronet_v2_nemo_dory_original.pth' 37 | cfg.gpu='0' 38 | cfg.workers=4 39 | 40 | # training.py 41 | cfg.training_dataset = 'original_and_himax' 42 | cfg.model_name = 'pulp_dronet_v2' 43 | cfg.training_batch_size=32 44 | cfg.epochs=100 45 | cfg.learning_rate = 1e-3 46 | cfg.lr_decay = 1e-5 47 | cfg.checkpoint_path = './checkpoints/' 48 | cfg.hard_mining_train = True 49 | cfg.early_stopping = False 50 | cfg.patience = 15 51 | cfg.delta = 0 52 | cfg.resume_training = False 53 | 54 | # testing.py 55 | cfg.testing_batch_size=32 56 | 57 | # evaluation.py 58 | cfg.testing_dataset_evaluation='validation' 59 | cfg.cherry_picking_path='./checkpoints/pulp_dronet_v2/' 60 | 61 | ### NEMO/DORY flow: ### 62 | # quantize.py 63 | cfg.nemo_export_path = 'nemo_output/' 64 | cfg.nemo_onnx_name = 'pulp_dronet_id_4dory.onnx' 65 | 66 | ### GAPflow: ### 67 | # onnx_converter.py 68 | cfg.gapflow_onnx_export_path = './nntool_input/models_onnx/' 69 | cfg.gapflow_model_weights_original = './model/dronet_v2_gapflow_original.pth' 70 | cfg.gapflow_model_weights_original_himax = './model/dronet_v2_gapflow_original_himax.pth' -------------------------------------------------------------------------------- /pulp-dronet-v2/dataset/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v2/dataset/.gitkeep -------------------------------------------------------------------------------- /pulp-dronet-v2/gapflow/Makefile: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2017 GreenWaves Technologies 2 | # All rights reserved. 3 | 4 | # This software may be modified and distributed under the terms 5 | # of the BSD license. See the LICENSE file for details. 6 | 7 | ifndef GAP_SDK_HOME 8 | $(error Source sourceme in gap_sdk first) 9 | endif 10 | 11 | include common.mk 12 | 13 | IMAGE=$(CURDIR)/images/frame_2.pgm 14 | include common/model_decl.mk 15 | 16 | # Here we set the memory allocation for the generated kernels 17 | # REMEMBER THAT THE L1 MEMORY ALLOCATION MUST INCLUDE SPACE 18 | # FOR ALLOCATED STACKS! 19 | CLUSTER_STACK_SIZE?=6096 20 | CLUSTER_SLAVE_STACK_SIZE?=1024 21 | TOTAL_STACK_SIZE = $(shell expr $(CLUSTER_STACK_SIZE) \+ $(CLUSTER_SLAVE_STACK_SIZE) \* 7) 22 | 23 | FREQ_CL?=175 24 | FREQ_FC?=250 25 | MODEL_L1_MEMORY=$(shell expr 60000 \- $(TOTAL_STACK_SIZE)) 26 | MODEL_L2_MEMORY?=200000 27 | MODEL_L3_MEMORY=8000000 28 | 29 | # hram - HyperBus RAM 30 | # qspiram - Quad SPI RAM 31 | MODEL_L3_EXEC=hram 32 | # hflash - HyperBus Flash 33 | # qpsiflash - Quad SPI Flash 34 | MODEL_L3_CONST=hflash 35 | 36 | pulpChip = GAP 37 | PULP_APP = imagenet 38 | USE_PMSIS_BSP=1 39 | 40 | APP = imagenet 41 | MAIN ?= main.c 42 | APP_SRCS += $(MAIN) $(MODEL_GEN_C) $(MODEL_COMMON_SRCS) $(CNN_LIB) 43 | 44 | APP_CFLAGS += -g -O3 -w -mno-memcpy -fno-tree-loop-distribute-patterns 45 | # list of includes file 46 | APP_CFLAGS += -I. -I$(MODEL_COMMON_INC) -I$(TILER_EMU_INC) -I$(TILER_INC) $(CNN_LIB_INCLUDE) -I$(MODEL_BUILD) 47 | # pass also macro defines to the compiler 48 | APP_CFLAGS += -DAT_MODEL_PREFIX=$(MODEL_PREFIX) $(MODEL_SIZE_CFLAGS) 49 | APP_CFLAGS += -DSTACK_SIZE=$(CLUSTER_STACK_SIZE) -DSLAVE_STACK_SIZE=$(CLUSTER_SLAVE_STACK_SIZE) 50 | APP_CFLAGS += -DAT_IMAGE=$(IMAGE) -DPERF -DMODEL_ID=$(MODEL_ID) -DFREQ_FC=$(FREQ_FC) -DFREQ_CL=$(FREQ_CL) 51 | APP_CFLAGS += -DAT_CONSTRUCT=$(AT_CONSTRUCT) -DAT_DESTRUCT=$(AT_DESTRUCT) -DAT_CNN=$(AT_CNN) -DAT_L3_ADDR=$(AT_L3_ADDR) 52 | # APP_CFLAGS += -DASYNC=1 53 | 54 | # this line is needed to flash into the chip the model tensors 55 | # and other constants needed by the Autotiler 56 | READFS_FILES=$(abspath $(MODEL_TENSORS)) 57 | PLPBRIDGE_FLAGS += -f 58 | 59 | # all depends on the model 60 | all:: model 61 | 62 | clean:: clean_model 63 | 64 | include common/model_rules.mk 65 | $(info APP_SRCS... $(APP_SRCS)) 66 | $(info APP_CFLAGS... $(APP_CFLAGS)) 67 | include $(RULES_DIR)/pmsis_rules.mk 68 | 69 | -------------------------------------------------------------------------------- /pulp-dronet-v2/gapflow/common.mk: -------------------------------------------------------------------------------- 1 | # MODEL_PREFIX?=mobilenet_v1_1_0_224_quant 2 | MODEL_PREFIX?=network 3 | AT_INPUT_WIDTH?=200 4 | AT_INPUT_HEIGHT?=200 5 | AT_INPUT_COLORS?=1 6 | 7 | ## AT GENERATED NAMES 8 | AT_CONSTRUCT = $(MODEL_PREFIX)CNN_Construct 9 | AT_DESTRUCT = $(MODEL_PREFIX)CNN_Destruct 10 | AT_CNN = $(MODEL_PREFIX)CNN 11 | AT_L3_ADDR = $(MODEL_PREFIX)_L3_Flash 12 | -------------------------------------------------------------------------------- /pulp-dronet-v2/gapflow/common/model_decl.mk: -------------------------------------------------------------------------------- 1 | MODEL_PYTHON=python3 2 | 3 | NNTOOL_MODEL_DIR = nntool_output 4 | NNTOOL_SCRIPT_DEPLOY?=nntool_input/nntool_scripts/nntool_script_deployment 5 | NNTOOL_SCRIPT_EVAL?=nntool_input/nntool_scripts/nntool_script_model_eval 6 | MODEL_SUFFIX=_SQ8BIT 7 | ifeq ($(TRAINING_DATASET), ORIGINAL) 8 | TRAINED_ONNX_MODEL=nntool_input/models_onnx/model_original.onnx 9 | else 10 | TRAINED_ONNX_MODEL=nntool_input/models_onnx/model_original_himax.onnx 11 | endif 12 | 13 | # Increase this to improve accuracy 14 | MODEL_COMMON_INC ?= $(GAP_SDK_HOME)/libs/gap_lib/include 15 | MODEL_COMMON_SRC ?= $(GAP_SDK_HOME)/libs/gap_lib/img_io 16 | MODEL_COMMON_SRC_FILES ?= ImgIO.c 17 | MODEL_COMMON_SRCS = $(realpath $(addprefix $(MODEL_COMMON_SRC)/,$(MODEL_COMMON_SRC_FILES))) 18 | MODEL_BUILD = BUILD_MODEL$(MODEL_SUFFIX) 19 | 20 | MODEL_ONNX = $(MODEL_BUILD)/$(MODEL_PREFIX).onnx 21 | 22 | TENSORS_DIR = $(NNTOOL_MODEL_DIR)/tensors 23 | MODEL_TENSORS = $(MODEL_BUILD)/$(MODEL_PREFIX)_L3_Flash_Const.dat 24 | 25 | MODEL_STATE = $(MODEL_BUILD)/$(MODEL_PREFIX).json 26 | MODEL_SRC = $(MODEL_PREFIX)Model.c 27 | MODEL_GEN = $(MODEL_BUILD)/$(MODEL_PREFIX)Kernels 28 | MODEL_GEN_C = $(addsuffix .c, $(MODEL_GEN)) 29 | MODEL_GEN_CLEAN = $(MODEL_GEN_C) $(addsuffix .h, $(MODEL_GEN)) 30 | MODEL_GEN_EXE = $(MODEL_BUILD)/GenTile 31 | 32 | IMAGES = images 33 | RM=rm -f 34 | 35 | NNTOOL=nntool 36 | 37 | NNTOOL_PATH = $(GAP_SDK_HOME)/tools/nntool/ 38 | NNTOOL_KERNEL_PATH = $(NNTOOL_PATH)/autotiler/kernels 39 | NNTOOL_GENERATOR_PATH = $(NNTOOL_PATH)/autotiler/generators 40 | 41 | MODEL_LIB_SQ8 += $(TILER_CNN_KERNEL_PATH_SQ8)/CNN_Activation_SQ8.c 42 | MODEL_LIB_SQ8 += $(TILER_CNN_KERNEL_PATH_SQ8)/CNN_Bias_Linear_SQ8.c 43 | MODEL_LIB_SQ8 += $(TILER_CNN_KERNEL_PATH_SQ8)/CNN_Conv_SQ8.c 44 | MODEL_LIB_SQ8 += $(TILER_CNN_KERNEL_PATH_SQ8)/CNN_Pooling_SQ8.c 45 | MODEL_LIB_SQ8 += $(TILER_CNN_KERNEL_PATH_SQ8)/CNN_Conv_DW_SQ8.c 46 | MODEL_LIB_SQ8 += $(TILER_CNN_KERNEL_PATH_SQ8)/CNN_MatAlgebra_SQ8.c 47 | MODEL_LIB_SQ8 += $(TILER_CNN_KERNEL_PATH_SQ8)/CNN_SoftMax_SQ8.c 48 | MODEL_LIB_SQ8 += $(TILER_CNN_KERNEL_PATH_SQ8)/CNN_AT_Misc.c 49 | MODEL_LIB_SQ8 += $(TILER_CNN_KERNEL_PATH_SQ8)/RNN_SQ8.c 50 | MODEL_LIB_SQ8 += $(NNTOOL_KERNEL_PATH)/norm_transpose.c 51 | MODEL_LIB_INCLUDE_SQ8 = -I$(TILER_CNN_KERNEL_PATH) -I$(TILER_CNN_KERNEL_PATH_SQ8) -I$(NNTOOL_KERNEL_PATH) 52 | MODEL_GEN_SQ8 += $(TILER_CNN_GENERATOR_PATH)/CNN_Generator_Util.c 53 | MODEL_GEN_SQ8 += $(TILER_CNN_GENERATOR_PATH_SQ8)/CNN_Generators_SQ8.c 54 | MODEL_GEN_SQ8 += $(TILER_CNN_GENERATOR_PATH_SQ8)/RNN_Generators_SQ8.c 55 | MODEL_GEN_SQ8 += $(NNTOOL_GENERATOR_PATH)/nntool_extra_generators.c 56 | MODEL_GEN_INCLUDE_SQ8 = -I$(TILER_CNN_GENERATOR_PATH) -I$(TILER_CNN_GENERATOR_PATH_SQ8) -I$(NNTOOL_GENERATOR_PATH) 57 | MODEL_LIB_SQ8 += $(NNTOOL_KERNEL_PATH)/copy.c 58 | 59 | 60 | MODEL_SIZE_CFLAGS = -DAT_INPUT_HEIGHT=$(AT_INPUT_HEIGHT) -DAT_INPUT_WIDTH=$(AT_INPUT_WIDTH) -DAT_INPUT_COLORS=$(AT_INPUT_COLORS) 61 | 62 | CNN_GEN = $(MODEL_GEN_SQ8) 63 | CNN_GEN_INCLUDE = $(MODEL_GEN_INCLUDE_SQ8) 64 | CNN_LIB = $(MODEL_LIB_SQ8) 65 | CNN_LIB_INCLUDE = $(MODEL_LIB_INCLUDE_SQ8) 66 | 67 | -------------------------------------------------------------------------------- /pulp-dronet-v2/gapflow/common/model_rules.mk: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2017 GreenWaves Technologies 2 | # All rights reserved. 3 | 4 | # This software may be modified and distributed under the terms 5 | # of the BSD license. See the LICENSE file for details. 6 | 7 | 8 | CNN_GEN = $(MODEL_GEN_SQ8) 9 | CNN_GEN_INCLUDE = $(MODEL_GEN_INCLUDE_SQ8) 10 | CNN_LIB = $(MODEL_LIB_SQ8) 11 | CNN_LIB_INCLUDE = $(MODEL_LIB_INCLUDE_SQ8) 12 | 13 | 14 | ifdef MODEL_L1_MEMORY 15 | MODEL_GEN_EXTRA_FLAGS += --L1 $(MODEL_L1_MEMORY) 16 | endif 17 | 18 | ifdef MODEL_L2_MEMORY 19 | MODEL_GEN_EXTRA_FLAGS += --L2 $(MODEL_L2_MEMORY) 20 | endif 21 | 22 | ifdef MODEL_L3_MEMORY 23 | MODEL_GEN_EXTRA_FLAGS += --L3 $(MODEL_L3_MEMORY) 24 | endif 25 | 26 | 27 | $(MODEL_BUILD): 28 | mkdir $(MODEL_BUILD) 29 | 30 | $(MODEL_ONNX): $(TRAINED_ONNX_MODEL) | $(MODEL_BUILD) 31 | cp $< $@ 32 | 33 | 34 | $(MODEL_STATE): $(MODEL_ONNX) $(IMAGES) $(NNTOOL_SCRIPT_DEPLOY) | $(MODEL_BUILD) 35 | echo "GENERATING NNTOOL STATE FILE" 36 | echo $(MODEL_BUILD) 37 | $(NNTOOL) -s $(NNTOOL_SCRIPT_DEPLOY) $< -q 38 | 39 | nntool_model_evaluation: $(MODEL_ONNX) $(IMAGES) $(NNTOOL_SCRIPT_EVAL) | $(MODEL_BUILD) 40 | echo "Computing testing scores" 41 | echo $(MODEL_BUILD) 42 | $(NNTOOL) -s $(NNTOOL_SCRIPT_EVAL) $< -q 43 | 44 | nntool_state: $(MODEL_STATE) 45 | 46 | # Runs NNTOOL with its state file to generate the autotiler model code 47 | $(NNTOOL_MODEL_DIR)/$(MODEL_SRC): $(MODEL_STATE) $(MODEL_ONNX) | $(MODEL_BUILD) 48 | echo "GENERATING AUTOTILER MODEL" 49 | $(NNTOOL) -g -M $(NNTOOL_MODEL_DIR) -m $(MODEL_SRC) -T $(TENSORS_DIR) $< 50 | 51 | nntool_gen: $(NNTOOL_MODEL_DIR)/$(MODEL_SRC) 52 | 53 | # Build the code generator from the model code 54 | $(MODEL_GEN_EXE): $(CNN_GEN) $(NNTOOL_MODEL_DIR)/$(MODEL_SRC) | $(MODEL_BUILD) 55 | echo "COMPILING AUTOTILER MODEL" 56 | gcc -g -o $(MODEL_GEN_EXE) -I. -I$(TILER_INC) -I$(TILER_EMU_INC) $(CNN_GEN_INCLUDE) $(CNN_LIB_INCLUDE) $^ $(TILER_LIB) $(SDL_FLAGS) 57 | 58 | compile_model: $(MODEL_GEN_EXE) 59 | 60 | # Run the code generator to generate GAP graph and kernel code 61 | $(MODEL_GEN_C): $(MODEL_GEN_EXE) 62 | echo "RUNNING AUTOTILER MODEL" 63 | $(MODEL_GEN_EXE) -o $(MODEL_BUILD) -c $(MODEL_BUILD) $(MODEL_GEN_EXTRA_FLAGS) 64 | 65 | # A phony target to simplify including this in the main Makefile 66 | model: $(MODEL_GEN_C) 67 | 68 | clean_model: 69 | $(RM) $(MODEL_GEN_EXE) 70 | $(RM) -rf $(MODEL_BUILD) 71 | $(RM) -rf $(NNTOOL_MODEL_DIR) 72 | 73 | .PHONY: model clean_model clean_train train nntool_gen nntool_state compile_model clean_nntool 74 | -------------------------------------------------------------------------------- /pulp-dronet-v2/gapflow/images/frame_1.pgm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v2/gapflow/images/frame_1.pgm -------------------------------------------------------------------------------- /pulp-dronet-v2/gapflow/images/frame_2.pgm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v2/gapflow/images/frame_2.pgm -------------------------------------------------------------------------------- /pulp-dronet-v2/gapflow/images/frame_3.pgm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v2/gapflow/images/frame_3.pgm -------------------------------------------------------------------------------- /pulp-dronet-v2/gapflow/images/frame_4.pgm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v2/gapflow/images/frame_4.pgm -------------------------------------------------------------------------------- /pulp-dronet-v2/gapflow/images/frame_5.pgm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v2/gapflow/images/frame_5.pgm -------------------------------------------------------------------------------- /pulp-dronet-v2/gapflow/images/frame_6.pgm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v2/gapflow/images/frame_6.pgm -------------------------------------------------------------------------------- /pulp-dronet-v2/gapflow/images/frame_7.pgm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v2/gapflow/images/frame_7.pgm -------------------------------------------------------------------------------- /pulp-dronet-v2/gapflow/images/frame_8.pgm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v2/gapflow/images/frame_8.pgm -------------------------------------------------------------------------------- /pulp-dronet-v2/gapflow/images/frame_9.pgm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v2/gapflow/images/frame_9.pgm -------------------------------------------------------------------------------- /pulp-dronet-v2/gapflow/main.h: -------------------------------------------------------------------------------- 1 | /*----------------------------------------------------------------------------- 2 | Copyright (C) 2020-2021 ETH Zurich, Switzerland, University of Bologna, Italy. 3 | All rights reserved. 4 | 5 | Licensed under the Apache License, Version 2.0 (the "License"); 6 | you may not use this file except in compliance with the License. 7 | See LICENSE in the top directory for details. 8 | You may obtain a copy of the License at 9 | 10 | http://www.apache.org/licenses/LICENSE-2.0 11 | 12 | Unless required by applicable law or agreed to in writing, software 13 | distributed under the License is distributed on an "AS IS" BASIS, 14 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | See the License for the specific language governing permissions and 16 | limitations under the License. 17 | 18 | File: main.h 19 | Authors: Vlad Niculescu 20 | Lorenzo Lamberti 21 | Daniele Palossi 22 | Date: 15.03.2021 23 | -------------------------------------------------------------------------------*/ 24 | 25 | 26 | #ifndef __IMAGENET_H__ 27 | #define __IMAGENET_H__ 28 | 29 | // #include "mobilenet_v1_1_0_224_quantKernels.h" 30 | 31 | #include "Gap.h" 32 | #include "gaplib/ImgIO.h" 33 | 34 | #ifdef __EMUL__ 35 | #include 36 | #include 37 | #include 38 | #include 39 | #include 40 | #include 41 | #endif 42 | 43 | #endif -------------------------------------------------------------------------------- /pulp-dronet-v2/gapflow/network.h: -------------------------------------------------------------------------------- 1 | /*----------------------------------------------------------------------------- 2 | Copyright (C) 2020-2021 ETH Zurich, Switzerland, University of Bologna, Italy. 3 | All rights reserved. 4 | 5 | Licensed under the Apache License, Version 2.0 (the "License"); 6 | you may not use this file except in compliance with the License. 7 | See LICENSE in the top directory for details. 8 | You may obtain a copy of the License at 9 | 10 | http://www.apache.org/licenses/LICENSE-2.0 11 | 12 | Unless required by applicable law or agreed to in writing, software 13 | distributed under the License is distributed on an "AS IS" BASIS, 14 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | See the License for the specific language governing permissions and 16 | limitations under the License. 17 | 18 | File: network.h 19 | Authors: Vlad Niculescu 20 | Lorenzo Lamberti 21 | Daniele Palossi 22 | Date: 15.03.2021 23 | -------------------------------------------------------------------------------*/ 24 | 25 | 26 | #ifndef __NETWORK_H__ 27 | #define __NETWORK_H__ 28 | 29 | #include "Gap.h" 30 | #define __PREFIX(x) network ## x 31 | extern AT_HYPERFLASH_FS_EXT_ADDR_TYPE __PREFIX(_L3_Flash); 32 | // char AT_GraphNodeNames[16] = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p'}; 33 | 34 | #endif 35 | -------------------------------------------------------------------------------- /pulp-dronet-v2/gapflow/nntool_input/models_onnx/model_original.onnx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v2/gapflow/nntool_input/models_onnx/model_original.onnx -------------------------------------------------------------------------------- /pulp-dronet-v2/gapflow/nntool_input/models_onnx/model_original_himax.onnx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v2/gapflow/nntool_input/models_onnx/model_original_himax.onnx -------------------------------------------------------------------------------- /pulp-dronet-v2/gapflow/nntool_input/nntool_scripts/nntool_script_deployment: -------------------------------------------------------------------------------- 1 | set debug true 2 | adjust 3 | fusions --scale8 4 | set input_norm_func "x:x/255" 5 | aquant -f 8 nntool_input/quantization_files/* 6 | qshow 7 | imageformat input_1 bw8 shift_int8 8 | set l3_ram_ext_managed true 9 | set default_input_exec_location "AT_MEM_L3_HRAM" 10 | #set default_input_exec_location "AT_MEM_L2" 11 | set graph_produce_node_names true 12 | set graph_reorder_constant_in true 13 | set graph_produce_operinfos true 14 | set graph_monitor_cycles true 15 | save_state -------------------------------------------------------------------------------- /pulp-dronet-v2/gapflow/nntool_input/nntool_scripts/nntool_script_model_eval: -------------------------------------------------------------------------------- 1 | set debug true 2 | adjust 3 | fusions --scale8 4 | set input_norm_func "x:x/255" 5 | aquant -f 8 nntool_input/quantization_files/* 6 | #qshow 7 | run_pyscript nntool_input/nntool_model_eval.py -------------------------------------------------------------------------------- /pulp-dronet-v2/gapflow/nntool_input/quantization_files/1479425441182877835.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v2/gapflow/nntool_input/quantization_files/1479425441182877835.jpg -------------------------------------------------------------------------------- /pulp-dronet-v2/gapflow/nntool_input/quantization_files/1479425441232704425.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v2/gapflow/nntool_input/quantization_files/1479425441232704425.jpg -------------------------------------------------------------------------------- /pulp-dronet-v2/gapflow/nntool_input/quantization_files/1479425441282730750.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v2/gapflow/nntool_input/quantization_files/1479425441282730750.jpg -------------------------------------------------------------------------------- /pulp-dronet-v2/gapflow/nntool_input/quantization_files/1479425443382879593.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v2/gapflow/nntool_input/quantization_files/1479425443382879593.jpg -------------------------------------------------------------------------------- /pulp-dronet-v2/gapflow/nntool_input/quantization_files/1479425443432903742.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v2/gapflow/nntool_input/quantization_files/1479425443432903742.jpg -------------------------------------------------------------------------------- /pulp-dronet-v2/gapflow/nntool_input/quantization_files/1479425443582977575.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v2/gapflow/nntool_input/quantization_files/1479425443582977575.jpg -------------------------------------------------------------------------------- /pulp-dronet-v2/gapflow/nntool_input/quantization_files/1479425443682982187.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v2/gapflow/nntool_input/quantization_files/1479425443682982187.jpg -------------------------------------------------------------------------------- /pulp-dronet-v2/gapflow/nntool_input/quantization_files/1479425443782898808.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v2/gapflow/nntool_input/quantization_files/1479425443782898808.jpg -------------------------------------------------------------------------------- /pulp-dronet-v2/gapflow/nntool_input/quantization_files/1479425443833012205.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v2/gapflow/nntool_input/quantization_files/1479425443833012205.jpg -------------------------------------------------------------------------------- /pulp-dronet-v2/gapflow/nntool_input/quantization_files/1479425444633286162.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v2/gapflow/nntool_input/quantization_files/1479425444633286162.jpg -------------------------------------------------------------------------------- /pulp-dronet-v2/gapflow/nntool_input/quantization_files/1479425445983503068.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v2/gapflow/nntool_input/quantization_files/1479425445983503068.jpg -------------------------------------------------------------------------------- /pulp-dronet-v2/gapflow/nntool_input/quantization_files/1479425447083596868.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v2/gapflow/nntool_input/quantization_files/1479425447083596868.jpg -------------------------------------------------------------------------------- /pulp-dronet-v2/gapflow/nntool_input/quantization_files/1479425447133467484.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v2/gapflow/nntool_input/quantization_files/1479425447133467484.jpg -------------------------------------------------------------------------------- /pulp-dronet-v2/gapflow/nntool_input/quantization_files/1479425448133784412.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v2/gapflow/nntool_input/quantization_files/1479425448133784412.jpg -------------------------------------------------------------------------------- /pulp-dronet-v2/gapflow/nntool_input/quantization_files/1479425448633847925.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v2/gapflow/nntool_input/quantization_files/1479425448633847925.jpg -------------------------------------------------------------------------------- /pulp-dronet-v2/gapflow/nntool_input/quantization_files/1479425451134304083.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v2/gapflow/nntool_input/quantization_files/1479425451134304083.jpg -------------------------------------------------------------------------------- /pulp-dronet-v2/gapflow/nntool_input/quantization_files/frame_00001.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v2/gapflow/nntool_input/quantization_files/frame_00001.jpg -------------------------------------------------------------------------------- /pulp-dronet-v2/gapflow/nntool_input/quantization_files/frame_00013.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v2/gapflow/nntool_input/quantization_files/frame_00013.jpg -------------------------------------------------------------------------------- /pulp-dronet-v2/gapflow/nntool_input/quantization_files/frame_00014.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v2/gapflow/nntool_input/quantization_files/frame_00014.jpg -------------------------------------------------------------------------------- /pulp-dronet-v2/gapflow/nntool_input/quantization_files/frame_00015.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v2/gapflow/nntool_input/quantization_files/frame_00015.jpg -------------------------------------------------------------------------------- /pulp-dronet-v2/gapflow/nntool_input/quantization_files/frame_00016.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v2/gapflow/nntool_input/quantization_files/frame_00016.jpg -------------------------------------------------------------------------------- /pulp-dronet-v2/gapflow/nntool_input/quantization_files/frame_00017.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v2/gapflow/nntool_input/quantization_files/frame_00017.jpg -------------------------------------------------------------------------------- /pulp-dronet-v2/gapflow/nntool_input/quantization_files/frame_00018.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v2/gapflow/nntool_input/quantization_files/frame_00018.jpg -------------------------------------------------------------------------------- /pulp-dronet-v2/gapflow/nntool_input/quantization_files/frame_00032.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v2/gapflow/nntool_input/quantization_files/frame_00032.jpg -------------------------------------------------------------------------------- /pulp-dronet-v2/gapflow/nntool_input/quantization_files/frame_00033.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v2/gapflow/nntool_input/quantization_files/frame_00033.jpg -------------------------------------------------------------------------------- /pulp-dronet-v2/gapflow/nntool_input/quantization_files/frame_00034.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v2/gapflow/nntool_input/quantization_files/frame_00034.jpg -------------------------------------------------------------------------------- /pulp-dronet-v2/gapflow/nntool_input/quantization_files/frame_00035.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v2/gapflow/nntool_input/quantization_files/frame_00035.jpg -------------------------------------------------------------------------------- /pulp-dronet-v2/gapflow/nntool_input/quantization_files/frame_00036.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v2/gapflow/nntool_input/quantization_files/frame_00036.jpg -------------------------------------------------------------------------------- /pulp-dronet-v2/gapflow/nntool_input/quantization_files/frame_00037.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v2/gapflow/nntool_input/quantization_files/frame_00037.jpg -------------------------------------------------------------------------------- /pulp-dronet-v2/gapflow/nntool_input/quantization_files/frame_00038.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v2/gapflow/nntool_input/quantization_files/frame_00038.jpg -------------------------------------------------------------------------------- /pulp-dronet-v2/gapflow/nntool_input/quantization_files/frame_00058.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v2/gapflow/nntool_input/quantization_files/frame_00058.jpg -------------------------------------------------------------------------------- /pulp-dronet-v2/gapflow/nntool_input/quantization_files/frame_00064.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v2/gapflow/nntool_input/quantization_files/frame_00064.jpg -------------------------------------------------------------------------------- /pulp-dronet-v2/gapflow/nntool_input/quantization_files/frame_00078.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v2/gapflow/nntool_input/quantization_files/frame_00078.jpg -------------------------------------------------------------------------------- /pulp-dronet-v2/gapflow/nntool_input/quantization_files/frame_00079.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v2/gapflow/nntool_input/quantization_files/frame_00079.jpg -------------------------------------------------------------------------------- /pulp-dronet-v2/gapflow/nntool_input/quantization_files/frame_00121.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v2/gapflow/nntool_input/quantization_files/frame_00121.jpg -------------------------------------------------------------------------------- /pulp-dronet-v2/gapflow/nntool_input/quantization_files/frame_00131.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v2/gapflow/nntool_input/quantization_files/frame_00131.jpg -------------------------------------------------------------------------------- /pulp-dronet-v2/gapflow/nntool_input/quantization_files/frame_00135.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v2/gapflow/nntool_input/quantization_files/frame_00135.jpg -------------------------------------------------------------------------------- /pulp-dronet-v2/gapflow/nntool_input/quantization_files/frame_00136.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v2/gapflow/nntool_input/quantization_files/frame_00136.jpg -------------------------------------------------------------------------------- /pulp-dronet-v2/gapflow/nntool_input/quantization_files/frame_00139.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v2/gapflow/nntool_input/quantization_files/frame_00139.jpg -------------------------------------------------------------------------------- /pulp-dronet-v2/gapflow/nntool_input/quantization_files/frame_00140.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v2/gapflow/nntool_input/quantization_files/frame_00140.jpg -------------------------------------------------------------------------------- /pulp-dronet-v2/gapflow/nntool_input/quantization_files/frame_00143.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v2/gapflow/nntool_input/quantization_files/frame_00143.jpg -------------------------------------------------------------------------------- /pulp-dronet-v2/gapflow/nntool_input/quantization_files/frame_00151.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v2/gapflow/nntool_input/quantization_files/frame_00151.jpg -------------------------------------------------------------------------------- /pulp-dronet-v2/gapflow/nntool_input/quantization_files/frame_00158.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v2/gapflow/nntool_input/quantization_files/frame_00158.jpg -------------------------------------------------------------------------------- /pulp-dronet-v2/gapflow/nntool_input/quantization_files/frame_00164.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v2/gapflow/nntool_input/quantization_files/frame_00164.jpg -------------------------------------------------------------------------------- /pulp-dronet-v2/gapflow/nntool_input/quantization_files/frame_00191.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v2/gapflow/nntool_input/quantization_files/frame_00191.jpg -------------------------------------------------------------------------------- /pulp-dronet-v2/gapflow/nntool_input/quantization_files/frame_00192.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v2/gapflow/nntool_input/quantization_files/frame_00192.jpg -------------------------------------------------------------------------------- /pulp-dronet-v2/gapflow/nntool_input/quantization_files/frame_00193.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v2/gapflow/nntool_input/quantization_files/frame_00193.jpg -------------------------------------------------------------------------------- /pulp-dronet-v2/gapflow/nntool_input/quantization_files/frame_00194.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v2/gapflow/nntool_input/quantization_files/frame_00194.jpg -------------------------------------------------------------------------------- /pulp-dronet-v2/gapflow/nntool_input/quantization_files/frame_00195.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v2/gapflow/nntool_input/quantization_files/frame_00195.jpg -------------------------------------------------------------------------------- /pulp-dronet-v2/model/dronet_v2_gapflow_original.pth: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v2/model/dronet_v2_gapflow_original.pth -------------------------------------------------------------------------------- /pulp-dronet-v2/model/dronet_v2_gapflow_original_himax.pth: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v2/model/dronet_v2_gapflow_original_himax.pth -------------------------------------------------------------------------------- /pulp-dronet-v2/model/dronet_v2_nemo_dory_original.pth: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v2/model/dronet_v2_nemo_dory_original.pth -------------------------------------------------------------------------------- /pulp-dronet-v2/model/dronet_v2_nemo_dory_original_himax.pth: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/pulp-dronet-v2/model/dronet_v2_nemo_dory_original_himax.pth -------------------------------------------------------------------------------- /tiny-pulp-dronet-v3/conda_deps.yml: -------------------------------------------------------------------------------- 1 | name: pulp-dronet-v3 2 | channels: 3 | - defaults 4 | dependencies: 5 | - _libgcc_mutex=0.1=main 6 | - blas=1.0=mkl 7 | - ca-certificates=2021.4.13=h06a4308_1 8 | - certifi=2020.12.5=py38h06a4308_0 9 | - intel-openmp=2021.2.0=h06a4308_610 10 | - ld_impl_linux-64=2.33.1=h53a641e_7 11 | - libffi=3.3=he6710b0_2 12 | - libgcc-ng=9.1.0=hdf63c60_0 13 | - libstdcxx-ng=9.1.0=hdf63c60_0 14 | - mkl=2021.2.0=h06a4308_296 15 | - mkl-service=2.3.0=py38h27cfd23_1 16 | - mkl_fft=1.3.0=py38h42c9631_2 17 | - mkl_random=1.2.1=py38ha9443f7_2 18 | - ncurses=6.2=he6710b0_1 19 | - numpy=1.20.1=py38h93e21f0_0 20 | - numpy-base=1.20.1=py38h7d8b39e_0 21 | - openssl=1.1.1k=h27cfd23_0 22 | - pip=21.0.1=py38h06a4308_0 23 | - python=3.8.8=hdb3f193_5 24 | - readline=8.1=h27cfd23_0 25 | - setuptools=52.0.0=py38h06a4308_0 26 | - six=1.15.0=py38h06a4308_0 27 | - sqlite=3.35.4=hdfb4753_0 28 | - tk=8.6.10=hbc83047_0 29 | - wheel=0.36.2=pyhd3eb1b0_0 30 | - xz=5.2.5=h7b6447c_0 31 | - zlib=1.2.11=h7b6447c_3 32 | - pip: 33 | - joblib==1.0.1 34 | - opencv-python>=4.5.1.48 35 | - packaging==20.9 36 | - pandas==1.2.3 37 | - pillow==8.2.0 38 | - tensorboard==2.6.0 39 | - pyparsing==2.4.7 40 | - threadpoolctl==2.1.0 41 | - torch==1.5.0 42 | - torchsummary==1.5.1 43 | - torchvision==0.6.0 44 | - tqdm==4.60.0 45 | - typing-extensions==3.10.0.0 46 | -------------------------------------------------------------------------------- /tiny-pulp-dronet-v3/config.py: -------------------------------------------------------------------------------- 1 | #-----------------------------------------------------------------------------# 2 | # Copyright(C) 2024 University of Bologna, Italy, ETH Zurich, Switzerland. # 3 | # All rights reserved. # 4 | # # 5 | # Licensed under the Apache License, Version 2.0 (the "License"); # 6 | # you may not use this file except in compliance with the License. # 7 | # See LICENSE in the top directory for details. # 8 | # You may obtain a copy of the License at # 9 | # # 10 | # http://www.apache.org/licenses/LICENSE-2.0 # 11 | # # 12 | # Unless required by applicable law or agreed to in writing, software # 13 | # distributed under the License is distributed on an "AS IS" BASIS, # 14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 15 | # See the License for the specific language governing permissions and # 16 | # limitations under the License. # 17 | # # 18 | # File: config.py # 19 | # Authors: # 20 | # Lorenzo Lamberti # 21 | # Daniele Palossi # 22 | # Date: 01.03.2024 # 23 | #-----------------------------------------------------------------------------# 24 | 25 | # This file gathers all the default values for the following scripts: 26 | # training.py, testing.py, evaluation.py, quantize.py 27 | 28 | class cfg: 29 | pass 30 | 31 | # == For all scripts == 32 | # dataset 33 | cfg.data_path= './dataset/training/' 34 | cfg.data_path_testing = './dataset/testing/' 35 | # logging 36 | cfg.logs_dir='./logs/' 37 | cfg.model_weights_path='model/pulp-dronet-v3-resblock-1.0.pth' # testing.py = pretrained model, training.py = model to resume training. 38 | # CNN architecture 39 | cfg.block_type='ResBlock' 40 | cfg.depth_mult=1.0 41 | cfg.bypass=True 42 | # cpu/gpu 43 | cfg.gpu='0' 44 | cfg.workers=4 45 | 46 | # == training.py == 47 | # paths for saving the models 48 | cfg.checkpoint_path = './checkpoints/' 49 | cfg.model_name = 'pulp_dronet_v3' 50 | # training params 51 | cfg.resume_training = False 52 | cfg.epochs=100 53 | cfg.training_batch_size=32 54 | cfg.learning_rate = 1e-3 55 | cfg.lr_decay = 1e-5 56 | cfg.hard_mining_train = False 57 | cfg.early_stopping = False 58 | cfg.patience = 15 59 | cfg.delta = 0 60 | 61 | # == testing.py == 62 | cfg.testing_batch_size=32 63 | 64 | # == quantize.py == 65 | cfg.nemo_export_path = 'nemo_output/' 66 | cfg.nemo_onnx_name = 'pulp_dronet_id_4dory.onnx' -------------------------------------------------------------------------------- /tiny-pulp-dronet-v3/dataset/testing/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/tiny-pulp-dronet-v3/dataset/testing/.gitkeep -------------------------------------------------------------------------------- /tiny-pulp-dronet-v3/dataset/training/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/tiny-pulp-dronet-v3/dataset/training/.gitkeep -------------------------------------------------------------------------------- /tiny-pulp-dronet-v3/drone-applications/crazyflie-dronet-app/Makefile: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2024 University of Bologna, Italy, ETH Zurich, Switzerland. 2 | # All rights reserved. 3 | 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # See LICENSE in the top directory for details. 7 | # You may obtain a copy of the License at 8 | 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, 13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | # See the License for the specific language governing permissions and 15 | # limitations under the License. 16 | 17 | # File: Makefile 18 | # Author: Lorenzo Lamberti 19 | # Date: 01.03.2024 20 | 21 | # enable app support 22 | APP=1 23 | APP_STACKSIZE=300 # increased from default 24 | 25 | VPATH += src/ 26 | PROJ_OBJ += app_dronet.o 27 | PROJ_OBJ += uart_dma_pulp.o 28 | INCLUDES += -Iinc 29 | 30 | CRAZYFLIE_BASE=../external/crazyflie-firmware 31 | include $(CRAZYFLIE_BASE)/Makefile 32 | -------------------------------------------------------------------------------- /tiny-pulp-dronet-v3/drone-applications/crazyflie-dronet-app/current_platform.mk: -------------------------------------------------------------------------------- 1 | PLATFORM=cf2 2 | -------------------------------------------------------------------------------- /tiny-pulp-dronet-v3/drone-applications/crazyflie-dronet-app/inc/uart_dma_setup.h: -------------------------------------------------------------------------------- 1 | /*----------------------------------------------------------------------------- 2 | Copyright (C) 2024 University of Bologna, Italy, ETH Zurich, Switzerland. 3 | All rights reserved. 4 | 5 | Licensed under the Apache License, Version 2.0 (the "License"); 6 | you may not use this file except in compliance with the License. 7 | See LICENSE in the top directory for details. 8 | You may obtain a copy of the License at 9 | 10 | http://www.apache.org/licenses/LICENSE-2.0 11 | 12 | Unless required by applicable law or agreed to in writing, software 13 | distributed under the License is distributed on an "AS IS" BASIS, 14 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | See the License for the specific language governing permissions and 16 | limitations under the License. 17 | 18 | File: uart_dma_setup.c 19 | Author: Lorenzo Lamberti 20 | Date: 01.03.2024 21 | -------------------------------------------------------------------------------*/ 22 | 23 | #ifndef __UART_DMA_SETUP_H 24 | #define __UART_DMA_SETUP_H 25 | 26 | #include "uart_dma_pulp.h" 27 | 28 | void USART_DMA_Start(uint32_t baudrate, int8_t *pulpRxBuffer, uint32_t BUFFERSIZE); 29 | void USART_Reset_Buffer(int8_t *pulpRxBuffer); 30 | 31 | #endif 32 | -------------------------------------------------------------------------------- /tiny-pulp-dronet-v3/drone-applications/external/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/tiny-pulp-dronet-v3/drone-applications/external/.gitkeep -------------------------------------------------------------------------------- /tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/pulp-dronet-v3/DORY_network/ConvBNRelu0_weights.hex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/pulp-dronet-v3/DORY_network/ConvBNRelu0_weights.hex -------------------------------------------------------------------------------- /tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/pulp-dronet-v3/DORY_network/ConvBNRelu10_weights.hex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/pulp-dronet-v3/DORY_network/ConvBNRelu10_weights.hex -------------------------------------------------------------------------------- /tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/pulp-dronet-v3/DORY_network/ConvBNRelu11_weights.hex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/pulp-dronet-v3/DORY_network/ConvBNRelu11_weights.hex -------------------------------------------------------------------------------- /tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/pulp-dronet-v3/DORY_network/ConvBNRelu12_weights.hex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/pulp-dronet-v3/DORY_network/ConvBNRelu12_weights.hex -------------------------------------------------------------------------------- /tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/pulp-dronet-v3/DORY_network/ConvBNRelu2_weights.hex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/pulp-dronet-v3/DORY_network/ConvBNRelu2_weights.hex -------------------------------------------------------------------------------- /tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/pulp-dronet-v3/DORY_network/ConvBNRelu3_weights.hex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/pulp-dronet-v3/DORY_network/ConvBNRelu3_weights.hex -------------------------------------------------------------------------------- /tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/pulp-dronet-v3/DORY_network/ConvBNRelu4_weights.hex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/pulp-dronet-v3/DORY_network/ConvBNRelu4_weights.hex -------------------------------------------------------------------------------- /tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/pulp-dronet-v3/DORY_network/ConvBNRelu6_weights.hex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/pulp-dronet-v3/DORY_network/ConvBNRelu6_weights.hex -------------------------------------------------------------------------------- /tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/pulp-dronet-v3/DORY_network/ConvBNRelu7_weights.hex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/pulp-dronet-v3/DORY_network/ConvBNRelu7_weights.hex -------------------------------------------------------------------------------- /tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/pulp-dronet-v3/DORY_network/ConvBNRelu8_weights.hex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/pulp-dronet-v3/DORY_network/ConvBNRelu8_weights.hex -------------------------------------------------------------------------------- /tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/pulp-dronet-v3/DORY_network/MatMul14_weights.hex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/pulp-dronet-v3/DORY_network/MatMul14_weights.hex -------------------------------------------------------------------------------- /tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/pulp-dronet-v3/DORY_network/inc/dory.h: -------------------------------------------------------------------------------- 1 | /* 2 | * dory.h 3 | * Alessio Burrello 4 | * 5 | * Copyright (C) 2019-2020 University of Bologna 6 | * 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | */ 19 | 20 | #include "mchan_test.h" 21 | #include "pulp.h" 22 | unsigned int dory_get_tile_1d( 23 | unsigned x, 24 | int tile_ii, 25 | int tile_size_i, 26 | int data_size 27 | ); 28 | unsigned int dory_get_tile_2d( 29 | unsigned int x, 30 | int tile_ii, 31 | int tile_jj, 32 | int tile_size_i, 33 | int tile_size_j, 34 | int tile_stride_j, 35 | int data_size 36 | ); 37 | unsigned int dory_get_tile_3d( 38 | unsigned int x, 39 | int tile_ii, 40 | int tile_jj, 41 | int tile_kk, 42 | int tile_size_i, 43 | int tile_size_j, 44 | int tile_size_k, 45 | int tile_stride_j, 46 | int tile_stride_k, 47 | int tile_overlap_i, 48 | int tile_overlap_j, 49 | int tile_overlap_k, 50 | int tile_offset_i, 51 | int tile_offset_j, 52 | int tile_offset_k, 53 | int data_size 54 | ); 55 | 56 | unsigned int dory_get_tile_4d( 57 | unsigned int x, 58 | int tile_ii, 59 | int tile_jj, 60 | int tile_kk, 61 | int tile_ll, 62 | int tile_size_i, 63 | int tile_size_j, 64 | int tile_size_k, 65 | int tile_size_l, 66 | int tile_stride_j, 67 | int tile_stride_k, 68 | int tile_stride_l, 69 | int tile_offset_i, 70 | int tile_offset_j, 71 | int tile_offset_k, 72 | int tile_offset_l, 73 | int data_size 74 | ); 75 | 76 | void dory_dma_memcpy_3d_custom( 77 | unsigned int ext, 78 | unsigned int loc, 79 | unsigned short size, 80 | unsigned short stride_1, 81 | unsigned short stride_0, 82 | unsigned short length_2, 83 | unsigned short length_0, 84 | unsigned int dir, 85 | unsigned int *id 86 | ); 87 | 88 | void dory_dma_memcpy_3d_custom_hwc_to_chw( 89 | unsigned int ext, 90 | unsigned int loc, 91 | unsigned short size, 92 | unsigned short stride_1, 93 | unsigned short stride_0, 94 | unsigned short length_2, 95 | unsigned short length_0, 96 | unsigned int dir, 97 | unsigned int *id 98 | ); -------------------------------------------------------------------------------- /tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/pulp-dronet-v3/DORY_network/inc/layerAddRelu13.h: -------------------------------------------------------------------------------- 1 | /* 2 | * layer_template_h.h 3 | * Alessio Burrello 4 | * 5 | * Copyright (C) 2019-2020 University of Bologna 6 | * 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | */ 19 | 20 | #include "pulp.h" 21 | #include "dory.h" 22 | 23 | void layerAddRelu13( 24 | void *args 25 | ); 26 | -------------------------------------------------------------------------------- /tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/pulp-dronet-v3/DORY_network/inc/layerAddRelu5.h: -------------------------------------------------------------------------------- 1 | /* 2 | * layer_template_h.h 3 | * Alessio Burrello 4 | * 5 | * Copyright (C) 2019-2020 University of Bologna 6 | * 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | */ 19 | 20 | #include "pulp.h" 21 | #include "dory.h" 22 | 23 | void layerAddRelu5( 24 | void *args 25 | ); 26 | -------------------------------------------------------------------------------- /tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/pulp-dronet-v3/DORY_network/inc/layerAddRelu9.h: -------------------------------------------------------------------------------- 1 | /* 2 | * layer_template_h.h 3 | * Alessio Burrello 4 | * 5 | * Copyright (C) 2019-2020 University of Bologna 6 | * 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | */ 19 | 20 | #include "pulp.h" 21 | #include "dory.h" 22 | 23 | void layerAddRelu9( 24 | void *args 25 | ); 26 | -------------------------------------------------------------------------------- /tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/pulp-dronet-v3/DORY_network/inc/layerConvBNRelu0.h: -------------------------------------------------------------------------------- 1 | /* 2 | * layer_template_h.h 3 | * Alessio Burrello 4 | * 5 | * Copyright (C) 2019-2020 University of Bologna 6 | * 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | */ 19 | 20 | #include "pulp.h" 21 | #include "dory.h" 22 | 23 | void layerConvBNRelu0( 24 | void *args 25 | ); 26 | -------------------------------------------------------------------------------- /tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/pulp-dronet-v3/DORY_network/inc/layerConvBNRelu10.h: -------------------------------------------------------------------------------- 1 | /* 2 | * layer_template_h.h 3 | * Alessio Burrello 4 | * 5 | * Copyright (C) 2019-2020 University of Bologna 6 | * 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | */ 19 | 20 | #include "pulp.h" 21 | #include "dory.h" 22 | 23 | void layerConvBNRelu10( 24 | void *args 25 | ); 26 | -------------------------------------------------------------------------------- /tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/pulp-dronet-v3/DORY_network/inc/layerConvBNRelu11.h: -------------------------------------------------------------------------------- 1 | /* 2 | * layer_template_h.h 3 | * Alessio Burrello 4 | * 5 | * Copyright (C) 2019-2020 University of Bologna 6 | * 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | */ 19 | 20 | #include "pulp.h" 21 | #include "dory.h" 22 | 23 | void layerConvBNRelu11( 24 | void *args 25 | ); 26 | -------------------------------------------------------------------------------- /tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/pulp-dronet-v3/DORY_network/inc/layerConvBNRelu12.h: -------------------------------------------------------------------------------- 1 | /* 2 | * layer_template_h.h 3 | * Alessio Burrello 4 | * 5 | * Copyright (C) 2019-2020 University of Bologna 6 | * 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | */ 19 | 20 | #include "pulp.h" 21 | #include "dory.h" 22 | 23 | void layerConvBNRelu12( 24 | void *args 25 | ); 26 | -------------------------------------------------------------------------------- /tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/pulp-dronet-v3/DORY_network/inc/layerConvBNRelu2.h: -------------------------------------------------------------------------------- 1 | /* 2 | * layer_template_h.h 3 | * Alessio Burrello 4 | * 5 | * Copyright (C) 2019-2020 University of Bologna 6 | * 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | */ 19 | 20 | #include "pulp.h" 21 | #include "dory.h" 22 | 23 | void layerConvBNRelu2( 24 | void *args 25 | ); 26 | -------------------------------------------------------------------------------- /tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/pulp-dronet-v3/DORY_network/inc/layerConvBNRelu3.h: -------------------------------------------------------------------------------- 1 | /* 2 | * layer_template_h.h 3 | * Alessio Burrello 4 | * 5 | * Copyright (C) 2019-2020 University of Bologna 6 | * 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | */ 19 | 20 | #include "pulp.h" 21 | #include "dory.h" 22 | 23 | void layerConvBNRelu3( 24 | void *args 25 | ); 26 | -------------------------------------------------------------------------------- /tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/pulp-dronet-v3/DORY_network/inc/layerConvBNRelu4.h: -------------------------------------------------------------------------------- 1 | /* 2 | * layer_template_h.h 3 | * Alessio Burrello 4 | * 5 | * Copyright (C) 2019-2020 University of Bologna 6 | * 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | */ 19 | 20 | #include "pulp.h" 21 | #include "dory.h" 22 | 23 | void layerConvBNRelu4( 24 | void *args 25 | ); 26 | -------------------------------------------------------------------------------- /tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/pulp-dronet-v3/DORY_network/inc/layerConvBNRelu6.h: -------------------------------------------------------------------------------- 1 | /* 2 | * layer_template_h.h 3 | * Alessio Burrello 4 | * 5 | * Copyright (C) 2019-2020 University of Bologna 6 | * 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | */ 19 | 20 | #include "pulp.h" 21 | #include "dory.h" 22 | 23 | void layerConvBNRelu6( 24 | void *args 25 | ); 26 | -------------------------------------------------------------------------------- /tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/pulp-dronet-v3/DORY_network/inc/layerConvBNRelu7.h: -------------------------------------------------------------------------------- 1 | /* 2 | * layer_template_h.h 3 | * Alessio Burrello 4 | * 5 | * Copyright (C) 2019-2020 University of Bologna 6 | * 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | */ 19 | 20 | #include "pulp.h" 21 | #include "dory.h" 22 | 23 | void layerConvBNRelu7( 24 | void *args 25 | ); 26 | -------------------------------------------------------------------------------- /tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/pulp-dronet-v3/DORY_network/inc/layerConvBNRelu8.h: -------------------------------------------------------------------------------- 1 | /* 2 | * layer_template_h.h 3 | * Alessio Burrello 4 | * 5 | * Copyright (C) 2019-2020 University of Bologna 6 | * 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | */ 19 | 20 | #include "pulp.h" 21 | #include "dory.h" 22 | 23 | void layerConvBNRelu8( 24 | void *args 25 | ); 26 | -------------------------------------------------------------------------------- /tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/pulp-dronet-v3/DORY_network/inc/layerMatMul14_last.h: -------------------------------------------------------------------------------- 1 | /* 2 | * layer_template_h.h 3 | * Alessio Burrello 4 | * 5 | * Copyright (C) 2019-2020 University of Bologna 6 | * 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | */ 19 | 20 | #include "pulp.h" 21 | #include "dory.h" 22 | 23 | void layerMatMul14_last( 24 | void *args 25 | ); 26 | -------------------------------------------------------------------------------- /tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/pulp-dronet-v3/DORY_network/inc/layerMaxPool1.h: -------------------------------------------------------------------------------- 1 | /* 2 | * layer_template_h.h 3 | * Alessio Burrello 4 | * 5 | * Copyright (C) 2019-2020 University of Bologna 6 | * 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | */ 19 | 20 | #include "pulp.h" 21 | #include "dory.h" 22 | 23 | void layerMaxPool1( 24 | void *args 25 | ); 26 | -------------------------------------------------------------------------------- /tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/pulp-dronet-v3/DORY_network/inc/mem_controller.h: -------------------------------------------------------------------------------- 1 | /* 2 | * mem_controller.h 3 | * Alessio Burrello 4 | * 5 | * Copyright (C) 2019-2020 University of Bologna 6 | * 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | */ 19 | 20 | void dory_L2_alloc(unsigned int * L2_pointer_input_begin, 21 | unsigned int * L2_pointer_input_end, 22 | unsigned int * L2_pointer_output, 23 | int memory_to_allocate, 24 | int begin_end_n // begin is 1, end is 0 25 | ); 26 | void dory_L2_free(unsigned int * L2_pointer_input_begin, 27 | unsigned int * L2_pointer_input_end, 28 | int memory_to_free, 29 | int begin_end_n // begin is 1, end is 0 30 | ); 31 | 32 | void dory_L1_alloc(unsigned int * L2_pointer_input_begin, 33 | unsigned int * L2_pointer_output, 34 | int memory_to_allocate 35 | ); 36 | 37 | 38 | void dory_L1_free(unsigned int * L2_pointer_input_begin, 39 | int memory_to_free 40 | ); -------------------------------------------------------------------------------- /tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/pulp-dronet-v3/DORY_network/inc/network.h: -------------------------------------------------------------------------------- 1 | /* 2 | * network.h 3 | * Alessio Burrello 4 | * 5 | * Copyright (C) 2019-2020 University of Bologna 6 | * 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | */ 19 | int network_setup(); 20 | void network_run_FabricController(); 21 | void cluster_main(void *arg); 22 | void pulp_parallel(void *arg); 23 | void network_run_FabricController(); -------------------------------------------------------------------------------- /tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/pulp-dronet-v3/DORY_network/inc/pulp_nn_utils.h: -------------------------------------------------------------------------------- 1 | /* 2 | * pulp_nn_utils.h 3 | * Nazareno Bruschi 4 | * Angelo Garofalo 5 | * 6 | * Copyright (C) 2018-2020 University of Bologna 7 | * 8 | * Licensed under the Apache License, Version 2.0 (the "License"); 9 | * you may not use this file except in compliance with the License. 10 | * You may obtain a copy of the License at 11 | * 12 | * http://www.apache.org/licenses/LICENSE-2.0 13 | * 14 | * Unless required by applicable law or agreed to in writing, software 15 | * distributed under the License is distributed on an "AS IS" BASIS, 16 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 17 | * See the License for the specific language governing permissions and 18 | * limitations under the License. 19 | */ 20 | 21 | #ifdef GAP_SDK 22 | #include "pulp.h" 23 | #endif 24 | 25 | uint8_t pulp_nn_bn_quant_u8 (int32_t phi, int64_t k, int64_t lambda, int8_t d); 26 | 27 | uint8_t pulp_nn_quant_u8(int32_t phi, int16_t m, int8_t d); 28 | 29 | uint8_t pulp_nn_add_quant_u8(uint8_t pix1,uint8_t pix2,int16_t m1,int16_t m2,int8_t d); 30 | 31 | void pulp_nn_im2col_int8_dmafree(uint8_t * pInput, uint8_t * pOutput, unsigned int blockSize); 32 | 33 | void pulp_nn_im2col_int8(uint8_t * pInput, uint8_t * pOutput, unsigned int blockSize); 34 | 35 | void pulp_nn_compare_and_replace_if_larger_int8(uint8_t * base,uint8_t * target,uint16_t length); 36 | 37 | void pulp_nn_avg_and_replace_int8(int8_t * base,int8_t * target,uint16_t length); 38 | 39 | uint8_t pulp_nn_bn_quant_u4 (int32_t phi, int64_t k, int64_t lambda, int8_t d); 40 | 41 | uint8_t pulp_nn_quant_u4(int32_t phi, int16_t m, int8_t d); 42 | 43 | uint8_t pulp_nn_bn_quant_u2 (int32_t phi, int64_t k, int64_t lambda, int8_t d); 44 | 45 | uint8_t pulp_nn_quant_u2(int32_t phi, int16_t m, int8_t d); 46 | 47 | v4s pulp_nn_i4_to_i8_r( int8_t *pSrc); 48 | 49 | v4s pulp_nn_i2_to_i8_r( int8_t *pSrc); 50 | 51 | v4u pulp_nn_u4_to_u8_r(uint8_t *pSrc); 52 | 53 | v4u pulp_nn_u2_to_u8_r(uint8_t *pSrc); 54 | 55 | void pulp_nn_i4_to_i8( int8_t *pSrc, int8_t *pDst); 56 | 57 | void pulp_nn_i2_to_i8( int8_t * pSrc, int8_t * pDst); 58 | 59 | void pulp_nn_u4_to_u8(uint8_t *pSrc, uint8_t *pDst); 60 | 61 | void pulp_nn_u2_to_u8(uint8_t * pSrc, uint8_t * pDst); 62 | 63 | void pulp_zero_mem(uint8_t * pBuffer, unsigned int size); 64 | 65 | void pulp_nn_im2col_u8_to_u8(uint8_t * pInput, uint8_t * pOutput, unsigned int blockSize); 66 | 67 | void pulp_nn_im2col_u4_to_u8(uint8_t * pInput, uint8_t * pOutput, unsigned int blockSize); 68 | 69 | void pulp_nn_im2col_u2_to_u8(uint8_t * pInput, uint8_t * pOutput, unsigned int blockSize); 70 | 71 | int8_t pulp_nn_i4_quant(int input, int16_t * pThr); 72 | 73 | int8_t pulp_nn_i2_quant(int input, int16_t * pThr); 74 | -------------------------------------------------------------------------------- /tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/pulp-dronet-v3/DORY_network/inputs.hex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/pulp-dronet-v3/DORY_network/inputs.hex -------------------------------------------------------------------------------- /tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/pulp-dronet-v3/DORY_network/src/mem_controller.c: -------------------------------------------------------------------------------- 1 | /* 2 | * mem_controller.c 3 | * Alessio Burrello 4 | * 5 | * Copyright (C) 2019-2020 University of Bologna 6 | * 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | */ 19 | 20 | #include "mem_controller.h" 21 | //#define VERBOSE 22 | 23 | /* allocation and de-allocation functions for manually manage L2 and L1 memory. 24 | The allocation in L2 is made in a bidirectional way inside an allocator. 25 | Based on begin_end parameter, the allocation/free happens in begin/end of the buffer. 26 | */ 27 | 28 | void dory_L2_alloc(unsigned int * L2_pointer_input_begin, 29 | unsigned int * L2_pointer_input_end, 30 | unsigned int * L2_pointer_output, 31 | int memory_to_allocate, 32 | int begin_end_n // begin is 1, end is 0 33 | ) 34 | { 35 | if (begin_end_n == 1) 36 | { 37 | *(L2_pointer_output) = *(L2_pointer_input_begin); 38 | *(L2_pointer_input_begin) = *(L2_pointer_input_begin) + memory_to_allocate; 39 | } 40 | else 41 | { 42 | 43 | *(L2_pointer_output) = *(L2_pointer_input_end) - memory_to_allocate; 44 | *(L2_pointer_input_end) = *(L2_pointer_input_end) - memory_to_allocate; 45 | } 46 | #ifdef VERBOSE 47 | printf("L2_pointer_input_begin %d, L2_pointer_input_end %d, L2_pointer_allocated %d with a memory of %d at the begin/end (1/0) %d\n", *L2_pointer_input_begin - 469810000, *L2_pointer_input_end - 469810000, *L2_pointer_output - 469810000, memory_to_allocate, begin_end_n); 48 | printf("End-in %d\n", *L2_pointer_input_end - *L2_pointer_input_begin); 49 | #endif 50 | } 51 | 52 | 53 | void dory_L2_free(unsigned int * L2_pointer_input_begin, 54 | unsigned int * L2_pointer_input_end, 55 | int memory_to_free, 56 | int begin_end_n // begin is 1, end is 0 57 | ) 58 | { 59 | if (begin_end_n == 1) 60 | { 61 | *(L2_pointer_input_begin) = *(L2_pointer_input_begin) - memory_to_free; 62 | } 63 | else 64 | { 65 | *(L2_pointer_input_end) = *(L2_pointer_input_end) + memory_to_free; 66 | } 67 | #ifdef VERBOSE 68 | printf("L2_pointer_input_begin %d, L2_pointer_input_end %d, free a memory of %d at the begin/end (1/0) %d\n", *L2_pointer_input_begin - 469810000, *L2_pointer_input_end - 469810000, memory_to_free, begin_end_n); 69 | printf("End-in %d\n", *L2_pointer_input_end - *L2_pointer_input_begin); 70 | #endif 71 | } 72 | 73 | void dory_L1_alloc(unsigned int * L2_pointer_input_begin, 74 | unsigned int * L2_pointer_output, 75 | int memory_to_allocate 76 | ) 77 | { 78 | *(L2_pointer_output) = *(L2_pointer_input_begin); 79 | *(L2_pointer_input_begin) = *(L2_pointer_input_begin) + memory_to_allocate; 80 | 81 | } 82 | 83 | 84 | void dory_L1_free(unsigned int * L2_pointer_input_begin, 85 | int memory_to_free 86 | ) 87 | { 88 | *(L2_pointer_input_begin) = *(L2_pointer_input_begin) - memory_to_free; 89 | 90 | } -------------------------------------------------------------------------------- /tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/pulp-dronet-v3/DORY_network/src/pulp_nn_add.c: -------------------------------------------------------------------------------- 1 | /* 2 | * pulp_nn_add.c 3 | * Nazareno Bruschi 4 | * Angelo Garofalo 5 | * 6 | * Copyright (C) 2018-2020 University of Bologna 7 | * 8 | * Licensed under the Apache License, Version 2.0 (the "License"); 9 | * you may not use this file except in compliance with the License. 10 | * You may obtain a copy of the License at 11 | * 12 | * http://www.apache.org/licenses/LICENSE-2.0 13 | * 14 | * Unless required by applicable law or agreed to in writing, software 15 | * distributed under the License is distributed on an "AS IS" BASIS, 16 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 17 | * See the License for the specific language governing permissions and 18 | * limitations under the License. 19 | */ 20 | 21 | #include "pmsis.h" 22 | #include "pulp_nn_utils.h" 23 | 24 | #define log2(x) __builtin_pulp_fl1(x) 25 | #define min(a,b) ((a)<(b)?(a):(b)) 26 | 27 | void __attribute__ ((noinline)) pulp_nn_add ( 28 | uint8_t * Im_in_1, // pointer to the input feature map1 29 | uint8_t * Im_in_2, // pointer to the input feature map2 30 | uint16_t ch_im_in, // number of channels of the IFM 31 | uint16_t dim_im_in_h, 32 | uint16_t dim_im_in_w, 33 | uint8_t * Im_out, // pointer to the output 34 | uint16_t out_mult1, // paramter to requantize 35 | uint16_t out_mult2, // paramter to requantize 36 | uint16_t out_shift // paramter to requantize 37 | ) 38 | { 39 | int core_id = pi_core_id(); 40 | int n_cores = NUM_CORES; 41 | if (dim_im_in_h < NUM_CORES) 42 | { 43 | n_cores = dim_im_in_h; 44 | } 45 | int Log2Core = log2(n_cores); 46 | 47 | int chunck = (dim_im_in_h >> Log2Core) + ((dim_im_in_h & (NUM_CORES-1))!=0); 48 | 49 | int start = min(chunck * core_id, dim_im_in_h); 50 | int stop = min(start + chunck, dim_im_in_h); 51 | uint8_t *target1 = Im_in_1 + start*ch_im_in*dim_im_in_w; 52 | uint8_t *target2 = Im_in_2 + start*ch_im_in*dim_im_in_w; 53 | uint8_t *pOut = Im_out + start*ch_im_in*dim_im_in_w; 54 | uint8_t res = 0; 55 | for (int spatial = 0; spatial 4 | * Angelo Garofalo 5 | * 6 | * Copyright (C) 2018-2020 University of Bologna 7 | * 8 | * Licensed under the Apache License, Version 2.0 (the "License"); 9 | * you may not use this file except in compliance with the License. 10 | * You may obtain a copy of the License at 11 | * 12 | * http://www.apache.org/licenses/LICENSE-2.0 13 | * 14 | * Unless required by applicable law or agreed to in writing, software 15 | * distributed under the License is distributed on an "AS IS" BASIS, 16 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 17 | * See the License for the specific language governing permissions and 18 | * limitations under the License. 19 | */ 20 | 21 | #include "pmsis.h" 22 | #include "pulp_nn_utils.h" 23 | 24 | #define log2(x) __builtin_pulp_fl1(x) 25 | #define min(a,b) ((a)<(b)?(a):(b)) 26 | #define clip8(x) __builtin_pulp_clipu_r(x, 255) 27 | 28 | void __attribute__ ((noinline)) pulp_nn_avgpool ( 29 | uint8_t * Im_in, // pointer to the input feature map 30 | uint16_t dim_im_in_x, // spatial dimension of the input feature map 31 | uint16_t dim_im_in_y, 32 | uint16_t ch_im_in, // number of channels of the IFM 33 | uint16_t dim_kernel_x, // spatial dimension of the pooling filter 34 | uint16_t dim_kernel_y, // spatial dimension of the pooling filter 35 | uint16_t padding, // amount of padding 36 | uint16_t stride, // amount of stride 37 | uint16_t dim_im_out_x, // reduced spatial dimension of output 38 | uint16_t dim_im_out_y, 39 | int8_t * bufferA, // actually not used in this fx 40 | uint8_t * Im_out, // pointer to the output 41 | int32_t * pOutBufferAcc, 42 | int8_t flag_acc_buff_out, 43 | int8_t flag_first_ch_out, 44 | int flag_relu, 45 | const uint16_t out_shift, 46 | const uint16_t out_mult 47 | ) { 48 | int core_id = pi_core_id(); 49 | int n_cores = NUM_CORES; 50 | int i,j; 51 | if (pi_core_id()==0) 52 | { 53 | for (int scan_channel = 0; scan_channel> out_shift; 69 | sum = sum/(dim_kernel_x*dim_kernel_y); 70 | sum = clip8(sum);} 71 | else 72 | sum = sum/(dim_kernel_x*dim_kernel_y); 73 | *(Im_out+scan_channel + ch_im_in*(w_in)+ch_im_in*dim_im_in_x*(h_in))=(uint8_t)sum; 74 | i++; 75 | } 76 | j++; 77 | } 78 | } 79 | } 80 | pi_cl_team_barrier(0); 81 | 82 | } 83 | -------------------------------------------------------------------------------- /tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/pulp-dronet-v3/DORY_network/src/pulp_nn_linear.c: -------------------------------------------------------------------------------- 1 | /* 2 | * pulp_nn_linear.c 3 | * Nazareno Bruschi 4 | * Angelo Garofalo 5 | * 6 | * Copyright (C) 2018-2020 University of Bologna 7 | * 8 | * Licensed under the Apache License, Version 2.0 (the "License"); 9 | * you may not use this file except in compliance with the License. 10 | * You may obtain a copy of the License at 11 | * 12 | * http://www.apache.org/licenses/LICENSE-2.0 13 | * 14 | * Unless required by applicable law or agreed to in writing, software 15 | * distributed under the License is distributed on an "AS IS" BASIS, 16 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 17 | * See the License for the specific language governing permissions and 18 | * limitations under the License. 19 | */ 20 | 21 | #include "pmsis.h" 22 | #include "pulp_nn_utils.h" 23 | 24 | #define log2(x) __builtin_pulp_fl1(x) 25 | #define min(a,b) ((a)<(b)?(a):(b)) 26 | #define SumDotp(a, b, c) __builtin_pulp_sdotusp4(a, b, c) 27 | #define clip8(x) __builtin_pulp_clipu_r(x, 255) 28 | 29 | void pulp_nn_linear( 30 | uint8_t *pInBuffer, 31 | int8_t *pWeights, 32 | uint16_t dim_vec, 33 | uint16_t num_o_neurons, 34 | int8_t *bias, 35 | uint16_t bias_shift, 36 | int8_t out_shift, 37 | uint16_t out_mult, 38 | int64_t *k, 39 | int64_t *lambda, 40 | uint8_t *pOutBuffer, 41 | int flag_relu, 42 | int flag_batch_norm, 43 | unsigned int * memory_chan 44 | ) 45 | { 46 | int core_id = pi_core_id(); 47 | int Log2Core = log2(NUM_CORES); 48 | int chunk = (num_o_neurons >> Log2Core) + ((num_o_neurons & (NUM_CORES-1))!=0); 49 | int start = min(chunk * core_id, num_o_neurons); 50 | int stop = min(start + chunk, num_o_neurons); 51 | 52 | v4u vecA; 53 | v4s vecB; 54 | 55 | uint8_t *pOut = (uint8_t *) pOutBuffer + start; 56 | 57 | int64_t *k1 = k + start; 58 | int64_t *lambda1 = lambda + start; 59 | 60 | for(int i=start; i> 2); j++) 73 | { 74 | vecA = *((v4u*)pA); 75 | vecB = *((v4s*)pB); 76 | sum = SumDotp(vecA, vecB, sum); 77 | pA+=4; 78 | pB+=4; 79 | } 80 | uint16_t col_cnt = dim_vec & 0x3; 81 | while (col_cnt) 82 | { 83 | uint8_t inA = *pA; 84 | pA++; 85 | int8_t inB = *pB; 86 | pB++; 87 | sum += inA * inB; 88 | col_cnt--; 89 | } 90 | if (flag_batch_norm && flag_relu) 91 | { 92 | *pOut = pulp_nn_bn_quant_u8(sum, *k1, *lambda1, out_shift); 93 | pOut++; 94 | k1++; 95 | lambda1++; 96 | } 97 | else 98 | { 99 | if (flag_relu == 1) 100 | { 101 | *pOut = pulp_nn_quant_u8(sum, out_mult, out_shift); 102 | pOut++; 103 | } 104 | else 105 | { 106 | *pOut = (uint8_t) clip8(sum >> out_shift); 107 | pOut++; 108 | } 109 | } 110 | } 111 | pi_cl_team_barrier(0); 112 | } 113 | -------------------------------------------------------------------------------- /tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/pulp-dronet-v3/DORY_network/src/pulp_nn_linear_out_32.c: -------------------------------------------------------------------------------- 1 | /* 2 | * pulp_nn_dw_linear_out_32.c 3 | * Nazareno Bruschi 4 | * Angelo Garofalo 5 | * 6 | * Copyright (C) 2018-2020 University of Bologna 7 | * 8 | * Licensed under the Apache License, Version 2.0 (the "License"); 9 | * you may not use this file except in compliance with the License. 10 | * You may obtain a copy of the License at 11 | * 12 | * http://www.apache.org/licenses/LICENSE-2.0 13 | * 14 | * Unless required by applicable law or agreed to in writing, software 15 | * distributed under the License is distributed on an "AS IS" BASIS, 16 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 17 | * See the License for the specific language governing permissions and 18 | * limitations under the License. 19 | */ 20 | 21 | #include "pmsis.h" 22 | #include "pulp_nn_utils.h" 23 | 24 | #define log2(x) __builtin_pulp_fl1(x) 25 | #define min(a,b) ((a)<(b)?(a):(b)) 26 | #define SumDotp(a, b, c) __builtin_pulp_sdotusp4(a, b, c) 27 | 28 | void pulp_nn_linear_out_32( 29 | uint8_t *pInBuffer, 30 | int8_t *pWeights, 31 | uint16_t dim_vec, 32 | uint16_t num_o_neurons, 33 | int8_t *bias, 34 | uint16_t bias_shift, 35 | int8_t out_shift, 36 | uint16_t out_mult, 37 | int64_t *k, 38 | int64_t *lambda, 39 | int32_t *pOutBuffer, 40 | int flag_relu, 41 | int flag_batch_norm, 42 | unsigned int * memory_chan 43 | ) 44 | { 45 | int core_id = pi_core_id(); 46 | int Log2Core = log2(NUM_CORES); 47 | int chunk = (num_o_neurons >> Log2Core) + ((num_o_neurons & (NUM_CORES-1))!=0); 48 | int start = min(chunk * core_id, num_o_neurons); 49 | int stop = min(start + chunk, num_o_neurons); 50 | 51 | v4u vecA; 52 | v4s vecB; 53 | 54 | int32_t *pOut = (int32_t *) pOutBuffer + start; 55 | 56 | for(int i=start; i> 2); j++) 69 | { 70 | vecA = *((v4u*)pA); 71 | vecB = *((v4s*)pB); 72 | sum = SumDotp(vecA, vecB, sum); 73 | pA+=4; 74 | pB+=4; 75 | } 76 | uint16_t col_cnt = dim_vec & 0x3; 77 | while (col_cnt) 78 | { 79 | uint8_t inA = *pA; 80 | pA++; 81 | int8_t inB = *pB; 82 | pB++; 83 | sum += inA * inB; 84 | col_cnt--; 85 | } 86 | *pOut = sum; 87 | pOut++; 88 | } 89 | pi_cl_team_barrier(0); 90 | } 91 | -------------------------------------------------------------------------------- /tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/tiny-pulp-dronet-v3/DORY_network/ConvBNRelu0_weights.hex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/tiny-pulp-dronet-v3/DORY_network/ConvBNRelu0_weights.hex -------------------------------------------------------------------------------- /tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/tiny-pulp-dronet-v3/DORY_network/ConvBNRelu11_weights.hex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/tiny-pulp-dronet-v3/DORY_network/ConvBNRelu11_weights.hex -------------------------------------------------------------------------------- /tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/tiny-pulp-dronet-v3/DORY_network/ConvBNRelu13_weights.hex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/tiny-pulp-dronet-v3/DORY_network/ConvBNRelu13_weights.hex -------------------------------------------------------------------------------- /tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/tiny-pulp-dronet-v3/DORY_network/ConvBNRelu3_weights.hex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/tiny-pulp-dronet-v3/DORY_network/ConvBNRelu3_weights.hex -------------------------------------------------------------------------------- /tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/tiny-pulp-dronet-v3/DORY_network/ConvBNRelu5_weights.hex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/tiny-pulp-dronet-v3/DORY_network/ConvBNRelu5_weights.hex -------------------------------------------------------------------------------- /tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/tiny-pulp-dronet-v3/DORY_network/ConvBNRelu7_weights.hex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/tiny-pulp-dronet-v3/DORY_network/ConvBNRelu7_weights.hex -------------------------------------------------------------------------------- /tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/tiny-pulp-dronet-v3/DORY_network/ConvBNRelu9_weights.hex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/tiny-pulp-dronet-v3/DORY_network/ConvBNRelu9_weights.hex -------------------------------------------------------------------------------- /tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/tiny-pulp-dronet-v3/DORY_network/ConvDWBNRelu10_weights.hex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/tiny-pulp-dronet-v3/DORY_network/ConvDWBNRelu10_weights.hex -------------------------------------------------------------------------------- /tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/tiny-pulp-dronet-v3/DORY_network/ConvDWBNRelu12_weights.hex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/tiny-pulp-dronet-v3/DORY_network/ConvDWBNRelu12_weights.hex -------------------------------------------------------------------------------- /tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/tiny-pulp-dronet-v3/DORY_network/ConvDWBNRelu2_weights.hex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/tiny-pulp-dronet-v3/DORY_network/ConvDWBNRelu2_weights.hex -------------------------------------------------------------------------------- /tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/tiny-pulp-dronet-v3/DORY_network/ConvDWBNRelu4_weights.hex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/tiny-pulp-dronet-v3/DORY_network/ConvDWBNRelu4_weights.hex -------------------------------------------------------------------------------- /tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/tiny-pulp-dronet-v3/DORY_network/ConvDWBNRelu6_weights.hex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/tiny-pulp-dronet-v3/DORY_network/ConvDWBNRelu6_weights.hex -------------------------------------------------------------------------------- /tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/tiny-pulp-dronet-v3/DORY_network/ConvDWBNRelu8_weights.hex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/tiny-pulp-dronet-v3/DORY_network/ConvDWBNRelu8_weights.hex -------------------------------------------------------------------------------- /tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/tiny-pulp-dronet-v3/DORY_network/MatMul14_weights.hex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/tiny-pulp-dronet-v3/DORY_network/MatMul14_weights.hex -------------------------------------------------------------------------------- /tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/tiny-pulp-dronet-v3/DORY_network/inc/dory.h: -------------------------------------------------------------------------------- 1 | /* 2 | * dory.h 3 | * Alessio Burrello 4 | * 5 | * Copyright (C) 2019-2020 University of Bologna 6 | * 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | */ 19 | 20 | #include "mchan_test.h" 21 | #include "pulp.h" 22 | unsigned int dory_get_tile_1d( 23 | unsigned x, 24 | int tile_ii, 25 | int tile_size_i, 26 | int data_size 27 | ); 28 | unsigned int dory_get_tile_2d( 29 | unsigned int x, 30 | int tile_ii, 31 | int tile_jj, 32 | int tile_size_i, 33 | int tile_size_j, 34 | int tile_stride_j, 35 | int data_size 36 | ); 37 | unsigned int dory_get_tile_3d( 38 | unsigned int x, 39 | int tile_ii, 40 | int tile_jj, 41 | int tile_kk, 42 | int tile_size_i, 43 | int tile_size_j, 44 | int tile_size_k, 45 | int tile_stride_j, 46 | int tile_stride_k, 47 | int tile_overlap_i, 48 | int tile_overlap_j, 49 | int tile_overlap_k, 50 | int tile_offset_i, 51 | int tile_offset_j, 52 | int tile_offset_k, 53 | int data_size 54 | ); 55 | 56 | unsigned int dory_get_tile_4d( 57 | unsigned int x, 58 | int tile_ii, 59 | int tile_jj, 60 | int tile_kk, 61 | int tile_ll, 62 | int tile_size_i, 63 | int tile_size_j, 64 | int tile_size_k, 65 | int tile_size_l, 66 | int tile_stride_j, 67 | int tile_stride_k, 68 | int tile_stride_l, 69 | int tile_offset_i, 70 | int tile_offset_j, 71 | int tile_offset_k, 72 | int tile_offset_l, 73 | int data_size 74 | ); 75 | 76 | void dory_dma_memcpy_3d_custom( 77 | unsigned int ext, 78 | unsigned int loc, 79 | unsigned short size, 80 | unsigned short stride_1, 81 | unsigned short stride_0, 82 | unsigned short length_2, 83 | unsigned short length_0, 84 | unsigned int dir, 85 | unsigned int *id 86 | ); 87 | 88 | void dory_dma_memcpy_3d_custom_hwc_to_chw( 89 | unsigned int ext, 90 | unsigned int loc, 91 | unsigned short size, 92 | unsigned short stride_1, 93 | unsigned short stride_0, 94 | unsigned short length_2, 95 | unsigned short length_0, 96 | unsigned int dir, 97 | unsigned int *id 98 | ); -------------------------------------------------------------------------------- /tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/tiny-pulp-dronet-v3/DORY_network/inc/layerConvBNRelu0.h: -------------------------------------------------------------------------------- 1 | /* 2 | * layer_template_h.h 3 | * Alessio Burrello 4 | * 5 | * Copyright (C) 2019-2020 University of Bologna 6 | * 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | */ 19 | 20 | #include "pulp.h" 21 | #include "dory.h" 22 | 23 | void layerConvBNRelu0( 24 | void *args 25 | ); 26 | -------------------------------------------------------------------------------- /tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/tiny-pulp-dronet-v3/DORY_network/inc/layerConvBNRelu11.h: -------------------------------------------------------------------------------- 1 | /* 2 | * layer_template_h.h 3 | * Alessio Burrello 4 | * 5 | * Copyright (C) 2019-2020 University of Bologna 6 | * 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | */ 19 | 20 | #include "pulp.h" 21 | #include "dory.h" 22 | 23 | void layerConvBNRelu11( 24 | void *args 25 | ); 26 | -------------------------------------------------------------------------------- /tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/tiny-pulp-dronet-v3/DORY_network/inc/layerConvBNRelu13.h: -------------------------------------------------------------------------------- 1 | /* 2 | * layer_template_h.h 3 | * Alessio Burrello 4 | * 5 | * Copyright (C) 2019-2020 University of Bologna 6 | * 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | */ 19 | 20 | #include "pulp.h" 21 | #include "dory.h" 22 | 23 | void layerConvBNRelu13( 24 | void *args 25 | ); 26 | -------------------------------------------------------------------------------- /tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/tiny-pulp-dronet-v3/DORY_network/inc/layerConvBNRelu3.h: -------------------------------------------------------------------------------- 1 | /* 2 | * layer_template_h.h 3 | * Alessio Burrello 4 | * 5 | * Copyright (C) 2019-2020 University of Bologna 6 | * 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | */ 19 | 20 | #include "pulp.h" 21 | #include "dory.h" 22 | 23 | void layerConvBNRelu3( 24 | void *args 25 | ); 26 | -------------------------------------------------------------------------------- /tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/tiny-pulp-dronet-v3/DORY_network/inc/layerConvBNRelu7.h: -------------------------------------------------------------------------------- 1 | /* 2 | * layer_template_h.h 3 | * Alessio Burrello 4 | * 5 | * Copyright (C) 2019-2020 University of Bologna 6 | * 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | */ 19 | 20 | #include "pulp.h" 21 | #include "dory.h" 22 | 23 | void layerConvBNRelu7( 24 | void *args 25 | ); 26 | -------------------------------------------------------------------------------- /tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/tiny-pulp-dronet-v3/DORY_network/inc/layerConvBNRelu9.h: -------------------------------------------------------------------------------- 1 | /* 2 | * layer_template_h.h 3 | * Alessio Burrello 4 | * 5 | * Copyright (C) 2019-2020 University of Bologna 6 | * 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | */ 19 | 20 | #include "pulp.h" 21 | #include "dory.h" 22 | 23 | void layerConvBNRelu9( 24 | void *args 25 | ); 26 | -------------------------------------------------------------------------------- /tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/tiny-pulp-dronet-v3/DORY_network/inc/layerConvDWBNRelu10.h: -------------------------------------------------------------------------------- 1 | /* 2 | * layer_template_h.h 3 | * Alessio Burrello 4 | * 5 | * Copyright (C) 2019-2020 University of Bologna 6 | * 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | */ 19 | 20 | #include "pulp.h" 21 | #include "dory.h" 22 | 23 | void layerConvDWBNRelu10( 24 | void *args 25 | ); 26 | -------------------------------------------------------------------------------- /tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/tiny-pulp-dronet-v3/DORY_network/inc/layerConvDWBNRelu12.h: -------------------------------------------------------------------------------- 1 | /* 2 | * layer_template_h.h 3 | * Alessio Burrello 4 | * 5 | * Copyright (C) 2019-2020 University of Bologna 6 | * 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | */ 19 | 20 | #include "pulp.h" 21 | #include "dory.h" 22 | 23 | void layerConvDWBNRelu12( 24 | void *args 25 | ); 26 | -------------------------------------------------------------------------------- /tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/tiny-pulp-dronet-v3/DORY_network/inc/layerConvDWBNRelu2.h: -------------------------------------------------------------------------------- 1 | /* 2 | * layer_template_h.h 3 | * Alessio Burrello 4 | * 5 | * Copyright (C) 2019-2020 University of Bologna 6 | * 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | */ 19 | 20 | #include "pulp.h" 21 | #include "dory.h" 22 | 23 | void layerConvDWBNRelu2( 24 | void *args 25 | ); 26 | -------------------------------------------------------------------------------- /tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/tiny-pulp-dronet-v3/DORY_network/inc/layerConvDWBNRelu4.h: -------------------------------------------------------------------------------- 1 | /* 2 | * layer_template_h.h 3 | * Alessio Burrello 4 | * 5 | * Copyright (C) 2019-2020 University of Bologna 6 | * 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | */ 19 | 20 | #include "pulp.h" 21 | #include "dory.h" 22 | 23 | void layerConvDWBNRelu4( 24 | void *args 25 | ); 26 | -------------------------------------------------------------------------------- /tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/tiny-pulp-dronet-v3/DORY_network/inc/layerConvDWBNRelu6.h: -------------------------------------------------------------------------------- 1 | /* 2 | * layer_template_h.h 3 | * Alessio Burrello 4 | * 5 | * Copyright (C) 2019-2020 University of Bologna 6 | * 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | */ 19 | 20 | #include "pulp.h" 21 | #include "dory.h" 22 | 23 | void layerConvDWBNRelu6( 24 | void *args 25 | ); 26 | -------------------------------------------------------------------------------- /tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/tiny-pulp-dronet-v3/DORY_network/inc/layerConvDWBNRelu8.h: -------------------------------------------------------------------------------- 1 | /* 2 | * layer_template_h.h 3 | * Alessio Burrello 4 | * 5 | * Copyright (C) 2019-2020 University of Bologna 6 | * 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | */ 19 | 20 | #include "pulp.h" 21 | #include "dory.h" 22 | 23 | void layerConvDWBNRelu8( 24 | void *args 25 | ); 26 | -------------------------------------------------------------------------------- /tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/tiny-pulp-dronet-v3/DORY_network/inc/layerMatMul14_last.h: -------------------------------------------------------------------------------- 1 | /* 2 | * layer_template_h.h 3 | * Alessio Burrello 4 | * 5 | * Copyright (C) 2019-2020 University of Bologna 6 | * 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | */ 19 | 20 | #include "pulp.h" 21 | #include "dory.h" 22 | 23 | void layerMatMul14_last( 24 | void *args 25 | ); 26 | -------------------------------------------------------------------------------- /tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/tiny-pulp-dronet-v3/DORY_network/inc/layerMaxPool1.h: -------------------------------------------------------------------------------- 1 | /* 2 | * layer_template_h.h 3 | * Alessio Burrello 4 | * 5 | * Copyright (C) 2019-2020 University of Bologna 6 | * 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | */ 19 | 20 | #include "pulp.h" 21 | #include "dory.h" 22 | 23 | void layerMaxPool1( 24 | void *args 25 | ); 26 | -------------------------------------------------------------------------------- /tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/tiny-pulp-dronet-v3/DORY_network/inc/mem_controller.h: -------------------------------------------------------------------------------- 1 | /* 2 | * mem_controller.h 3 | * Alessio Burrello 4 | * 5 | * Copyright (C) 2019-2020 University of Bologna 6 | * 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | */ 19 | 20 | void dory_L2_alloc(unsigned int * L2_pointer_input_begin, 21 | unsigned int * L2_pointer_input_end, 22 | unsigned int * L2_pointer_output, 23 | int memory_to_allocate, 24 | int begin_end_n // begin is 1, end is 0 25 | ); 26 | void dory_L2_free(unsigned int * L2_pointer_input_begin, 27 | unsigned int * L2_pointer_input_end, 28 | int memory_to_free, 29 | int begin_end_n // begin is 1, end is 0 30 | ); 31 | 32 | void dory_L1_alloc(unsigned int * L2_pointer_input_begin, 33 | unsigned int * L2_pointer_output, 34 | int memory_to_allocate 35 | ); 36 | 37 | 38 | void dory_L1_free(unsigned int * L2_pointer_input_begin, 39 | int memory_to_free 40 | ); -------------------------------------------------------------------------------- /tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/tiny-pulp-dronet-v3/DORY_network/inc/network.h: -------------------------------------------------------------------------------- 1 | /* 2 | * network.h 3 | * Alessio Burrello 4 | * 5 | * Copyright (C) 2019-2020 University of Bologna 6 | * 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | */ 19 | int network_setup(); 20 | void network_run_FabricController(); 21 | void cluster_main(void *arg); 22 | void pulp_parallel(void *arg); 23 | void network_run_FabricController(); -------------------------------------------------------------------------------- /tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/tiny-pulp-dronet-v3/DORY_network/inc/pulp_nn_utils.h: -------------------------------------------------------------------------------- 1 | /* 2 | * pulp_nn_utils.h 3 | * Nazareno Bruschi 4 | * Angelo Garofalo 5 | * 6 | * Copyright (C) 2018-2020 University of Bologna 7 | * 8 | * Licensed under the Apache License, Version 2.0 (the "License"); 9 | * you may not use this file except in compliance with the License. 10 | * You may obtain a copy of the License at 11 | * 12 | * http://www.apache.org/licenses/LICENSE-2.0 13 | * 14 | * Unless required by applicable law or agreed to in writing, software 15 | * distributed under the License is distributed on an "AS IS" BASIS, 16 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 17 | * See the License for the specific language governing permissions and 18 | * limitations under the License. 19 | */ 20 | 21 | #ifdef GAP_SDK 22 | #include "pulp.h" 23 | #endif 24 | 25 | uint8_t pulp_nn_bn_quant_u8 (int32_t phi, int64_t k, int64_t lambda, int8_t d); 26 | 27 | uint8_t pulp_nn_quant_u8(int32_t phi, int16_t m, int8_t d); 28 | 29 | uint8_t pulp_nn_add_quant_u8(uint8_t pix1,uint8_t pix2,int16_t m1,int16_t m2,int8_t d); 30 | 31 | void pulp_nn_im2col_int8_dmafree(uint8_t * pInput, uint8_t * pOutput, unsigned int blockSize); 32 | 33 | void pulp_nn_im2col_int8(uint8_t * pInput, uint8_t * pOutput, unsigned int blockSize); 34 | 35 | void pulp_nn_compare_and_replace_if_larger_int8(uint8_t * base,uint8_t * target,uint16_t length); 36 | 37 | void pulp_nn_avg_and_replace_int8(int8_t * base,int8_t * target,uint16_t length); 38 | 39 | uint8_t pulp_nn_bn_quant_u4 (int32_t phi, int64_t k, int64_t lambda, int8_t d); 40 | 41 | uint8_t pulp_nn_quant_u4(int32_t phi, int16_t m, int8_t d); 42 | 43 | uint8_t pulp_nn_bn_quant_u2 (int32_t phi, int64_t k, int64_t lambda, int8_t d); 44 | 45 | uint8_t pulp_nn_quant_u2(int32_t phi, int16_t m, int8_t d); 46 | 47 | v4s pulp_nn_i4_to_i8_r( int8_t *pSrc); 48 | 49 | v4s pulp_nn_i2_to_i8_r( int8_t *pSrc); 50 | 51 | v4u pulp_nn_u4_to_u8_r(uint8_t *pSrc); 52 | 53 | v4u pulp_nn_u2_to_u8_r(uint8_t *pSrc); 54 | 55 | void pulp_nn_i4_to_i8( int8_t *pSrc, int8_t *pDst); 56 | 57 | void pulp_nn_i2_to_i8( int8_t * pSrc, int8_t * pDst); 58 | 59 | void pulp_nn_u4_to_u8(uint8_t *pSrc, uint8_t *pDst); 60 | 61 | void pulp_nn_u2_to_u8(uint8_t * pSrc, uint8_t * pDst); 62 | 63 | void pulp_zero_mem(uint8_t * pBuffer, unsigned int size); 64 | 65 | void pulp_nn_im2col_u8_to_u8(uint8_t * pInput, uint8_t * pOutput, unsigned int blockSize); 66 | 67 | void pulp_nn_im2col_u4_to_u8(uint8_t * pInput, uint8_t * pOutput, unsigned int blockSize); 68 | 69 | void pulp_nn_im2col_u2_to_u8(uint8_t * pInput, uint8_t * pOutput, unsigned int blockSize); 70 | 71 | int8_t pulp_nn_i4_quant(int input, int16_t * pThr); 72 | 73 | int8_t pulp_nn_i2_quant(int input, int16_t * pThr); 74 | -------------------------------------------------------------------------------- /tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/tiny-pulp-dronet-v3/DORY_network/inputs.hex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/tiny-pulp-dronet-v3/DORY_network/inputs.hex -------------------------------------------------------------------------------- /tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/tiny-pulp-dronet-v3/DORY_network/src/pulp_nn_add.c: -------------------------------------------------------------------------------- 1 | /* 2 | * pulp_nn_add.c 3 | * Nazareno Bruschi 4 | * Angelo Garofalo 5 | * 6 | * Copyright (C) 2018-2020 University of Bologna 7 | * 8 | * Licensed under the Apache License, Version 2.0 (the "License"); 9 | * you may not use this file except in compliance with the License. 10 | * You may obtain a copy of the License at 11 | * 12 | * http://www.apache.org/licenses/LICENSE-2.0 13 | * 14 | * Unless required by applicable law or agreed to in writing, software 15 | * distributed under the License is distributed on an "AS IS" BASIS, 16 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 17 | * See the License for the specific language governing permissions and 18 | * limitations under the License. 19 | */ 20 | 21 | #include "pmsis.h" 22 | #include "pulp_nn_utils.h" 23 | 24 | #define log2(x) __builtin_pulp_fl1(x) 25 | #define min(a,b) ((a)<(b)?(a):(b)) 26 | 27 | void __attribute__ ((noinline)) pulp_nn_add ( 28 | uint8_t * Im_in_1, // pointer to the input feature map1 29 | uint8_t * Im_in_2, // pointer to the input feature map2 30 | uint16_t ch_im_in, // number of channels of the IFM 31 | uint16_t dim_im_in_h, 32 | uint16_t dim_im_in_w, 33 | uint8_t * Im_out, // pointer to the output 34 | uint16_t out_mult1, // paramter to requantize 35 | uint16_t out_mult2, // paramter to requantize 36 | uint16_t out_shift // paramter to requantize 37 | ) 38 | { 39 | int core_id = pi_core_id(); 40 | int n_cores = NUM_CORES; 41 | if (dim_im_in_h < NUM_CORES) 42 | { 43 | n_cores = dim_im_in_h; 44 | } 45 | int Log2Core = log2(n_cores); 46 | 47 | int chunck = (dim_im_in_h >> Log2Core) + ((dim_im_in_h & (NUM_CORES-1))!=0); 48 | 49 | int start = min(chunck * core_id, dim_im_in_h); 50 | int stop = min(start + chunck, dim_im_in_h); 51 | uint8_t *target1 = Im_in_1 + start*ch_im_in*dim_im_in_w; 52 | uint8_t *target2 = Im_in_2 + start*ch_im_in*dim_im_in_w; 53 | uint8_t *pOut = Im_out + start*ch_im_in*dim_im_in_w; 54 | uint8_t res = 0; 55 | for (int spatial = 0; spatial 4 | * Angelo Garofalo 5 | * 6 | * Copyright (C) 2018-2020 University of Bologna 7 | * 8 | * Licensed under the Apache License, Version 2.0 (the "License"); 9 | * you may not use this file except in compliance with the License. 10 | * You may obtain a copy of the License at 11 | * 12 | * http://www.apache.org/licenses/LICENSE-2.0 13 | * 14 | * Unless required by applicable law or agreed to in writing, software 15 | * distributed under the License is distributed on an "AS IS" BASIS, 16 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 17 | * See the License for the specific language governing permissions and 18 | * limitations under the License. 19 | */ 20 | 21 | #include "pmsis.h" 22 | #include "pulp_nn_utils.h" 23 | 24 | #define log2(x) __builtin_pulp_fl1(x) 25 | #define min(a,b) ((a)<(b)?(a):(b)) 26 | #define clip8(x) __builtin_pulp_clipu_r(x, 255) 27 | 28 | void __attribute__ ((noinline)) pulp_nn_avgpool ( 29 | uint8_t * Im_in, // pointer to the input feature map 30 | uint16_t dim_im_in_x, // spatial dimension of the input feature map 31 | uint16_t dim_im_in_y, 32 | uint16_t ch_im_in, // number of channels of the IFM 33 | uint16_t dim_kernel_x, // spatial dimension of the pooling filter 34 | uint16_t dim_kernel_y, // spatial dimension of the pooling filter 35 | uint16_t padding, // amount of padding 36 | uint16_t stride, // amount of stride 37 | uint16_t dim_im_out_x, // reduced spatial dimension of output 38 | uint16_t dim_im_out_y, 39 | int8_t * bufferA, // actually not used in this fx 40 | uint8_t * Im_out, // pointer to the output 41 | int32_t * pOutBufferAcc, 42 | int8_t flag_acc_buff_out, 43 | int8_t flag_first_ch_out, 44 | int flag_relu, 45 | const uint16_t out_shift, 46 | const uint16_t out_mult 47 | ) { 48 | int core_id = pi_core_id(); 49 | int n_cores = NUM_CORES; 50 | int i,j; 51 | if (pi_core_id()==0) 52 | { 53 | for (int scan_channel = 0; scan_channel> out_shift; 69 | sum = sum/(dim_kernel_x*dim_kernel_y); 70 | sum = clip8(sum);} 71 | else 72 | sum = sum/(dim_kernel_x*dim_kernel_y); 73 | *(Im_out+scan_channel + ch_im_in*(w_in)+ch_im_in*dim_im_in_x*(h_in))=(uint8_t)sum; 74 | i++; 75 | } 76 | j++; 77 | } 78 | } 79 | } 80 | pi_cl_team_barrier(0); 81 | 82 | } 83 | -------------------------------------------------------------------------------- /tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/tiny-pulp-dronet-v3/DORY_network/src/pulp_nn_linear.c: -------------------------------------------------------------------------------- 1 | /* 2 | * pulp_nn_linear.c 3 | * Nazareno Bruschi 4 | * Angelo Garofalo 5 | * 6 | * Copyright (C) 2018-2020 University of Bologna 7 | * 8 | * Licensed under the Apache License, Version 2.0 (the "License"); 9 | * you may not use this file except in compliance with the License. 10 | * You may obtain a copy of the License at 11 | * 12 | * http://www.apache.org/licenses/LICENSE-2.0 13 | * 14 | * Unless required by applicable law or agreed to in writing, software 15 | * distributed under the License is distributed on an "AS IS" BASIS, 16 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 17 | * See the License for the specific language governing permissions and 18 | * limitations under the License. 19 | */ 20 | 21 | #include "pmsis.h" 22 | #include "pulp_nn_utils.h" 23 | 24 | #define log2(x) __builtin_pulp_fl1(x) 25 | #define min(a,b) ((a)<(b)?(a):(b)) 26 | #define SumDotp(a, b, c) __builtin_pulp_sdotusp4(a, b, c) 27 | #define clip8(x) __builtin_pulp_clipu_r(x, 255) 28 | 29 | void pulp_nn_linear( 30 | uint8_t *pInBuffer, 31 | int8_t *pWeights, 32 | uint16_t dim_vec, 33 | uint16_t num_o_neurons, 34 | int8_t *bias, 35 | uint16_t bias_shift, 36 | int8_t out_shift, 37 | uint16_t out_mult, 38 | int64_t *k, 39 | int64_t *lambda, 40 | uint8_t *pOutBuffer, 41 | int flag_relu, 42 | int flag_batch_norm, 43 | unsigned int * memory_chan 44 | ) 45 | { 46 | int core_id = pi_core_id(); 47 | int Log2Core = log2(NUM_CORES); 48 | int chunk = (num_o_neurons >> Log2Core) + ((num_o_neurons & (NUM_CORES-1))!=0); 49 | int start = min(chunk * core_id, num_o_neurons); 50 | int stop = min(start + chunk, num_o_neurons); 51 | 52 | v4u vecA; 53 | v4s vecB; 54 | 55 | uint8_t *pOut = (uint8_t *) pOutBuffer + start; 56 | 57 | int64_t *k1 = k + start; 58 | int64_t *lambda1 = lambda + start; 59 | 60 | for(int i=start; i> 2); j++) 73 | { 74 | vecA = *((v4u*)pA); 75 | vecB = *((v4s*)pB); 76 | sum = SumDotp(vecA, vecB, sum); 77 | pA+=4; 78 | pB+=4; 79 | } 80 | uint16_t col_cnt = dim_vec & 0x3; 81 | while (col_cnt) 82 | { 83 | uint8_t inA = *pA; 84 | pA++; 85 | int8_t inB = *pB; 86 | pB++; 87 | sum += inA * inB; 88 | col_cnt--; 89 | } 90 | if (flag_batch_norm && flag_relu) 91 | { 92 | *pOut = pulp_nn_bn_quant_u8(sum, *k1, *lambda1, out_shift); 93 | pOut++; 94 | k1++; 95 | lambda1++; 96 | } 97 | else 98 | { 99 | if (flag_relu == 1) 100 | { 101 | *pOut = pulp_nn_quant_u8(sum, out_mult, out_shift); 102 | pOut++; 103 | } 104 | else 105 | { 106 | *pOut = (uint8_t) clip8(sum >> out_shift); 107 | pOut++; 108 | } 109 | } 110 | } 111 | pi_cl_team_barrier(0); 112 | } 113 | -------------------------------------------------------------------------------- /tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/tiny-pulp-dronet-v3/DORY_network/src/pulp_nn_linear_out_32.c: -------------------------------------------------------------------------------- 1 | /* 2 | * pulp_nn_dw_linear_out_32.c 3 | * Nazareno Bruschi 4 | * Angelo Garofalo 5 | * 6 | * Copyright (C) 2018-2020 University of Bologna 7 | * 8 | * Licensed under the Apache License, Version 2.0 (the "License"); 9 | * you may not use this file except in compliance with the License. 10 | * You may obtain a copy of the License at 11 | * 12 | * http://www.apache.org/licenses/LICENSE-2.0 13 | * 14 | * Unless required by applicable law or agreed to in writing, software 15 | * distributed under the License is distributed on an "AS IS" BASIS, 16 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 17 | * See the License for the specific language governing permissions and 18 | * limitations under the License. 19 | */ 20 | 21 | #include "pmsis.h" 22 | #include "pulp_nn_utils.h" 23 | 24 | #define log2(x) __builtin_pulp_fl1(x) 25 | #define min(a,b) ((a)<(b)?(a):(b)) 26 | #define SumDotp(a, b, c) __builtin_pulp_sdotusp4(a, b, c) 27 | 28 | void pulp_nn_linear_out_32( 29 | uint8_t *pInBuffer, 30 | int8_t *pWeights, 31 | uint16_t dim_vec, 32 | uint16_t num_o_neurons, 33 | int8_t *bias, 34 | uint16_t bias_shift, 35 | int8_t out_shift, 36 | uint16_t out_mult, 37 | int64_t *k, 38 | int64_t *lambda, 39 | int32_t *pOutBuffer, 40 | int flag_relu, 41 | int flag_batch_norm, 42 | unsigned int * memory_chan 43 | ) 44 | { 45 | int core_id = pi_core_id(); 46 | int Log2Core = log2(NUM_CORES); 47 | int chunk = (num_o_neurons >> Log2Core) + ((num_o_neurons & (NUM_CORES-1))!=0); 48 | int start = min(chunk * core_id, num_o_neurons); 49 | int stop = min(start + chunk, num_o_neurons); 50 | 51 | v4u vecA; 52 | v4s vecB; 53 | 54 | int32_t *pOut = (int32_t *) pOutBuffer + start; 55 | 56 | for(int i=start; i> 2); j++) 69 | { 70 | vecA = *((v4u*)pA); 71 | vecB = *((v4s*)pB); 72 | sum = SumDotp(vecA, vecB, sum); 73 | pA+=4; 74 | pB+=4; 75 | } 76 | uint16_t col_cnt = dim_vec & 0x3; 77 | while (col_cnt) 78 | { 79 | uint8_t inA = *pA; 80 | pA++; 81 | int8_t inB = *pB; 82 | pB++; 83 | sum += inA * inB; 84 | col_cnt--; 85 | } 86 | *pOut = sum; 87 | pOut++; 88 | } 89 | pi_cl_team_barrier(0); 90 | } 91 | -------------------------------------------------------------------------------- /tiny-pulp-dronet-v3/imgs/dataset.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/tiny-pulp-dronet-v3/imgs/dataset.jpg -------------------------------------------------------------------------------- /tiny-pulp-dronet-v3/model/pulp-dronet-v3-resblock-1.0.pth: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/tiny-pulp-dronet-v3/model/pulp-dronet-v3-resblock-1.0.pth -------------------------------------------------------------------------------- /tiny-pulp-dronet-v3/model/tiny-pulp-dronet-v3-dw-pw-0.125.pth: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/tiny-pulp-dronet-v3/model/tiny-pulp-dronet-v3-dw-pw-0.125.pth -------------------------------------------------------------------------------- /tiny-pulp-dronet-v3/training/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pulp-platform/pulp-dronet/b68ad38670ba150f7b502e5a848c30d0991beb42/tiny-pulp-dronet-v3/training/.gitkeep --------------------------------------------------------------------------------