The Python Vehicle Simualtor is a supplementary Python implementation of the Matlab scripts in the VESSELS catalogue of the MSS toolbox.
Reference: T. I. Fossen (2021). Handbook of Marine Craft Hydrodynamics and Motion Control, 2nd Edition, Wiley.
The different vehicles are defined as Python "objects" with "methods" for feedback control. For instance, the Remus 100 AUV is specified by choosing option #9 from the commad line interface shown below.
The picture shows the Remus 100 Autonomous Underwater Vehicle (AUV) of the NTNU AUR-lab. The length of the vehicle is 1.6 m, the cylinder diameter is 19 cm and the mass of the vehicle is 31.9 kg. The maximum speed of 2.5 m/s is obtained when the propeller runs at 1525 rpm in zero currents.
The animated GIF file "3D_animation.gif".
The Python code for the constrcutor and main simulation loop are shown below (see main.py
for more details). The constructor, vehicle = remus100('depthHeadingAutopilot',30,50,1525,0.5,170), defines the Remus 100 AUV with a heading and depth autopilot. The setpoints (constructor arguments) are 50 degrees in yaw and 30 m depth. The propeller revolution is chosen as 1525 rpm. The AUV is exposed for an ocean current of speed 0.5 m/s and direction 170 deg. The vehicle's state plots below confirm that the autopilots achieve their control objectives.
The main simulation loop is used to generate time series. The results are plotted as three figures numbered 1-3 using the functions plotVehicleStates(simTime, simData, 1), plotControls(simTime, simData, vehicle, 2) and plot3D(simData, numDataPoints, FPS, filename, 3). In addition, a 3D animated GIF file is generated. The GIF file can be opended manually in a web browser by right-clicking the file or automatically by adding webbrowser.get(browser).open_new_tab('file://' + os.path.abspath(filename)) to the main loop.
Copyright © Thor I. Fossen
Last updated: 17 September 2023