Skip to content

Commit

Permalink
New package for launch files, bt and tour
Browse files Browse the repository at this point in the history
Signed-off-by: Ettore Landini <[email protected]>
  • Loading branch information
elandini84 committed Apr 30, 2024
1 parent 85305c5 commit 3702667
Show file tree
Hide file tree
Showing 19 changed files with 936 additions and 132 deletions.
108 changes: 0 additions & 108 deletions laboratory-tour/launch/bt_launch_robot.py

This file was deleted.

18 changes: 18 additions & 0 deletions laboratory-tour/src/uc3_launch/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
cmake_minimum_required(VERSION 3.5)
project(uc3_launch)

find_package(ament_cmake REQUIRED)

install(DIRECTORY launch
DESTINATION share/${PROJECT_NAME}
)

install(DIRECTORY conf
DESTINATION share/${PROJECT_NAME}
)

install(DIRECTORY launch/support_code
DESTINATION share/${PROJECT_NAME}
)

ament_package()
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions laboratory-tour/src/uc3_launch/conf/BT/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
file(COPY simple_bt.xml DESTINATION "${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_BINDIR}")
128 changes: 128 additions & 0 deletions laboratory-tour/src/uc3_launch/conf/BT/bt_convince v1.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,128 @@
<?xml version="1.0"?>
<root main_tree_to_execute="BehaviorTree">
<!-- ////////// -->
<BehaviorTree ID="BehaviorTree">
<ReactiveSequence>
<SubTree ID="failureManagement"/>
<SubTree ID="NetworkManagement"/>
<ReactiveFallback>
<SubTree ID="TourAborted"/>
<ReactiveSequence>
<SubTree ID="gotoPoi"/>
<SubTree ID="CheckArtworkAndExplain"/>
</ReactiveSequence>
</ReactiveFallback>
</ReactiveSequence>
</BehaviorTree>
<!-- ////////// -->
<BehaviorTree ID="CheckArtworkAndExplain">
<Sequence>
<ReactiveFallback name="">
<Condition ID="ROS2Condition" interface="ROS2SERVICE" isMonitored="false" name="ArtworkPresent" nodeName="ArtworkPresent"/>
<Fallback>
<Action ID="ROS2Action" interface="ROS2SERVICE" isMonitored="False" name="SearchArtwork" nodeName="SearchArtwork"/>
<Action ID="ROS2Action" interface="ROS2SERVICE" isMonitored="False" name="RescheduleTourArtworkNotPresent" nodeName="RescheduleTourArtworkNotPresent"/>
<AlwaysFailure/>
</Fallback>
</ReactiveFallback>
<ReactiveFallback>
<Condition ID="ROS2Condition" interface="ROS2SERVICE" isMonitored="false" name="ArtworkFree" nodeName="ArtworkFree"/>
<Action ID="ROS2Action" interface="ROS2SERVICE" isMonitored="False" name="RescheduleTourArtworkNotFree" nodeName="RescheduleTourArtworkNotFree"/>
<AlwaysFailure/>
</ReactiveFallback>
<ReactiveFallback>
<Condition ID="ROS2Condition" interface="ROS2SERVICE" isMonitored="false" name="IsPointingAtArtwork" nodeName="IsPointingAtArtwork"/>
<Action ID="ROS2Action" interface="ROS2SERVICE" isMonitored="False" name="PointAtArtwork" nodeName="PointAtArtwork"/>
</ReactiveFallback>
<Action ID="ROS2Action" interface="ROS2SERVICE" isMonitored="False" name="NarratePOI" nodeName="NarratePOI"/>
<Action ID="ROS2Action" interface="ROS2SERVICE" isMonitored="False" name="InteractWithVisitors" nodeName="InteractWithVisitors"/>
<Fallback name="">
<Condition ID="ROS2Condition" interface="ROS2SERVICE" isMonitored="false" name="VisitorsEngaged" nodeName="VisitorsEngaged"/>
<Action ID="ROS2Action" interface="ROS2SERVICE" isMonitored="False" name="RescheduleTourVisitorNotEngaged" nodeName="RescheduleTourVisitorNotEngaged"/>
<AlwaysFailure/>
</Fallback>
<Fallback>
<Inverter>
<Condition ID="ROS2Condition" interface="ROS2SERVICE" isMonitored="false" name="MuseumTooCrowded" nodeName="MuseumTooCrowded"/>
</Inverter>
<Action ID="ROS2Action" interface="ROS2SERVICE" isMonitored="False" name="RescheduleTourMuseumTooCrowded" nodeName="RescheduleTourMuseumTooCrowded"/>
<AlwaysFailure/>
</Fallback>
<Action ID="ROS2Action" interface="ROS2SERVICE" isMonitored="False" name="UpdatePOI" nodeName="UpdatePOI"/>
</Sequence>
</BehaviorTree>
<!-- ////////// -->
<BehaviorTree ID="NetworkManagement">
<ReactiveSequence>
<Condition ID="ROS2Condition" interface="ROS2SERVICE" isMonitored="false" name="NetworkDown" nodeName="NetworkDown"/>
<Action ID="ROS2Action" interface="ROS2SERVICE" isMonitored="False" name="ManageModulesIfNetworkDown" nodeName="ManageModulesIfNetworkDown"/>
</ReactiveSequence>
</BehaviorTree>
<!-- ////////// -->
<BehaviorTree ID="TourAborted">
<ReactiveSequence>
<Condition ID="ROS2Condition" interface="ROS2SERVICE" isMonitored="false" name="TourAbortedByVisitors" nodeName="TourAbortedByVisitors"/>
<Action ID="ROS2Action" interface="ROS2SERVICE" isMonitored="False" name="GreetAndGoBackTourAbortedByVisitors" nodeName="GreetAndGoBackTourAbortedByVisitors"/>
</ReactiveSequence>
</BehaviorTree>
<!-- ////////// -->
<BehaviorTree ID="failureManagement">
<ReactiveFallback>
<ReactiveSequence>
<Condition ID="ROS2Condition" interface="ROS2SERVICE" isMonitored="false" name="BatteryLevel" nodeName="BatteryLevel"/>
<Inverter>
<Condition ID="ROS2Condition" interface="ROS2SERVICE" isMonitored="false" name="IsCharging" nodeName="IsCharging"/>
</Inverter>
</ReactiveSequence>
<ReactiveSequence>
<Action ID="ROS2Action" interface="ROS2SERVICE" isMonitored="False" name="AlertUsersLowBattery" nodeName="AlertUsersLowBattery"/>
<ReactiveFallback>
<Condition ID="ROS2Condition" interface="ROS2SERVICE" isMonitored="false" name="IsAtChargingStation" nodeName="IsAtChargingStation"/>
<Action ID="ROS2Action" interface="ROS2SERVICE" isMonitored="False" name="GoToChargingStation" nodeName="GoToChargingStation"/>
</ReactiveFallback>
<Action ID="AlwaysRunning" name="Wait"/>
</ReactiveSequence>
</ReactiveFallback>
</BehaviorTree>
<!-- ////////// -->
<BehaviorTree ID="gotoPoi">
<ReactiveFallback>
<Condition ID="ROS2Condition" interface="ROS2SERVICE" isMonitored="false" name="AtCurrentPoi" nodeName="AtCurrentPoi"/>
<ReactiveFallback name="">
<Condition ID="ROS2Condition" interface="ROS2SERVICE" isMonitored="false" name="VisitorsFollowingRobot" nodeName="VisitorsFollowingRobot"/>
<ReactiveSequence>
<ReactiveFallback name="">
<Condition ID="ROS2Condition" interface="ROS2SERVICE" isMonitored="false" name="IsCheckingForPeople" nodeName="IsCheckingForPeople"/>
<Action ID="ROS2Action" interface="ROS2SERVICE" isMonitored="False" name="StopAndTurnBack" nodeName="StopAndTurnBack"/>
</ReactiveFallback>
<Action ID="ROS2Action" interface="ROS2SERVICE" isMonitored="False" name="SayFollowMe" nodeName="SayFollowMe"/>
</ReactiveSequence>
</ReactiveFallback>
<Parallel failure_threshold="1" success_threshold="">
<Action ID="ROS2Action" interface="ROS2SERVICE" isMonitored="False" name="GoToPOI" nodeName="GoToPOI"/>
<Action ID="ROS2Action" interface="ROS2SERVICE" isMonitored="False" name="SayWhileNavigating" nodeName="SayWhileNavigating"/>
</Parallel>
</ReactiveFallback>
</BehaviorTree>
<!-- ////////// -->
<TreeNodesModel>
<Action ID="AlwaysRunning"/>
<SubTree ID="CheckArtworkAndExplain"/>
<SubTree ID="NetworkManagement"/>
<Action ID="ROS2Action">
<input_port default="ROS2SERVICE" name="interface"/>
<input_port default="False" name="isMonitored"/>
<input_port name="nodeName"/>
</Action>
<Condition ID="ROS2Condition">
<input_port default="ROS2SERVICE" name="interface"/>
<input_port default="false" name="isMonitored"/>
<input_port name="nodeName"/>
</Condition>
<SubTree ID="TourAborted"/>
<SubTree ID="failureManagement"/>
<SubTree ID="gotoPoi"/>
</TreeNodesModel>
<!-- ////////// -->
</root>

