GENIoS_Python consists of four main modules: glider simulator (gsim), glider planner (gplan), environmental input manager, and dockserver handler.
gsim: simulates gliders’s kinematics or obtains the real-time data when controlling a real glider.
gplan: designs trajectories and waypoints for the real/simulated gliders.
environment input manager: provides simulated or predicted ocean environments to the gsim and the gplan.
dockserver handler: grabs the real-time glider data and transmits waypoints to the dockserver.
The gsim module supports two modes: simulated mode and remote mode.
In the simulated mode, the module simulates the glider’s underwater trajectory and surfacing positions according to the glider’s 3D kinematics model. Rather than wait a long time (e.g., four hours) for gliders to surface in the real-time deployment, the surfacing interval in the simulated mode can be adjusted as short as possible (e.g., one minute). Therefore, it is effective to verify any underwater navigation algorithm in an extremely fast manner.
In the remote mode, the module simply obtains the glider surfacing positions through the dockserver handler module in real time.
The gplan module is core of GENIoS_Python. It is composed of two classes: path tracking and path planning.
The path tracking class provides two tracking algorithms: virtual mooring and line control. The virtual mooring algorithm keeps the glider moving towards one single target position, while the line control algorithm keeps the glider moving back and forth between multiple target positions. The central concept of the tracking algorithms is a flow-canceling controller, which computes the desired glider heading control based on the predicted flow. Then, by integrating its motion with the heading control, the glider trajectory under flow can be predicted. Based on the predicted trajectory, the waypoints are computed such that by following the waypoints, the glider can track the trajectory.
The path planning class provides an adapted A∗ algorithm under the varying flow field. The algorithm computes an optimal path for the glider to avoid the strong flow and consume the minimum time or energy. The planned path can be viewed as a ’better’ path for the path tracking algorithm to follow.
The environmental input manager module generates flow prediction for path tracking class to compute waypoints or for path planning class to compute the optimal path. The module supports two modes of predicting ocean flow: simulated and remote.
In the simulated mode, the module incorporates a user interface of ocean flow models, which allows glider simulation under any flow field.
In the remote mode, the module employs the predictive flow data from the oceanic data model Advanced Circulation (ADCIRC) in real time. Based on the ADCIRC model, the module develops a hybrid model GliADCIRC, which generates more accurate flow prediction by combining glider-estimated flow with ADCIRC predictive flow.
The dockserver handler module interfaces with an onshore computer (dockserver) to obtain the latest glider surfacing data and send waypoints to gliders in real time. When the glider surfaces, it communicates with the dockserver through a glider terminal which records the glider-transmitted data as log files. The module continuously monitors the log files to check the latest surfacing event and grab the header information for the gplan module to compute waypoints. Due to fast performance of Python SSH and SFTP packages, the module can check the glider terminal every 10 seconds, thus capturing every surfacing event, even though the glider surfaces for an extremely short time or uses mixed surfacing modes. Then, the computed waypoints are wrapped in a goto file and sent to the dockserver. It takes only 30 seconds out of 10-15 minute surfacing interval to accomplish the entire process of checking surfacing information and transmitting waypoints.
Moreover, the module utilizes Linux grep package to parse glider log files and handle glider data without human interaction, enabling autonomous glider operation.