Build Notes: ----------------------------------- All shell scripts that used to live in moos-ivp/bin are now in moos-ivp/scripts. The only thing in moos-ivp/bin are binaries built from MOOS-IvP source code. NEW Apps ================================= uMemWatch pObstacleMgr alogcat alogtest manifest_test pickpos uFldWrapDetect uFldObstacleSim uMAC =============================================== Can now be launched with --proc and/or --node to specify the initial node and process to scope on. BHV_AvoidCollision =============================================== o The parameter contact_type_required has been deprecated. This parameter was introduced in Release 17.7, and is generalized in this release with the match_type parameter now supported for all contact behaviors at the IvPContactBehavior superclass level. Use of this parameter is still supported for now, but will be treated as if it were the match_type parameter. See the release notes discussions for the IvPContactBehavior superclass for more details. uTimerScript =============================================== o Fixed a bug that would prevent the pause_var from being used in timer conditions lib_geometry =============================================== Fixed a bug GeomUtils.cpp::lineRayCross() lib_ufld_hazards =============================================== o Fixed typo in XYHazard.h getSource() function was gxetSource() - thanks Blake ================================== IvPBuild Toolbox ================================== BUG fix: ZAIC_LEQ. In cases where the summit is 0 (or lowest possible value in the domain), and the base width was also zero, the zaic should return a max value in summit, and min value elsewhere. Prior to the bug fix, it would produce NO piece covering the summit value and a min value for the remainder of the domain. alogview =============================================== Fixed a bug in alogview affecting the construction of the collective objective function to be rendered. Previously it was not properly applying the weights of each function. alogscan =============================================== Fixed a bug in alogscan that would result in a segfault just prior to early exit on detected invalid input file. For example an empty alog file. pEchoVar =============================================== o Added Boolean Switching. For a configuration "Echo = FOO !-> BAR", if a string representing a Boolean value is published to FOO, a string representing the opposite Boolean value is published to BAR. The case of the strings is matched. uFldNodeComms =============================================== o Fixed a bug where some messages were occasionally being dropped despite meeting all the communications criteria. BHV_Waypoint =============================================== o Added lead_condition to allow the user to specify a logic condition that must be met in order for the trackline following to be enabled. This allows for coordination with any collision avoidance behavior temporarily turn off trackline following during an avoidance encounter. See m2_track_condition mission. uFldCollisionDetect Documentation =============================================== o substantial additions and corrections pMarineViewer =============================================== o Added functionality to the Commander pop-up window including auto-adjusting button widths, and the ability to add color to a button to make it easier for an operator to find and hit an emergency button. o Updated the pMarineViewer documentation to describe commander pop-up window functionality. The commander pop-up window feature was part of the 17.7 release but was not documented at all. o The m2_berta mission has been updated to include a non-trivial example of the commander pop-up window, to control deploying, returning, station-keeping, vehicle speed, and loiter direction for both vehicles. o Improved the drawing efficiency of hash marks (grid lines). New version reduces overall CPU load by more than half. o Added functionality to selectively display comms pulses coming from node reports vs those coming from node messages. pBasicContactManager =============================================== New features (1) regions (2) range to closest contact (3) Customized contacts list (4) Bounded memory growth w.r.t. retired contacts (age/range) (5) Todo - bounding memory growth with active contacts Bug fixes (a) Contacts recap interval defaults set/document properly (b) Correct application of alert defauts (1) Added the ability to have alerts based on a polygon regions, so missions can be configured to trigger action if a contact of interest enters a given region. Region criteria can be used in conjunction with range criteria, or simply on its own. (2) Added an optional publication of the range to the closest contact. Posting turned on with the post_closest_range=true paramater, and will publish to CONTACT_RANGE an integer value of the range. Value will be published only when the range changes. (3) Customized contact lists can now be configured based on range, vehicle type or group. A client app can register for a customized contact list with "BCM_REPORT_REQUEST" with a value something like: "var=BCM_CONTACTS_85, range=85". This will result in the contact manager posting a list of all contacts within a range of 85 meters. This report request must be continuously refresh and the contact manager will cease making reports after some period of time if the request is not refreshed. (4) The list of retired contacts is limited to N contacts with the contacts_retired_hist = N, and N defaults to 5 and max 100. o Added the contact_max_age_history parameter to guard against unbounded memory growth if the system is producing many unique contact IDs over a long period of time. (a) The contacts_recap_interval parameter now defaults to 1 second. Previously it default to 0 seconds, and the documentation said 5. It is now set to 1, and the documentation is properly updated. It may also be set to "off" which would cease all pubs. (b) Fixed a bug where defaults were not applied to an alert configuration that ommitted the alert_range or cpa_range. In this case these values should default to the values specified in the parameters default_alert_range and default_alert_range_cpa. Now they do. pHelmIvP =============================================== o Behaviors now have onSpawn() that may overload, and behaviors have spawnflags that can be set in configuration o behaviors can now get contact type information from info_buffer by querying VNAME_NAV_TYPE o New configuration parameter, hold_on_apps, takes a comma-separated list of MOOS Apps. The helm will wait for these apps to be seen in DB_CLIENTS before posting helm startup messages (postings made by behaviors in their onHelmStart() function call. Not all apps need to be on the DB_CLIENTS list simultaneously. Once each hold_on app has appeared, it is noted, even if it disappears from the DB_CLIENTS list. lib_ivpbuild =============================================== Modifications to the OF_Reflector tool for creating multi-dimensional IvP functions. The motivation for mods to the reflector are to make directed refinement more efficient. The previous pipeline for creation was: (1) uniform function (initial evaluation of interior functions) (2) direct refinement (3) smart refinement (4) auto-peak In prior releases, the pieces' linear interior function was evaluated during the uniform function stage. And a priority queue was built to prepare for the smart refinement stage. This could be very inefficient if direct refinement is employed. Direct refinement will identify regions of the decision space that have known utility. These are known as plateaus. If large plateaus are known and used, then the creation of uniform pieces in those regions during phase (1) is a waste. Even more of a waste is the evaluation of those pieces. To enhance the efficiency and benefit of behaviors that are able to generate and pass plateaus to the reflector, the pipeline has been changed to: (1) uniform function (NO evaluation of interior functions) (2) direct refinement (3) piece evaluation (except plateau pieces used in direct refinement) (3) smart refinement (4) auto-peak To do implement this, the RT_Uniform utility was replaced with the RT_UniformX utility. This is the utility used in phase (1). It no longer performs any evaluation of linear interior functions. And it does not create pieces internal to the plateau regions. Pieces that would be partially in/out of a plateau region are instead created with smaller pieces where each smaller piece is distinctly outside the plateau region. Phase (2) directed refine was also modified to *not* do any evaluation of linear interior functions, saving this for the following phase (3) Phase (3) is a new phase, implemented in the class RT_Evaluator. It takes all the pieces built so far (in the form of a PDMap) and evaluates all their interior functions. For now, it even evaluates the interior functions for pieces that originated as plateaus, even though presumably their utility was already known and linear with zero slope. But this minor inefficiency remains for now, because presumably the number of plateau pieces is very small compared to the number of "regular" uniformly generated pieces.