RCV state machine - AD-EYE/AD-EYE_Core GitHub Wiki

The RCV state machine is entirely in manager.py in the class ManagerStateMachine where the states are defined in an enum.

Features list containing the keyword ALLOWED in manager.py define which features can be started in that specific state (those features can be started from topic, gui or default feature lists). Features lists containing the keyword DEFAULT define which features are activated automatically for each state as shown in the following code excerpt.

The following code shows those two feature lists for the engages state.

    ENGAGED_DEFAULT_FEATURES = [
        # "Recording",
        "Map",
        "Sensing",
        # "Localization",
        "Fake_Localization",
        "Detection",
        "Mission_Planning",
        "Motion_Planning",
        "Switch",
        "SSMP",
        "Rviz",
        # "Experiment_specific_recording"
    ]
    ENGAGED_ALLOWED_FEATURES = [
        "Recording",
        "Map",
        "Sensing",
        "Localization",
        "Fake_Localization",
        "Detection",
        "Mission_Planning",
        "Motion_Planning",
        "Switch",
        "SSMP",
        "Rviz",
        "Experiment_specific_recording"
    ]

The change of state can be done by publishing a Boolean on a certain topic according to the following diagram.

Images/rcv_state_machine.png

Rosbags

Rosbags are saved in the path defined in the variable ROSBAG_PATH (not this path is from home as later ~ is added as a prefix)

Bash is used to start and stop rosbags recordings.