{"id":291,"date":"2016-11-24T09:26:25","date_gmt":"2016-11-24T09:26:25","guid":{"rendered":"http:\/\/www.dynamica.no\/?page_id=291"},"modified":"2021-04-08T08:03:55","modified_gmt":"2021-04-08T08:03:55","slug":"model-predictive-vessel-control","status":"publish","type":"page","link":"https:\/\/www.dynamica.no\/?page_id=291","title":{"rendered":"Nonlinear Model Predictive Control of Maritime Vessels"},"content":{"rendered":"<p>With our general purpose maritime simulation tool MOpS as the framework, we have explored some interesting position-keeping algorithms, a fundamental component in systems commonly referred to as Dynamic Positioning (DP) or station keeping. One in particular, a straightforward brute-force multivariable nonlinear model-predictive controller with integrated optimal thruster allocation demonstrated outstanding qualities when tested out on various kinds of &laquo;vessels&raquo; in realistically simulated environments. We call it NMPC in this text.<\/p>\n<p><a style=\"outline-width: 0px !important; user-select: auto !important;\" href=\"#nmpc-download\">Download simulator and explore the features yourself.<\/a><\/p>\n<p>Traditional thruster-allocation algorithms typically try to keep a comfortable distance away from nonlinear operating regions and linearize around favourable working points. While this paves the way for established linear control- and optimization theory, the net result can be rather suboptimal if considerable thruster energy is spent for no other reason than ensuring forces cancel out each other in calm weather. The direct method tested here eliminates the expensive and error-prone linearization stage and replaces it with a basic rule-based system that ranks and selects from a number of simulated trajectories. This requires somewhat more computational power, but in return also permits acceptable performance in e.g. low-rpm\/standstill rudder+propeller operation.<\/p>\n<p>Among other benefits are architectural simplicity, robustness and an intuitive procedure\u00a0to compensate for keel-design, thruster interference and other strange hydrodynamic effects. Simpliification, since one single module replaces three (attitude-controller\/force-prioritization\/trust-allocation).<\/p>\n<p>Fortunately, the numerous individual simulation tasks that are required to accomplish this are totally self sufficient and can be executed\u00a0in random order, for instance as parallel execution threads. This permits near 100% utilization\u00a0of multi-core CPU-architectures, facilitating development of low-power ingress protected devices.<\/p>\n<p>Driven by curiosity, since virtually no information of such systems has been published, we designed\u00a0a dynamic\u00a0simulator system to explore this methods potential. Its\u00a0main components\u00a0were:<\/p>\n<ul>\n<li>A near-realistic vessel- and environment-model constituting the object\u00a0to be controlled.<\/li>\n<li>A reduced order variant\u00a0of this vessel model for the massive-scale predictions.<\/li>\n<li>A controller algorithm that orchestrates the simulations and picks out the best outcome.<\/li>\n<li>Intentionally flawed (30-60%) prediction model parameters to maintain\u00a0realism, typically inaccurate\u00a0mass, drag, hysteresis, slow thruster response etc.<\/li>\n<\/ul>\n<p>Random\u00a0manipulations of the aforementioned inaccuracies, as well as wave- and current-induced disturbance forces were used to establish a picture of\u00a0the control\u00a0robustness.<\/p>\n<p>Indications\u00a0so far suggest that if\u00a0the vessel is modeled reasonably correct with respect to geometry, mass, maximum forces and thruster locations, and provided the respective\u00a0force- and rudder adjustments predominantly affect\u00a0the vessel in anticipated\u00a0ways, this particular NMPC implementation performed surprisingly well on every case we tried it on with only moderate adaptations. Its most remarkable\u00a0property is the\u00a0robustness with respect to inaccurate mass assumptions and severe\u00a0nonlinearities, like the impressive\u00a0ability to directly include a plain on\/off bow thruster in the control strategy. Furthermore, rudder <a href=\"https:\/\/en.wikipedia.org\/wiki\/Backlash_(engineering)\">backlash<\/a>\u00a0up to 3-4 degrees only negligible influence.<\/p>\n<p><strong>Challenge 1: Work boat<\/strong><\/p>\n<p>A twin-hull work boat case is illustrated below. The vessel is equipped with one continuously variable-rpm\u00a0propeller for main propulsion in each hull, tandem rudders, and bow+stern tunnel-thrusters installed in the port hull only.<\/p>\n<p>In this particular scenario it is chasing a remorseless reference trajectory; 50 by 50 metre square, clockwise motion at constant 1.3 knots speed while heading always should\u00a0point north. 1 knot current setting south-west, and significant waves constitute\u00a0quite adverse conditions. An optimal criterion continuously minimizes energy consumption\/wear\/comfort etc as well as heading error, rate-of-turn and positional offset:<\/p>\n<p><a href=\"\/wp-content\/uploads\/2016\/11\/CatDP-e1484834980208.png\"><img loading=\"lazy\" class=\"alignnone wp-image-337 size-full\" src=\"http:\/\/www.dynamica.no\/wp-content\/uploads\/2016\/11\/CatDP-e1484834980208.png\" width=\"974\" height=\"863\" srcset=\"https:\/\/www.dynamica.no\/wp-content\/uploads\/2016\/11\/CatDP-e1484834980208.png 974w, https:\/\/www.dynamica.no\/wp-content\/uploads\/2016\/11\/CatDP-e1484834980208-300x266.png 300w, https:\/\/www.dynamica.no\/wp-content\/uploads\/2016\/11\/CatDP-e1484834980208-768x680.png 768w\" sizes=\"(max-width: 974px) 100vw, 974px\" \/><\/a><\/p>\n<p>The bird&#8217;s eye view in the screen-shot above illustrates the situation; vessel&#8217;s simulated position outlined in green, the desired\u00a0position\u00a0in grey, and the predicted position in red. Trajectory-history is drawn\u00a0in black. The trend-plot below it views\u00a0rudder angles and four propeller rpm&#8217;s \u00a0over the last two minutes. Observe how smoothly\u00a0the actuators are manipulated despite the wave-influence, a direct consequence\u00a0of the incremental nature of the optimal tracking process. Variable-pitch propellers would behave equally well, but rpm is chosen as trending combines better with the angular variables.<\/p>\n<p>As rechargeable batteries improve and hybrid propulsion becomes mainstream, this configuration might eventually become attractive: A single Voith Schneider Propeller (VSP) astern instead of the two engines\/gears\/propellers supplemented by a bow-thruster. The slight yaw-disturbance from the single VSP can be modeled and automatically compensated for:<\/p>\n<p><a href=\"http:\/\/www.dynamica.no\/wp-content\/uploads\/2020\/01\/WB-Voith-Schneider.png\"><img loading=\"lazy\" class=\"alignnone wp-image-519 size-full\" src=\"http:\/\/www.dynamica.no\/wp-content\/uploads\/2020\/01\/WB-Voith-Schneider.png\" alt=\"\" width=\"992\" height=\"791\" srcset=\"https:\/\/www.dynamica.no\/wp-content\/uploads\/2020\/01\/WB-Voith-Schneider.png 992w, https:\/\/www.dynamica.no\/wp-content\/uploads\/2020\/01\/WB-Voith-Schneider-300x239.png 300w, https:\/\/www.dynamica.no\/wp-content\/uploads\/2020\/01\/WB-Voith-Schneider-768x612.png 768w\" sizes=\"(max-width: 992px) 100vw, 992px\" \/><\/a><\/p>\n<p><strong>Challenge 2: Multiple outboard\u00a0engines<\/strong><\/p>\n<p>Manufacturers of outboard engines have for some time now marketed off-the-shelf systems for station-keeping and easier berthing of recreational vessels. Here the NMPC algorithm controls three 200 hp outboard motors, plus an simple on\/off bow-thruster for better margin in rough conditions. 06 knots side current and quite significant head-waves:<\/p>\n<p><a href=\"\/wp-content\/uploads\/2016\/11\/PowerboatMPC.png\"><img loading=\"lazy\" class=\"alignnone wp-image-308 size-full\" src=\"http:\/\/www.dynamica.no\/wp-content\/uploads\/2016\/11\/PowerboatMPC-e1484835001155.png\" alt=\"powerboatmpc\" width=\"921\" height=\"821\" srcset=\"https:\/\/www.dynamica.no\/wp-content\/uploads\/2016\/11\/PowerboatMPC-e1484835001155.png 921w, https:\/\/www.dynamica.no\/wp-content\/uploads\/2016\/11\/PowerboatMPC-e1484835001155-300x267.png 300w, https:\/\/www.dynamica.no\/wp-content\/uploads\/2016\/11\/PowerboatMPC-e1484835001155-768x685.png 768w\" sizes=\"(max-width: 921px) 100vw, 921px\" \/><\/a><\/p>\n<p>As we can see on the trend plots, this very primitive bow thruster is mostly considered by the algorithm to be too powerful to be useful and effectively ruled out, except on the leg going &laquo;westward&raquo;, against the current, where it immediately comes to use with very helpful impulses in port (negative) direction.<\/p>\n<p>The overlaid histogram that can bee seen in this particular example reveals basic\u00a0statistics regarding\u00a0which of the in this case\u00a0more than\u00a02000\u00a0evaluated actuator adjustment combinations are preferred\u00a0most frequently, and also indicates for which reason. The tall red column\u00a0to the left represents &laquo;no changes&raquo; and is usually quite dominant.<\/p>\n<p><strong>Challenge 3: Car ferry<\/strong><\/p>\n<p>A 50-car ferry with two azimuth thrusters. These thrusters have a problematic\u00a0nonlinearity in the form of\u00a0a substantial force-treshold caused by in\/out clutching at idle rpm. However, we can immediately conclude that\u00a0the algorithm consistently\u00a0discards all solutions below this treshold. Furthermore, these thrusters typically suffer from\u00a0a disturbing angular motion dead band\u00a0in the order of 1-2 degrees. As it turns out, this particular algorithm tolerates significantly more before problems begin to surface.<\/p>\n<p><a href=\"\/wp-content\/uploads\/2016\/11\/FerryMPC.png\"><img loading=\"lazy\" class=\"alignnone wp-image-307 size-full\" src=\"http:\/\/www.dynamica.no\/wp-content\/uploads\/2016\/11\/FerryMPC-e1484835023668.png\" alt=\"ferrympc\" width=\"953\" height=\"818\" srcset=\"https:\/\/www.dynamica.no\/wp-content\/uploads\/2016\/11\/FerryMPC-e1484835023668.png 953w, https:\/\/www.dynamica.no\/wp-content\/uploads\/2016\/11\/FerryMPC-e1484835023668-300x258.png 300w, https:\/\/www.dynamica.no\/wp-content\/uploads\/2016\/11\/FerryMPC-e1484835023668-768x659.png 768w\" sizes=\"(max-width: 953px) 100vw, 953px\" \/><\/a><\/p>\n<p><strong>Challenge 4: Single azimuth thruster.<\/strong><\/p>\n<p>Offshore standby-vessels, in particular those with traditional main-engine+reduction gear for propulsion, could potentially achieve significant fuel- and emissions savings by leaving station-keeping entirely to the auxiliary engines and the electrical thrusters whenever possible. An NMPC controller\u00a0can fulfill this requirement\u00a0as we see in the case below. A standard 3000 ton offshore standby vessel with a tunnel-thruster and an azipod arrangement in the bow stays stationary\u00a0in 1.5 knots current setting south-east. Quite heavy swells arriving from south west combined with some choppier waves\u00a0from north west.<\/p>\n<p>The weight factor on heading error\u00a0can be\u00a0set to zero as in this case. This simple change allows\u00a0the algorithm to\u00a0track the optimal\u00a0heading as combined\u00a0drift direction varies over time:<\/p>\n<p>\ufffc<a href=\"\/wp-content\/uploads\/2016\/10\/OSV_Azimuth_DP.png\" rel=\"attachment wp-att-266\"><img loading=\"lazy\" class=\"alignnone wp-image-266 size-full\" src=\"http:\/\/www.dynamica.no\/wp-content\/uploads\/2016\/10\/OSV_Azimuth_DP-e1484835063883.png\" alt=\"osv_azimuth_dp\" width=\"963\" height=\"797\" srcset=\"https:\/\/www.dynamica.no\/wp-content\/uploads\/2016\/10\/OSV_Azimuth_DP-e1484835063883.png 963w, https:\/\/www.dynamica.no\/wp-content\/uploads\/2016\/10\/OSV_Azimuth_DP-e1484835063883-300x248.png 300w, https:\/\/www.dynamica.no\/wp-content\/uploads\/2016\/10\/OSV_Azimuth_DP-e1484835063883-768x636.png 768w\" sizes=\"(max-width: 963px) 100vw, 963px\" \/><\/a><\/p>\n<p>Given the vessels potential vulnerability in this power-conservation mode, ability\u00a0to immediately re-activate e.g. main propellers\u00a0is paramount. Fortunately, the design\u00a0of the multi-variable MPC controller allows this to take place\u00a0without any impact on the control structure whatsoever, guaranteeing essentially\u00a0bump-less shut-in\u00a0of additional thrusters.<\/p>\n<p>Careful selection\u00a0of weight-factors for the various thrusters can also establish\u00a0a priority system of gradual and automatic in- and out-phasing of thrusters as required\u00a0by net drift. In case all environmental disturbances disappear, this algorithm will eventually shut down all the thrusters. The criterion for that is that whenever the predicted improvement\u00a0in weighted &laquo;cost&raquo; of the positional error over the given time horizon is exceeded by the cost of thrust and other factors\u00a0needed for this improvement.<\/p>\n<p>This in contrast to conventional designs that rely on keeping thrusters within specific\u00a0ranges to allow for meaningful linearization, with inevitable increase in wear and\u00a0energy consumption as result.<\/p>\n<p><strong>Challenge 5: Fixed thrusters<\/strong>:<\/p>\n<p>Sub-sea ROVs and similar specialized, possibly autonomous, low-speed vessels often rely on\u00a0fixed-angle thrusters. The NMPC approach also seems to cope well with such configurations. Below is an imaginary 60 ton 40 by 16m work-barge fitted with four fixed propellers doing the same exercise, except only 0.4 m\/s speed since it is quite underpowered:<\/p>\n<p><a href=\"http:\/\/www.dynamica.no\/wp-content\/uploads\/2017\/07\/omvbarge_fixed.png\"><img loading=\"lazy\" class=\"alignnone wp-image-464 size-full\" src=\"http:\/\/www.dynamica.no\/wp-content\/uploads\/2017\/07\/omvbarge_fixed.png\" alt=\"\" width=\"1140\" height=\"922\" srcset=\"https:\/\/www.dynamica.no\/wp-content\/uploads\/2017\/07\/omvbarge_fixed.png 1140w, https:\/\/www.dynamica.no\/wp-content\/uploads\/2017\/07\/omvbarge_fixed-300x243.png 300w, https:\/\/www.dynamica.no\/wp-content\/uploads\/2017\/07\/omvbarge_fixed-768x621.png 768w, https:\/\/www.dynamica.no\/wp-content\/uploads\/2017\/07\/omvbarge_fixed-1024x828.png 1024w\" sizes=\"(max-width: 1140px) 100vw, 1140px\" \/><\/a><\/p>\n<p>Smaller vessels, e.g. a subsea ROV with electrical thrusters is should\u00a0be equally controllable, except the models should be extended to full 6 degrees of freedom (6DOF).<\/p>\n<p><strong>Challenge 6: Combining thrusters and moorings<\/strong><\/p>\n<p>Deep-sea mining activities represent other ship-maneuvering issues and often involves an array of anchors instead of thrusters. NMPC can quite straightforwardly combine the two and find the optimal chain lengths just as well as thruster forces and angles. This at the cost of another order of magnitude more processing power though because of the added lump-mass chain models. Below is a basic example with a 1500 ton barge, two bow-anchors and a conventional setup with single stern rudder\/propeller in combination with tunnel bowthruster:<\/p>\n<figure id=\"attachment_542\" aria-describedby=\"caption-attachment-542\" style=\"width: 929px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" class=\"size-full wp-image-542\" src=\"http:\/\/www.dynamica.no\/wp-content\/uploads\/2020\/11\/2xTethers.png\" alt=\"\" width=\"929\" height=\"843\" srcset=\"https:\/\/www.dynamica.no\/wp-content\/uploads\/2020\/11\/2xTethers.png 929w, https:\/\/www.dynamica.no\/wp-content\/uploads\/2020\/11\/2xTethers-300x272.png 300w, https:\/\/www.dynamica.no\/wp-content\/uploads\/2020\/11\/2xTethers-768x697.png 768w\" sizes=\"(max-width: 929px) 100vw, 929px\" \/><figcaption id=\"caption-attachment-542\" class=\"wp-caption-text\">Anchors and thrusters in co-operation<\/figcaption><\/figure>\n<p>As one would expect, the main propeller must reverse a lot. The algorithm establishes this fact by itself, and in case a favorable head current appears it will contribute to alleviate this.<\/p>\n<p>One can also imagine pusher boats incorporated as yet another form of &laquo;manipulator&raquo; and build more complex optimal maneuver planners, but developing a practical pusher-boat model has been beyond the scope of this study.<\/p>\n<p><strong>Challenge 7: Bavaria 36<\/strong><\/p>\n<p>Here is how a 7 ton Bavaria-36 realistically would behave when dealing with our torture trajectory with its sails down:<\/p>\n<p><a href=\"\/wp-content\/uploads\/2016\/11\/Bavaria36MPC.png\"><img loading=\"lazy\" class=\"alignnone wp-image-345 size-full\" src=\"http:\/\/www.dynamica.no\/wp-content\/uploads\/2016\/11\/Bavaria36MPC-e1484834952947.png\" alt=\"bavaria36mpc\" width=\"907\" height=\"890\" srcset=\"https:\/\/www.dynamica.no\/wp-content\/uploads\/2016\/11\/Bavaria36MPC-e1484834952947.png 907w, https:\/\/www.dynamica.no\/wp-content\/uploads\/2016\/11\/Bavaria36MPC-e1484834952947-300x294.png 300w, https:\/\/www.dynamica.no\/wp-content\/uploads\/2016\/11\/Bavaria36MPC-e1484834952947-768x754.png 768w\" sizes=\"(max-width: 907px) 100vw, 907px\" \/><\/a><\/p>\n<p>Observe\u00a0how this basically dumb algorithm &laquo;magically&raquo; by plain\u00a0trial-and-error consistently reveals\u00a0a clever &laquo;next move&raquo; and coordinates the bow-thruster(red), throttle(blue) and rudder(green) methodically. The boat moves as close to sideways as the optimal criterion demands.<\/p>\n<p><strong>Compared to a traditional controller<\/strong><\/p>\n<p>Although not quite identical cases nor optimal tuning, the comparison below demonstrates the main differences. The behaviour of a vessel with traditional 3x PID\u00a0controllers and separate optimal thruster allocator\/prioritizer shown to the left, NMPC to the right. Ideal conditions, i.e. no wind or current. The pronounced oscillations are caused by the integral term in the controller as the reference speed in surge-direction suddenly drops to zero. The MPC controlled vessel will usually\u00a0lag a short distance\u00a0behind the reference and can\u00a0therefore cut slightly through the corners with substantial benefits in this case.<\/p>\n<p><a href=\"http:\/\/www.dynamica.no\/wp-content\/uploads\/2017\/02\/OSV_SiSo_MPC.png\"><img loading=\"lazy\" class=\"alignnone size-full wp-image-402\" src=\"http:\/\/www.dynamica.no\/wp-content\/uploads\/2017\/02\/OSV_SiSo_MPC.png\" alt=\"\" width=\"1000\" height=\"664\" srcset=\"https:\/\/www.dynamica.no\/wp-content\/uploads\/2017\/02\/OSV_SiSo_MPC.png 1000w, https:\/\/www.dynamica.no\/wp-content\/uploads\/2017\/02\/OSV_SiSo_MPC-300x199.png 300w, https:\/\/www.dynamica.no\/wp-content\/uploads\/2017\/02\/OSV_SiSo_MPC-768x510.png 768w\" sizes=\"(max-width: 1000px) 100vw, 1000px\" \/><\/a><\/p>\n<p>Also note the pronounced\u00a0jaggedness of the thruster-commands (kN) in the conventional variant compared to the incremental nature of the MPC alternative. Precence of waves, and navigational noise would inevitably accentuate this difference.<\/p>\n<p><strong>How does it actually work?<\/strong><\/p>\n<p>The simple sailboat case is well suited as an illustration. If we from standstill request immediate motion\u00a0to a new position ca 15 meters outside starboard quarter as indicated with a crosshair and a gray hull\u00a0outline, the following response\u00a0appears:<\/p>\n<p><a href=\"http:\/\/www.dynamica.no\/wp-content\/uploads\/2017\/02\/Principle.png\"><img loading=\"lazy\" class=\"alignnone size-full wp-image-393\" src=\"http:\/\/www.dynamica.no\/wp-content\/uploads\/2017\/02\/Principle.png\" alt=\"\" width=\"685\" height=\"644\" srcset=\"https:\/\/www.dynamica.no\/wp-content\/uploads\/2017\/02\/Principle.png 685w, https:\/\/www.dynamica.no\/wp-content\/uploads\/2017\/02\/Principle-300x282.png 300w\" sizes=\"(max-width: 685px) 100vw, 685px\" \/><\/a><\/p>\n<p>The controller performs 63 dynamical scenario-simulations from the initial position estimate (cyan outline) over a given time horizon. The end positions are here outlined in thin gray, and as we can see most of them veers away immediately and can be eliminated. However, the best result according to the optimal criterion (red) usually represents an improvement and is subsequently selected for thrust and rudder adjustments. After a second or so, a reassessment is then made with updated initial states, usually with a slightly different outcome.<\/p>\n<p>For a light vessel like this, the procedure will\u00a0typically be repeated at more or less regular sub-second intervals, or whenever considered beneficial\u00a0by e.g. the position estimator system. For larger vessels, 5 seconds or even minutes can be sufficient. Reasonable\u00a0real-time precision is in fact only required for the position\u00a0estimation process.<\/p>\n<p>The number 63 arises from the possible combinations of control outputs, in this case 7x rudder by 3x rpm by 3x bow-thruster alternatives. For the full 7-actuator OSV model above, 3645(5*3^6) scenarios were evaluated over a 20 second horizon. Owing to longer time steps, careful model simplifications and parallel processing, this can be achieved in 25 ms on a typical 3 GHz\u00a0 with four cores.<\/p>\n<p>A detailed study of the graphics above reveals that the selected output for the occasion was neutral rudder, further increasing the already negative rpm and still no bow-thruster &#8212; just like any other experienced yachtsman. The only\u00a0difference is that while he\u00a0would have based his actions on\u00a0years of trial and probably some\u00a0mistakes,\u00a0this stateless NMPC algorithm rebuilds its experience base every single time step.<\/p>\n<p>In reality one would always avoid positional offsets of the magnitude in the example above but generate a smooth trajectory for the NMPC-controller to follow much closer.<\/p>\n<p><strong>Conclusion<\/strong><\/p>\n<p>Brute-force NMPC is particularly well suited to maritime vessel position control for a number of reasons:<\/p>\n<ul>\n<li>These problems represent a favorable combination of moderate model\u00a0complexity and comparatively\u00a0long\u00a0dominant time constants. The computational burden therefore lies well within the capacity\u00a0of existing low-power ruggedized embedded systems.<\/li>\n<li>Energy consumption in maritime activity is subject to increasing scrutiny, battery-powered propulsion is one example. The opportunity to formulate an optimal criterion that penalizes energy-consumption, noise, wear etc can improve endurance, economy and HSE-conditions considerably in station-keeping mode.<\/li>\n<li>The high tolerance to equipment wear, e.g. rudder hysteresis, marine growth etc.<\/li>\n<li>Represents a straightforward approach to manage over-actuated vessels and balance safety, reliability, comfort, fuel-economy etc.<\/li>\n<li>Can directly replace traditional algorithms in existing systems.<\/li>\n<\/ul>\n<p>Other advantages:<\/p>\n<ul>\n<li>Code simplicity. Control-loop(s)+prioritization+thruster-allocation functionality are all implemented in one quite simple module that is easy to maintain.<\/li>\n<li>Anti-windup logic is not required whatsoever.<\/li>\n<li>Eliminates the infamous linearization task.<\/li>\n<li>Built-in\u00a0&laquo;cost&raquo; (energy, wear, HSE, etc) optimization.<\/li>\n<li>A seemingly &laquo;forgiving&raquo; tune-in procedure lowers\u00a0risk of experiencing oscillations and similar surprises during installation and test.<\/li>\n<li>The low sensitivity to parameter variations leads to reduced maintenance costs.<\/li>\n<li>An intuitive procedure to incorporate known nonlinearities like thrust limitations, rudder characteristics etc: Express the observation in model code and verify the system performance. Repeat until satisfaction.<\/li>\n<li>The same goes for interference between thrusters, speed influence on thruster performance, propeller walk, effects from sea-bottom and quay surfaces etc.<\/li>\n<li>Known or measured external forces from\u00a0wind and towed equipment etc also blend nicely with the prediction models, essentially establishing feed-forward.<\/li>\n<li>Influence from wind and ocean current can be exploited as an extra bias force and in some\u00a0cases provide DP-functionality with under-actuated vessels like fishing smacks.<\/li>\n<li>No control structure rearrangement needed whenever a thruster is enabled or disabled.<\/li>\n<li>The fact that actuator forces are always adjusted gradually\u00a0in smaller increments will in many cases eliminate the need for complex wave-estimations and similar. It also prevents the type of violent thruster behavior that PID-based systems can produce, typically during initial trials after installation. Sudden\u00a0setpoint changes or erroneous\u00a0measurements will be handled smoothly.<\/li>\n<li>Hard constraints like total-power limits or obstacles can be\u00a0implemented as part of the optimal criterion. Input from the energy- and power management systems in hybrid propulsion systems could also be included in the criterion if desired. Similarly, as\u00a0countermeasure against erosion on quay structure foundations, the outmost thrusters can be prioritized during the first metres of e.g. car-ferry departures.<\/li>\n<\/ul>\n<p>Drawbacks:<\/p>\n<ul>\n<li>Lack of merit.<\/li>\n<li>Typically requires more than microcontroller computational capacity.<\/li>\n<\/ul>\n<p id=\"nmpc-download\"><strong>Download<\/strong>:<\/p>\n<p>We have prepared a demo collection of the simulators used above, as well as a few more like the mentioned fishing smack and a waterjet equipped SAR vessel. Feel free to install and explore the possibilities:\u00a0<a href=\"https:\/\/www.dynamica.no\/dl\/nmpc_demo.exe\">64-bits Windows installer, signed<\/a>.<\/p>\n<p>Start the individual demos from the Windows program menu. Once started, F1 provides help. Clean up with a single-click uninstall.<\/p>\n<p><strong>Related reading:<\/strong><\/p>\n<p><a href=\"http:\/\/en.wikipedia.org\/wiki\/OpenMP\">OpenMP, an implementation of multithreading<\/a>\u00a0(Wikipedia)<\/p>\n<p><a href=\"https:\/\/en.wikipedia.org\/wiki\/Embarrassingly_parallel\">Pleasingly Parallel Systems<\/a>\u00a0(Wikipedia)<\/p>\n","protected":false},"excerpt":{"rendered":"<p>With our general purpose maritime simulation tool MOpS as the framework, we have explored some interesting position-keeping algorithms, a fundamental component in systems commonly referred to as Dynamic Positioning (DP) or station keeping. One in particular, a straightforward brute-force multivariable nonlinear model-predictive controller with integrated optimal thruster allocation demonstrated outstanding qualities when tested out on &hellip; <a href=\"https:\/\/www.dynamica.no\/?page_id=291\" class=\"more-link\">Fortsett \u00e5 lese <span class=\"screen-reader-text\">Nonlinear Model Predictive Control of Maritime Vessels<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":[],"_links":{"self":[{"href":"https:\/\/www.dynamica.no\/index.php?rest_route=\/wp\/v2\/pages\/291"}],"collection":[{"href":"https:\/\/www.dynamica.no\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.dynamica.no\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.dynamica.no\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dynamica.no\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=291"}],"version-history":[{"count":105,"href":"https:\/\/www.dynamica.no\/index.php?rest_route=\/wp\/v2\/pages\/291\/revisions"}],"predecessor-version":[{"id":560,"href":"https:\/\/www.dynamica.no\/index.php?rest_route=\/wp\/v2\/pages\/291\/revisions\/560"}],"wp:attachment":[{"href":"https:\/\/www.dynamica.no\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=291"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}