Repository for threat UUV models and simulation supporting the research published at http://hdl.handle.net/10945/62736.
Describe software, languages, and packages required to run the code.
- NetLogo 6.0.4
- Python 3.6
- Jupyter - browser based tool for working with jupyter notebooks (
*.ipynb
files). - numpy - python mathematics library
- matplotlib - python plotting library
- pandas - data processing and analysis library
- Jupyter - browser based tool for working with jupyter notebooks (
- R 3.5.1 - statistical analysis language
- IRkernel - Jupyer notebook kernel for the R language
Describe steps for how to execute the code.
Download and run the installation file for the desired version at https://ccl.northwestern.edu/netlogo/oldversions.shtml
To run full scale models, the memory cap for NetLogo will need to be adjusted. A 1000x1000 patch world requires over 6.5 GB of RAM.
In \app\NetLogo.cfg
within the main NetLogo installation directory, change the value of the Xmx
setting to a larger value, for example Xmx16384m
. See documentation here.
The recommended python setup uses anaconda.
- Download the anaconda installer for python 3.x from here.
- Install anaconda, following these installation instructions.
- Use Anaconda Navigator or the conda command line interface to create a Python 3 environment. The conda command to create the environment and install packages is
conda create -n nps-env python=3.6 pandas jupyter numpy matplotlib
The netlogo source files (*.nls
) defining the UUV behavior are in the /model_source_files
directory. The main UUV model is defined in threat-uuv-procedures.nls
. Sensor and sensor processing code is in the sensor_functions.nls
file.
Mission plans are generated by jupyter notebooks in the /python_code
directory, and kept in a directory /environments/<environment name>
. The mission plan is a series of text datafiles, and mission waypoints are stored in the waypoints.txt
file. A minefield layout is specified in the minefield.txt
file within the directory, and obstacles are specified in the obstacles.txt
file.
Simulations are defined in *.nlogo
files in the main directory. environment_setup.nls
contains the code for loading and configuring the simulation environment. measurement_functions.nls
contains metrics and objective functions for use in experiments. experiment_loader.nls
is utility code for running advanced experiment designs, such as latin hypercube experiments, using Behaviorspace.
Behaviorspace runs basic parameter sweeps for factorial experiments. To run the simulation with alternative experiment designs, the experiment_loader.nls
functions read parameter values from a file. python_code\generate_experiment_design.py
is a script that creates a latin hypercube. It can be modified to generate any design, as long as the file format is consistent with experiment_loader.nls
.
Cite applicable references for software or models
Barisic, Matko, Nikola Miskovic, and Zoran Vukic. 2009. Heuristic Parameter Tuning Procedures for a Virtual Potential Based AUV Trajectory Planner. IFAC Proceedings Volumes (IFAC-PapersOnline). Vol. 42. IFAC. https://doi.org/10.3182/20090916-3-BR-3001.0043.
Healey, A. 2006. “Guidance Laws, Obstacle Avoidance and Artificial Potential Functions.” In Advances in Unmanned Marine Vehicles, edited by G. N. Roberts and R. Sutton, 43–66. London: Institution of Engineering and Technology. https://doi.org/10.1049/PBCE069E_ch3.
Rimon, Elon, and Daniel E Koditschek. 1992. “Exact Robot Navigation Using Artificial Potential Functions.” IEEE Transactions on Robotics and Automation 8 (5): 501–18. http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=163777.
Wilenski, Uri. 1999. “NetLogo.” Evanston, IL: Center for Connected Learning and Computer-Based Modeling, Northwestern University. http://ccl.northwestern.edu/netlogo/.