78 changes: 78 additions & 0 deletions laboratory-tour/src/uc3_launch/conf/BT/bt_convince.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
<?xml version="1.0"?>
<root main_tree_to_execute="BehaviorTree">
<!-- ////////// -->
<BehaviorTree ID="BehaviorTree">
<ReactiveSequence>
<ReactiveFallback>
<Action ID="ROS2Action" interface="ROS2SERVICE" name="Other Failures Management subtree" nodeName="" topicName=""/>
</ReactiveFallback>
<ReactiveFallback>
<ReactiveSequence>
<Condition ID="ROS2Condition" interface="ROS2SERVICE" name="tour aborted by visitors" nodeName="" topicName=""/>
<Action ID="ROS2Action" interface="ROS2SERVICE" name="Greet and Go back" nodeName="" topicName=""/>
</ReactiveSequence>
<ReactiveSequence>
<Condition ID="ROS2Condition" interface="ROS2SERVICE" name="networkDown" nodeName="" topicName=""/>
<Action ID="ROS2Action" interface="ROS2SERVICE" name="manageModulesifnetworkdown" nodeName="" topicName=""/>
</ReactiveSequence>
<ReactiveSequence>
<ReactiveFallback>
<Condition ID="ROS2Condition" interface="ROS2SERVICE" name="at current POI" nodeName="" topicName=""/>
<ReactiveFallback name="">
<Condition ID="ROS2Condition" interface="ROS2SERVICE" name="VisitorsFollowingRobot" nodeName="" topicName=""/>
<Parallel failure_threshold="1" success_threshold="">
<Action ID="ROS2Action" interface="ROS2SERVICE" name="gotoDestination" nodeName="" topicName=""/>
<Action ID="ROS2Action" interface="ROS2SERVICE" name="sayFollowMe" nodeName="" topicName=""/>
</Parallel>
</ReactiveFallback>
<Parallel failure_threshold="1" success_threshold="">
<Action ID="ROS2Action" interface="ROS2SERVICE" name="GoToDestination" nodeName="" topicName=""/>
<Action ID="ROS2Action" interface="ROS2SERVICE" name="SayWhileNaviigating" nodeName="" topicName=""/>
</Parallel>
</ReactiveFallback>
<Sequence>
<ReactiveFallback name="">
<Condition ID="ROS2Condition" interface="ROS2SERVICE" name="ArtworkPresent" nodeName="" topicName=""/>
<Fallback>
<Action ID="ROS2Action" interface="ROS2SERVICE" name="SearchArtwork" nodeName="" topicName=""/>
<Action ID="ROS2Action" interface="ROS2SERVICE" name="RescheduleTour" nodeName="" topicName=""/>
</Fallback>
</ReactiveFallback>
<ReactiveFallback>
<Condition ID="ROS2Condition" interface="ROS2SERVICE" name="ArtworkFree" nodeName="" topicName=""/>
<Action ID="ROS2Action" interface="ROS2SERVICE" name="RescheduleTour" nodeName="" topicName=""/>
</ReactiveFallback>
<Action ID="ROS2Action" interface="ROS2SERVICE" name="Narrate POI" nodeName="" topicName=""/>
<Action ID="ROS2Action" interface="ROS2SERVICE" name="Interact with visitors" nodeName="" topicName=""/>
<Fallback name="">
<Condition ID="ROS2Condition" interface="ROS2SERVICE" name="VisitorsEngaged" nodeName="" topicName=""/>
<Action ID="ROS2Action" interface="ROS2SERVICE" name="RescheduleTour" nodeName="" topicName=""/>
</Fallback>
<Fallback>
<Inverter>
<Condition ID="ROS2Condition" interface="ROS2SERVICE" name="MuseumTooCrowded" nodeName="" topicName=""/>
</Inverter>
<Action ID="ROS2Action" interface="ROS2SERVICE" name="RescheduleTour" nodeName="" topicName=""/>
</Fallback>
<Action ID="ROS2Action" interface="ROS2SERVICE" name="Update poi" nodeName="" topicName=""/>
</Sequence>
</ReactiveSequence>
</ReactiveFallback>
</ReactiveSequence>
</BehaviorTree>
<!-- ////////// -->
<TreeNodesModel>
<Action ID="ROS2Action">
<input_port default="ROS2SERVICE" name="interface"/>
<input_port name="nodeName"/>
<input_port name="topicName"/>
</Action>
<Condition ID="ROS2Condition">
<input_port default="ROS2SERVICE" name="interface"/>
<input_port name="nodeName"/>
<input_port name="topicName"/>
</Condition>
</TreeNodesModel>
<!-- ////////// -->
</root>

Loading

0 comments on commit 3702667

Please sign in to comment.