A ROS component that manages action calls for elevator navigation. The component subscribes to four different action types:
WAIT_FOR_ELEVATOR
ENTER_ELEVATOR
RIDE_ELEVATOR
EXIT_ELEVATOR
These actions are defined in this PDDL domain.
The actions are exposed through a single action server, such that action calls are assumed to be made in the above order. The split into four actions is made for the purposes of simplified fault tolerance, as each individual step of the sequence can be triggered and then monitored independently of the others.
The component is embedded into a fault-tolerant state machine and has this specification.
The elevator navigation depends on the following other components:
ropod_rod_msgs
: Contains message and action definitions used within the componentmaneuver_navigation
: Handles navigation requestsworld_model_mediator
: Handles world model queriesdoor_status_detection
: Checks whether an elevator door is open or closedfloor_detection
: Tracks the current floor of the robotmap_switcher
: Handles requests for loading new navigation maps after floor changes
The component expects several parameters to be made available to the ROS parameter server:
-
mn_nav_topic: str
-- name of a topic for sending maneuver navigation goals (default/route_navigation/goal
) -
mn_nav_feedback_topic: str
-- name of a topic on which maneuver navigation feedback is received (default/route_navigation/feedback
) -
mn_nav_cancel_topic: str
-- name of a topic for cancelling maneuver navigation goals (default/route_navigation/cancel
) -
init_pose_topic: str
-- name of a topic for initialising the pose of a robot (default/initialpose
) -
localisation_topic: str
-- name of a topic on which localisation pose estimates are published (default/amcl_pose
) -
elevator_nav_server_name: str
-- name of the action server exposed by the component (default/ropod/take_elevator
) -
elevator_waypoints_server: str
-- name of an action server that responds to elevator waypoint queries (default/get_elevator_waypoints
) -
topology_node_server: str
-- name of a server that responds to queries regarding area topologies (default/get_topology_node
) -
door_status_detection_server: str
-- name of a service for checking whether a door is open or closed (default/get_door_status
) -
floor_detection_server: str
-- name of a service that returns the currrent floor of a robot (default/floor_detection_server
) -
map_switcher_server: str
-- name of a server for loading new environment maps (default/map_switcher/change_map
) -
go_to_elevator_timeout: float
-- timeout (in seconds) for the action of going to a waypoint where a robot can wait for an elevator (default120
) -
wait_for_elevator_timeout: float
-- timeout (in seconds) for the action of waiting for an elevator (default120
) -
enter_elevator_timeout: float
-- timeout (in seconds) for the action of entering an elevator (default120
) -
ride_elevator_timeout: float
-- timeout (in seconds) for the action of riding an elevator (default600
) -
exit_elevator_timeout: float
-- timeout (in seconds) for the action of exiting an elevator (default120
)