Logical action OpenDoor (or OpenSimulatedDoor in simulation) uses senseDoor to check if the door is open. The current timeout is sometimes too short for senseDoor. When action_executor spins, OpenDoor creates another instance of senseDoor, which calls the execute_logical_goal server again to get new observations. This is causing the executor to get stuck in the OpenDoor action even after the door is open. I noticed this issue while using the simulator, but it could be a problem for robots too.
#91 attempted to fix a similar problem for senseState by handling it as a special case in LogicalNavigation.cpp. I will work on a unified fix for both senseDoor and senseState.