Some details on galene's lrauv-application, which is customized to work with the fault detection payload. * The code was originally developed in a detached fork (lrauv-application-faultdetection-fork), but has now been moved to lrauv-application branch feature/2019-05-20-galene_fault_detection_payload . Out of an abundance of paranoia, I've put a copy of the exact source code used for the tank tests in ProjectLibrary/Persistence Lab/transfer folder/galene_tank_tests/lrauv-application-faultdetection-fork.tgz . At some point the lrauv-application-faultdetection-fork can be deleted. * lrauv-application branch feature/2019-05-20-galene_fault_detection_payload is explicitly (in .gitmodules) set to track branches of the same name for the following two submodules: auv-shared and lrauv-config. I've also added a couple of missions in lrauv-missions (Missions/Engineering/FDI_*), but those are in master, because they are orthogonal to everything else in that repo. * It can be built on tethyscode using the standard workflow (source /mbari/LRAUV/Tools/linuxi64/cross-compile-tools/activate; git clone git@bitbucket.org:mbari/lrauv-application.git ; cd lrauv-application; git checkout feature/2019-05-20-galene_fault_detection_payload ; git submodule update --init --recursive ; make lpc3250; make copy-to-galene ) * the customizations do two things: 1) they instrument the MassServo driver to output its status (idle, moving, homing) and its distance-to-target out to LCM; this is consumed by the Python code running on the payload, 2) they add a "sensor" called FDI that can turn the payload on/off and broadcast a control message on LCM that the Python code running on the payload uses to start/stop running fault detection. * there are currently two mission styles available: 1) nominal (FDI_nominal.xml), which centers (to zero, not to the neutral pitch mass default location) the mass servo, boots the payload, and runs a variable number of iterations of rocking the mass servo to position1, then position2, and then back to zero; 2) fault (FDI_faults.xml), which is basically the same, except that the mass servo does not return to zero at the end of each iteration. Nominal missions are nice for rocking back and forth between nominal positions (e.g. 20 and -18 mm) and fault missions are nice for repeatedly causing faults against one end (e.g. fwd: 36 to 45 or aft -18 to 26 mm).