diff --git a/plansys2_auction_example/.vscode/c_cpp_properties.json b/plansys2_auction_example/.vscode/c_cpp_properties.json
new file mode 100644
index 0000000..fb0b0ac
--- /dev/null
+++ b/plansys2_auction_example/.vscode/c_cpp_properties.json
@@ -0,0 +1,156 @@
+{
+ "configurations": [
+ {
+ "browse": {
+ "databaseFilename": "${default}",
+ "limitSymbolsToIncludedHeaders": false
+ },
+ "includePath": [
+ "/home/kalman/projects/research_ws/install/plansys2_bt_actions/include/**",
+ "/home/kalman/projects/research_ws/install/plansys2_executor/include/**",
+ "/home/kalman/projects/research_ws/install/plansys2_planner/include/**",
+ "/home/kalman/projects/research_ws/install/plansys2_problem_expert/include/**",
+ "/home/kalman/projects/research_ws/install/plansys2_domain_expert/include/**",
+ "/home/kalman/projects/research_ws/install/plansys2_popf_plan_solver/include/**",
+ "/home/kalman/projects/research_ws/install/popf/include/**",
+ "/home/kalman/projects/research_ws/install/plansys2_tfd_plan_solver/include/**",
+ "/home/kalman/projects/research_ws/install/plansys2_core/include/**",
+ "/home/kalman/projects/research_ws/install/plansys2_pddl_parser/include/**",
+ "/home/kalman/projects/research_ws/install/plansys2_msgs/include/**",
+ "/home/kalman/projects/research_ws/install/plansys2_lifecycle_manager/include/**",
+ "/home/kalman/projects/research_ws/install/nav2_smoother/include/**",
+ "/home/kalman/projects/research_ws/install/nav2_graceful_controller/include/**",
+ "/home/kalman/projects/research_ws/install/nav2_controller/include/**",
+ "/home/kalman/projects/research_ws/install/dwb_plugins/include/**",
+ "/home/kalman/projects/research_ws/install/dwb_critics/include/**",
+ "/home/kalman/projects/research_ws/install/dwb_core/include/**",
+ "/home/kalman/projects/research_ws/install/nav_2d_utils/include/**",
+ "/home/kalman/projects/research_ws/install/dwb_msgs/include/**",
+ "/home/kalman/projects/research_ws/install/nav_2d_msgs/include/**",
+ "/home/kalman/projects/research_ws/install/nav2_waypoint_follower/include/**",
+ "/home/kalman/projects/research_ws/install/nav2_theta_star_planner/include/**",
+ "/home/kalman/projects/research_ws/install/nav2_smac_planner/include/**",
+ "/home/kalman/projects/research_ws/install/nav2_rotation_shim_controller/include/**",
+ "/home/kalman/projects/research_ws/install/nav2_regulated_pure_pursuit_controller/include/**",
+ "/home/kalman/projects/research_ws/install/nav2_planner/include/**",
+ "/home/kalman/projects/research_ws/install/nav2_navfn_planner/include/**",
+ "/home/kalman/projects/research_ws/install/nav2_mppi_controller/include/**",
+ "/home/kalman/projects/research_ws/install/nav2_constrained_smoother/include/**",
+ "/home/kalman/projects/research_ws/install/nav2_bt_navigator/include/**",
+ "/home/kalman/projects/research_ws/install/nav2_behaviors/include/**",
+ "/home/kalman/projects/research_ws/install/nav2_core/include/**",
+ "/home/kalman/projects/research_ws/install/nav2_collision_monitor/include/**",
+ "/home/kalman/projects/research_ws/install/costmap_queue/include/**",
+ "/home/kalman/projects/research_ws/install/nav2_costmap_2d/include/**",
+ "/home/kalman/projects/research_ws/install/nav2_voxel_grid/include/**",
+ "/home/kalman/projects/research_ws/install/nav2_velocity_smoother/include/**",
+ "/home/kalman/projects/research_ws/install/nav2_rviz_plugins/include/**",
+ "/home/kalman/projects/research_ws/install/nav2_map_server/include/**",
+ "/home/kalman/projects/research_ws/install/nav2_lifecycle_manager/include/**",
+ "/home/kalman/projects/research_ws/install/nav2_behavior_tree/include/**",
+ "/home/kalman/projects/research_ws/install/nav2_amcl/include/**",
+ "/home/kalman/projects/research_ws/install/nav2_util/include/**",
+ "/home/kalman/projects/research_ws/install/nav2_msgs/include/**",
+ "/home/kalman/projects/research_ws/install/behaviortree_cpp_v3/include/**",
+ "/home/kalman/projects/rolling_personal_ws/install/plansys2_bt_actions/include/**",
+ "/home/kalman/projects/rolling_personal_ws/install/plansys2_executor/include/**",
+ "/home/kalman/projects/rolling_personal_ws/install/plansys2_planner/include/**",
+ "/home/kalman/projects/rolling_personal_ws/install/plansys2_problem_expert/include/**",
+ "/home/kalman/projects/rolling_personal_ws/install/plansys2_domain_expert/include/**",
+ "/home/kalman/projects/rolling_personal_ws/install/plansys2_popf_plan_solver/include/**",
+ "/home/kalman/projects/rolling_personal_ws/install/popf/include/**",
+ "/home/kalman/projects/rolling_personal_ws/install/plansys2_tfd_plan_solver/include/**",
+ "/home/kalman/projects/rolling_personal_ws/install/plansys2_core/include/**",
+ "/home/kalman/projects/rolling_personal_ws/install/plansys2_pddl_parser/include/**",
+ "/home/kalman/projects/rolling_personal_ws/install/plansys2_msgs/include/**",
+ "/home/kalman/projects/rolling_personal_ws/install/plansys2_lifecycle_manager/include/**",
+ "/home/kalman/projects/rolling_personal_ws/install/nav2_smoother/include/**",
+ "/home/kalman/projects/rolling_personal_ws/install/nav2_controller/include/**",
+ "/home/kalman/projects/rolling_personal_ws/install/dwb_plugins/include/**",
+ "/home/kalman/projects/rolling_personal_ws/install/dwb_critics/include/**",
+ "/home/kalman/projects/rolling_personal_ws/install/dwb_core/include/**",
+ "/home/kalman/projects/rolling_personal_ws/install/nav_2d_utils/include/**",
+ "/home/kalman/projects/rolling_personal_ws/install/dwb_msgs/include/**",
+ "/home/kalman/projects/rolling_personal_ws/install/nav_2d_msgs/include/**",
+ "/home/kalman/projects/rolling_personal_ws/install/nav2_waypoint_follower/include/**",
+ "/home/kalman/projects/rolling_personal_ws/install/nav2_theta_star_planner/include/**",
+ "/home/kalman/projects/rolling_personal_ws/install/nav2_smac_planner/include/**",
+ "/home/kalman/projects/rolling_personal_ws/install/nav2_rotation_shim_controller/include/**",
+ "/home/kalman/projects/rolling_personal_ws/install/nav2_regulated_pure_pursuit_controller/include/**",
+ "/home/kalman/projects/rolling_personal_ws/install/nav2_planner/include/**",
+ "/home/kalman/projects/rolling_personal_ws/install/nav2_navfn_planner/include/**",
+ "/home/kalman/projects/rolling_personal_ws/install/nav2_mppi_controller/include/**",
+ "/home/kalman/projects/rolling_personal_ws/install/nav2_constrained_smoother/include/**",
+ "/home/kalman/projects/rolling_personal_ws/install/nav2_bt_navigator/include/**",
+ "/home/kalman/projects/rolling_personal_ws/install/nav2_behaviors/include/**",
+ "/home/kalman/projects/rolling_personal_ws/install/nav2_core/include/**",
+ "/home/kalman/projects/rolling_personal_ws/install/nav2_collision_monitor/include/**",
+ "/home/kalman/projects/rolling_personal_ws/install/costmap_queue/include/**",
+ "/home/kalman/projects/rolling_personal_ws/install/nav2_costmap_2d/include/**",
+ "/home/kalman/projects/rolling_personal_ws/install/nav2_voxel_grid/include/**",
+ "/home/kalman/projects/rolling_personal_ws/install/nav2_velocity_smoother/include/**",
+ "/home/kalman/projects/rolling_personal_ws/install/nav2_rviz_plugins/include/**",
+ "/home/kalman/projects/rolling_personal_ws/install/nav2_map_server/include/**",
+ "/home/kalman/projects/rolling_personal_ws/install/nav2_lifecycle_manager/include/**",
+ "/home/kalman/projects/rolling_personal_ws/install/nav2_behavior_tree/include/**",
+ "/home/kalman/projects/rolling_personal_ws/install/nav2_amcl/include/**",
+ "/home/kalman/projects/rolling_personal_ws/install/nav2_util/include/**",
+ "/home/kalman/projects/rolling_personal_ws/install/nav2_msgs/include/**",
+ "/home/kalman/projects/rolling_personal_ws/install/behaviortree_cpp_v3/include/**",
+ "/opt/ros/rolling/include/**",
+ "/home/kalman/projects/research_ws/src/BehaviorTree.CPP/include/**",
+ "/home/kalman/projects/research_ws/src/navigation2/nav2_amcl/include/**",
+ "/home/kalman/projects/research_ws/src/navigation2/nav2_behavior_tree/include/**",
+ "/home/kalman/projects/research_ws/src/navigation2/nav2_behaviors/include/**",
+ "/home/kalman/projects/research_ws/src/navigation2/nav2_bt_navigator/include/**",
+ "/home/kalman/projects/research_ws/src/navigation2/nav2_collision_monitor/include/**",
+ "/home/kalman/projects/research_ws/src/navigation2/nav2_constrained_smoother/include/**",
+ "/home/kalman/projects/research_ws/src/navigation2/nav2_controller/include/**",
+ "/home/kalman/projects/research_ws/src/navigation2/nav2_core/include/**",
+ "/home/kalman/projects/research_ws/src/navigation2/nav2_costmap_2d/include/**",
+ "/home/kalman/projects/research_ws/src/navigation2/nav2_dwb_controller/costmap_queue/include/**",
+ "/home/kalman/projects/research_ws/src/navigation2/nav2_dwb_controller/dwb_core/include/**",
+ "/home/kalman/projects/research_ws/src/navigation2/nav2_dwb_controller/dwb_critics/include/**",
+ "/home/kalman/projects/research_ws/src/navigation2/nav2_dwb_controller/dwb_plugins/include/**",
+ "/home/kalman/projects/research_ws/src/navigation2/nav2_dwb_controller/nav_2d_utils/include/**",
+ "/home/kalman/projects/research_ws/src/navigation2/nav2_graceful_controller/include/**",
+ "/home/kalman/projects/research_ws/src/navigation2/nav2_lifecycle_manager/include/**",
+ "/home/kalman/projects/research_ws/src/navigation2/nav2_map_server/include/**",
+ "/home/kalman/projects/research_ws/src/navigation2/nav2_mppi_controller/include/**",
+ "/home/kalman/projects/research_ws/src/navigation2/nav2_navfn_planner/include/**",
+ "/home/kalman/projects/research_ws/src/navigation2/nav2_planner/include/**",
+ "/home/kalman/projects/research_ws/src/navigation2/nav2_regulated_pure_pursuit_controller/include/**",
+ "/home/kalman/projects/research_ws/src/navigation2/nav2_rotation_shim_controller/include/**",
+ "/home/kalman/projects/research_ws/src/navigation2/nav2_rviz_plugins/include/**",
+ "/home/kalman/projects/research_ws/src/navigation2/nav2_smac_planner/include/**",
+ "/home/kalman/projects/research_ws/src/navigation2/nav2_smoother/include/**",
+ "/home/kalman/projects/research_ws/src/navigation2/nav2_theta_star_planner/include/**",
+ "/home/kalman/projects/research_ws/src/navigation2/nav2_util/include/**",
+ "/home/kalman/projects/research_ws/src/navigation2/nav2_velocity_smoother/include/**",
+ "/home/kalman/projects/research_ws/src/navigation2/nav2_voxel_grid/include/**",
+ "/home/kalman/projects/research_ws/src/navigation2/nav2_waypoint_follower/include/**",
+ "/home/kalman/projects/research_ws/src/plansys2_tfd_plan_solver/include/**",
+ "/home/kalman/projects/research_ws/src/ros2_planning_system/plansys2_bt_actions/include/**",
+ "/home/kalman/projects/research_ws/src/ros2_planning_system/plansys2_core/include/**",
+ "/home/kalman/projects/research_ws/src/ros2_planning_system/plansys2_domain_expert/include/**",
+ "/home/kalman/projects/research_ws/src/ros2_planning_system/plansys2_executor/include/**",
+ "/home/kalman/projects/research_ws/src/ros2_planning_system/plansys2_lifecycle_manager/include/**",
+ "/home/kalman/projects/research_ws/src/ros2_planning_system/plansys2_pddl_parser/include/**",
+ "/home/kalman/projects/research_ws/src/ros2_planning_system/plansys2_planner/include/**",
+ "/home/kalman/projects/research_ws/src/ros2_planning_system/plansys2_popf_plan_solver/include/**",
+ "/home/kalman/projects/research_ws/src/ros2_planning_system/plansys2_problem_expert/include/**",
+ "/home/kalman/projects/research_ws/src/ros2_planning_system/plansys2_terminal/include/**",
+ "/home/kalman/projects/research_ws/src/ros2_planning_system/plansys2_tests/include/**",
+ "/home/kalman/projects/research_ws/src/ros2_planning_system/plansys2_tools/include/**",
+ "/home/kalman/projects/research_ws/src/ros2_planning_system_examples/plansys2_bt_example/include/**",
+ "/usr/include/**"
+ ],
+ "name": "ROS",
+ "intelliSenseMode": "gcc-x64",
+ "compilerPath": "/usr/bin/gcc",
+ "cStandard": "gnu11",
+ "cppStandard": "c++14"
+ }
+ ],
+ "version": 4
+}
\ No newline at end of file
diff --git a/plansys2_auction_example/.vscode/settings.json b/plansys2_auction_example/.vscode/settings.json
new file mode 100644
index 0000000..9f777a6
--- /dev/null
+++ b/plansys2_auction_example/.vscode/settings.json
@@ -0,0 +1,121 @@
+{
+ "python.autoComplete.extraPaths": [
+ "/home/kalman/projects/research_ws/install/plansys2_simple_example_py/lib/python3.10/site-packages",
+ "/home/kalman/projects/research_ws/install/plansys2_support_py/lib/python3.10/site-packages",
+ "/home/kalman/projects/research_ws/install/plansys2_msgs/lib/python3.10/site-packages",
+ "/home/kalman/projects/research_ws/install/dwb_msgs/lib/python3.10/site-packages",
+ "/home/kalman/projects/research_ws/install/nav_2d_msgs/lib/python3.10/site-packages",
+ "/home/kalman/projects/research_ws/build/nav2_simple_commander",
+ "/home/kalman/projects/research_ws/install/nav2_simple_commander/lib/python3.10/site-packages",
+ "/home/kalman/projects/research_ws/install/nav2_msgs/lib/python3.10/site-packages",
+ "/home/kalman/projects/research_ws/install/nav2_common/lib/python3.10/site-packages",
+ "/home/kalman/projects/rolling_personal_ws/install/plansys2_simple_example_py/lib/python3.10/site-packages",
+ "/home/kalman/projects/rolling_personal_ws/install/plansys2_support_py/lib/python3.10/site-packages",
+ "/home/kalman/projects/rolling_personal_ws/install/plansys2_msgs/lib/python3.10/site-packages",
+ "/home/kalman/projects/rolling_personal_ws/install/dwb_msgs/lib/python3.10/site-packages",
+ "/home/kalman/projects/rolling_personal_ws/install/nav_2d_msgs/lib/python3.10/site-packages",
+ "/home/kalman/projects/rolling_personal_ws/build/nav2_simple_commander",
+ "/home/kalman/projects/rolling_personal_ws/install/nav2_simple_commander/lib/python3.10/site-packages",
+ "/home/kalman/projects/rolling_personal_ws/install/nav2_msgs/lib/python3.10/site-packages",
+ "/home/kalman/projects/rolling_personal_ws/install/nav2_common/lib/python3.10/site-packages",
+ "/opt/ros/rolling/lib/python3.10/site-packages"
+ ],
+ "python.analysis.extraPaths": [
+ "/home/kalman/projects/research_ws/install/plansys2_simple_example_py/lib/python3.10/site-packages",
+ "/home/kalman/projects/research_ws/install/plansys2_support_py/lib/python3.10/site-packages",
+ "/home/kalman/projects/research_ws/install/plansys2_msgs/lib/python3.10/site-packages",
+ "/home/kalman/projects/research_ws/install/dwb_msgs/lib/python3.10/site-packages",
+ "/home/kalman/projects/research_ws/install/nav_2d_msgs/lib/python3.10/site-packages",
+ "/home/kalman/projects/research_ws/build/nav2_simple_commander",
+ "/home/kalman/projects/research_ws/install/nav2_simple_commander/lib/python3.10/site-packages",
+ "/home/kalman/projects/research_ws/install/nav2_msgs/lib/python3.10/site-packages",
+ "/home/kalman/projects/research_ws/install/nav2_common/lib/python3.10/site-packages",
+ "/home/kalman/projects/rolling_personal_ws/install/plansys2_simple_example_py/lib/python3.10/site-packages",
+ "/home/kalman/projects/rolling_personal_ws/install/plansys2_support_py/lib/python3.10/site-packages",
+ "/home/kalman/projects/rolling_personal_ws/install/plansys2_msgs/lib/python3.10/site-packages",
+ "/home/kalman/projects/rolling_personal_ws/install/dwb_msgs/lib/python3.10/site-packages",
+ "/home/kalman/projects/rolling_personal_ws/install/nav_2d_msgs/lib/python3.10/site-packages",
+ "/home/kalman/projects/rolling_personal_ws/build/nav2_simple_commander",
+ "/home/kalman/projects/rolling_personal_ws/install/nav2_simple_commander/lib/python3.10/site-packages",
+ "/home/kalman/projects/rolling_personal_ws/install/nav2_msgs/lib/python3.10/site-packages",
+ "/home/kalman/projects/rolling_personal_ws/install/nav2_common/lib/python3.10/site-packages",
+ "/opt/ros/rolling/lib/python3.10/site-packages"
+ ],
+ "files.associations": {
+ "chrono": "cpp",
+ "cctype": "cpp",
+ "clocale": "cpp",
+ "cmath": "cpp",
+ "csignal": "cpp",
+ "cstdarg": "cpp",
+ "cstddef": "cpp",
+ "cstdio": "cpp",
+ "cstdlib": "cpp",
+ "cstring": "cpp",
+ "ctime": "cpp",
+ "cwchar": "cpp",
+ "cwctype": "cpp",
+ "any": "cpp",
+ "array": "cpp",
+ "atomic": "cpp",
+ "strstream": "cpp",
+ "bit": "cpp",
+ "*.tcc": "cpp",
+ "bitset": "cpp",
+ "codecvt": "cpp",
+ "compare": "cpp",
+ "complex": "cpp",
+ "concepts": "cpp",
+ "condition_variable": "cpp",
+ "cstdint": "cpp",
+ "deque": "cpp",
+ "forward_list": "cpp",
+ "list": "cpp",
+ "map": "cpp",
+ "set": "cpp",
+ "string": "cpp",
+ "unordered_map": "cpp",
+ "unordered_set": "cpp",
+ "vector": "cpp",
+ "exception": "cpp",
+ "algorithm": "cpp",
+ "functional": "cpp",
+ "iterator": "cpp",
+ "memory": "cpp",
+ "memory_resource": "cpp",
+ "numeric": "cpp",
+ "optional": "cpp",
+ "random": "cpp",
+ "ratio": "cpp",
+ "regex": "cpp",
+ "string_view": "cpp",
+ "system_error": "cpp",
+ "tuple": "cpp",
+ "type_traits": "cpp",
+ "utility": "cpp",
+ "fstream": "cpp",
+ "future": "cpp",
+ "initializer_list": "cpp",
+ "iomanip": "cpp",
+ "iosfwd": "cpp",
+ "iostream": "cpp",
+ "istream": "cpp",
+ "limits": "cpp",
+ "mutex": "cpp",
+ "new": "cpp",
+ "numbers": "cpp",
+ "ostream": "cpp",
+ "semaphore": "cpp",
+ "shared_mutex": "cpp",
+ "sstream": "cpp",
+ "stdexcept": "cpp",
+ "stop_token": "cpp",
+ "streambuf": "cpp",
+ "thread": "cpp",
+ "cfenv": "cpp",
+ "cinttypes": "cpp",
+ "typeindex": "cpp",
+ "typeinfo": "cpp",
+ "variant": "cpp"
+ }
+}
\ No newline at end of file
diff --git a/plansys2_auction_example/CMakeLists.txt b/plansys2_auction_example/CMakeLists.txt
new file mode 100644
index 0000000..e6d5d83
--- /dev/null
+++ b/plansys2_auction_example/CMakeLists.txt
@@ -0,0 +1,65 @@
+cmake_minimum_required(VERSION 3.5)
+project(plansys2_auction_example)
+
+set(CMAKE_BUILD_TYPE Debug)
+
+find_package(ament_cmake REQUIRED)
+find_package(rclcpp REQUIRED)
+find_package(rclcpp_action REQUIRED)
+find_package(plansys2_msgs REQUIRED)
+find_package(geometry_msgs REQUIRED)
+find_package(nav2_msgs REQUIRED)
+find_package(nav2_util REQUIRED)
+find_package(plansys2_domain_expert REQUIRED)
+find_package(plansys2_executor REQUIRED)
+find_package(plansys2_planner REQUIRED)
+find_package(plansys2_problem_expert REQUIRED)
+find_package(plansys2_pddl_parser REQUIRED)
+find_package(yaml-cpp REQUIRED)
+
+set(CMAKE_CXX_STANDARD 17)
+
+set(dependencies
+ rclcpp
+ rclcpp_action
+ plansys2_msgs
+ nav2_msgs
+ nav2_util
+ plansys2_domain_expert
+ plansys2_executor
+ plansys2_planner
+ plansys2_problem_expert
+ plansys2_pddl_parser
+ yaml-cpp
+)
+
+add_executable(move_action_node src/move_action_node.cpp)
+ament_target_dependencies(move_action_node ${dependencies})
+
+add_executable(patrol_action_node src/patrol_action_node.cpp)
+ament_target_dependencies(patrol_action_node ${dependencies})
+
+add_executable(patrolling_controller_node src/patrolling_controller_node.cpp)
+ament_target_dependencies(patrolling_controller_node ${dependencies})
+
+install(DIRECTORY launch pddl params DESTINATION share/${PROJECT_NAME})
+
+install(TARGETS
+ move_action_node
+ patrol_action_node
+ patrolling_controller_node
+ ARCHIVE DESTINATION lib
+ LIBRARY DESTINATION lib
+ RUNTIME DESTINATION lib/${PROJECT_NAME}
+)
+
+if(BUILD_TESTING)
+ find_package(ament_lint_auto REQUIRED)
+ ament_lint_auto_find_test_dependencies()
+
+ find_package(ament_cmake_gtest REQUIRED)
+endif()
+
+ament_export_dependencies(${dependencies})
+
+ament_package()
diff --git a/plansys2_auction_example/README.md b/plansys2_auction_example/README.md
new file mode 100644
index 0000000..f6f80d0
--- /dev/null
+++ b/plansys2_auction_example/README.md
@@ -0,0 +1,25 @@
+# PlanSys2 Patrol Navigation Example
+
+## Description
+
+(**Requires Navigation2**)
+
+This example shows:
+- How to use an application to initiate knowledge (the PDDL problem) and control its execution flow.
+- How to interact with ROS2 Navigation
+
+The patrolling_controller_node node must be run separately. Use the PlanSys2 API to populate instances, predicates, and goals. Implement a finite state machine to establish as a goal which waypoint to patrol. Patrolling a waypoint is going to that point and turning around for a few seconds.
+
+## How to run
+
+In terminal 1:
+
+```
+ros2 launch plansys2_patrol_navigation_example patrol_example_launch.py
+```
+
+In terminal 2:
+
+```
+ros2 run plansys2_patrol_navigation_example patrolling_controller_node
+```
diff --git a/plansys2_auction_example/launch/patrol_example_fakesim_launch.py b/plansys2_auction_example/launch/patrol_example_fakesim_launch.py
new file mode 100644
index 0000000..42e9ac5
--- /dev/null
+++ b/plansys2_auction_example/launch/patrol_example_fakesim_launch.py
@@ -0,0 +1,87 @@
+# Copyright 2019 Intelligent Robotics Lab
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import os
+import yaml
+
+from ament_index_python.packages import get_package_share_directory
+
+from launch import LaunchDescription
+from launch.actions import IncludeLaunchDescription
+from launch.launch_description_sources import PythonLaunchDescriptionSource
+from launch_ros.actions import Node
+
+
+def generate_launch_description():
+ # Get the launch directory
+ example_dir = get_package_share_directory('plansys2_auction_example')
+
+ plansys2_cmd = IncludeLaunchDescription(
+ PythonLaunchDescriptionSource(os.path.join(
+ get_package_share_directory('plansys2_bringup'),
+ 'launch',
+ 'plansys2_bringup_launch_monolithic.py')),
+ launch_arguments={'model_file': example_dir + '/pddl/patrol.pddl'}.items()
+ )
+
+ fake_nav2_cmd = Node(
+ package='plansys2_bt_example',
+ executable='nav2_sim_node',
+ name='nav2_sim_node',
+ output='screen',
+ parameters=[])
+
+ action_param_path = os.path.join(
+ example_dir,
+ 'params',
+ 'actions_params.yaml'
+ )
+ with open(action_param_path, 'r') as file:
+ configFile = yaml.safe_load(file)
+ configParams = configFile['move_action_node']['ros__parameters']
+ configParams1 = configFile['move_action_node1']['ros__parameters']
+
+ # Specify the actions
+ move_cmd = Node(
+ package='plansys2_auction_example',
+ executable='move_action_node',
+ name='move_action_node',
+ output='screen',
+ parameters=[configParams])
+ move_cmd2 = Node(
+ package='plansys2_auction_example',
+ executable='move_action_node',
+ name='move_action_node1',
+ output='screen',
+ parameters=[configParams1])
+
+ patrol_cmd = Node(
+ package='plansys2_auction_example',
+ executable='patrol_action_node',
+ name='patrol_action_node',
+ output='screen',
+ parameters=[])
+
+ # Create the launch description and populate
+ ld = LaunchDescription()
+
+ # Declare the launch options
+ ld.add_action(plansys2_cmd)
+ ld.add_action(fake_nav2_cmd)
+
+ ld.add_action(move_cmd)
+ ld.add_action(move_cmd2)
+ ld.add_action(patrol_cmd)
+
+ return ld
diff --git a/plansys2_auction_example/launch/patrol_example_launch.py b/plansys2_auction_example/launch/patrol_example_launch.py
new file mode 100644
index 0000000..1c276fd
--- /dev/null
+++ b/plansys2_auction_example/launch/patrol_example_launch.py
@@ -0,0 +1,105 @@
+# Copyright 2019 Intelligent Robotics Lab
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import os
+import yaml
+
+from ament_index_python.packages import get_package_share_directory
+
+from launch import LaunchDescription
+from launch.actions import IncludeLaunchDescription
+from launch.launch_description_sources import PythonLaunchDescriptionSource
+from launch_ros.actions import Node
+
+
+def generate_launch_description():
+ # Get the launch directory
+ example_dir = get_package_share_directory('plansys2_auction_example')
+
+ plansys2_cmd = IncludeLaunchDescription(
+ PythonLaunchDescriptionSource(os.path.join(
+ get_package_share_directory('plansys2_bringup'),
+ 'launch',
+ 'plansys2_bringup_launch_monolithic.py')),
+ launch_arguments={'model_file': example_dir + '/pddl/patrol.pddl'}.items()
+ )
+
+ nav2_cmd = IncludeLaunchDescription(
+ PythonLaunchDescriptionSource(os.path.join(
+ get_package_share_directory('nav2_bringup'),
+ 'launch',
+ 'tb3_simulation_launch.py')),
+ launch_arguments={
+ 'autostart': 'true',
+ 'params_file': os.path.join(example_dir, 'params', 'nav2_params.yaml')
+ }.items())
+
+
+ action_param_path = os.path.join(
+ example_dir,
+ 'params',
+ 'actions_params.yaml'
+ )
+ with open(action_param_path, 'r') as file:
+ configFile = yaml.safe_load(file)
+ configParams = configFile['move_action_node']['ros__parameters']
+ configParams1 = configFile['move_action_node1']['ros__parameters']
+ # configParams2 = configFile['move_action_node2']['ros__parameters']
+
+ print(configParams)
+ move_cmd = Node(
+ package='plansys2_auction_example',
+ executable='move_action_node',
+ name='move_action_node',
+ output='screen',
+ parameters=[configParams])
+ move_cmd1 = Node(
+ package='plansys2_auction_example',
+ executable='move_action_node',
+ name='move_action_node1',
+ output='screen',
+ parameters=[configParams1])
+ # move_cmd2 = Node(
+ # package='plansys2_auction_example',
+ # executable='move_action_node',
+ # name='move_action_node2',
+ # output='screen',
+ # parameters=[configParams2])
+ # move_cmd2 = Node(
+ # package='plansys2_auction_example',
+ # executable='move_action_node',
+ # name='move_action_node',
+ # output='screen',
+ # parameters=[])
+ patrol_cmd = Node(
+ package='plansys2_auction_example',
+ executable='patrol_action_node',
+ name='patrol_action_node',
+ output='screen',
+ parameters=[])
+
+ # Create the launch description and populate
+ ld = LaunchDescription()
+
+ # Declare the launch options
+ ld.add_action(plansys2_cmd)
+ # ld.add_action(nav2_cmd)
+
+ ld.add_action(move_cmd)
+ ld.add_action(move_cmd1)
+ # ld.add_action(move_cmd2)
+ # ld.add_action(move_cmd2)
+ ld.add_action(patrol_cmd)
+
+ return ld
diff --git a/plansys2_auction_example/package.xml b/plansys2_auction_example/package.xml
new file mode 100644
index 0000000..e1e299f
--- /dev/null
+++ b/plansys2_auction_example/package.xml
@@ -0,0 +1,37 @@
+
+
+
+ plansys2_auction_example
+ 0.0.4
+
+ An example including Navigation
+
+ Francisco Martin Rico
+
+ Apache License, Version 2.0
+
+ ament_cmake
+
+ rclcpp
+ rclcpp_action
+ plansys2_msgs
+ geometry_msgs
+ nav2_msgs
+ nav2_util
+ plansys2_domain_expert
+ plansys2_executor
+ plansys2_planner
+ plansys2_problem_expert
+ plansys2_pddl_parser
+
+ plansys2_bringup
+ plansys2_terminal
+
+ ament_lint_common
+ ament_lint_auto
+ ament_cmake_gtest
+
+
+ ament_cmake
+
+
diff --git a/plansys2_auction_example/params/actions_params.yaml b/plansys2_auction_example/params/actions_params.yaml
new file mode 100644
index 0000000..b8bba00
--- /dev/null
+++ b/plansys2_auction_example/params/actions_params.yaml
@@ -0,0 +1,53 @@
+move_action_node:
+ ros__parameters:
+ waypoints:
+ - "wp1"
+ - "wp2"
+ - "wp3"
+ - "wp4"
+ - "wp_control"
+ wp1:
+ x: 0.0
+ y: -2.0
+ wp2:
+ x: 1.8
+ y: 0.0
+ wp3:
+ x: 0.0
+ y: 2.0
+ wp4:
+ x: -0.5
+ y: -0.5
+ wp_control:
+ x: -2.0
+ y: -0.4
+
+move_action_node1:
+ ros__parameters:
+ waypoints:
+ - "wp1"
+ - "wp2"
+ - "wp3"
+ - "wp4"
+ - "wp_control"
+ wp1:
+ x: -1.95
+ y: 0.29
+ wp2:
+ x: -1.77
+ y: 0.54
+ wp3:
+ x: -1.91
+ y: -0.021
+ wp4:
+ x: -0.5
+ y: -0.5
+ wp_control:
+ x: -2.0
+ y: -0.4
+
+
+# move_action_node:
+# ros__parameters:
+# waypoints:
+# - {name: "wp1", x: 1.1, y: 2.1}
diff --git a/plansys2_auction_example/params/nav2_params.yaml b/plansys2_auction_example/params/nav2_params.yaml
new file mode 100644
index 0000000..0b4446a
--- /dev/null
+++ b/plansys2_auction_example/params/nav2_params.yaml
@@ -0,0 +1,354 @@
+amcl:
+ ros__parameters:
+ use_sim_time: True
+ alpha1: 0.2
+ alpha2: 0.2
+ alpha3: 0.2
+ alpha4: 0.2
+ alpha5: 0.2
+ base_frame_id: "base_footprint"
+ beam_skip_distance: 0.5
+ beam_skip_error_threshold: 0.9
+ beam_skip_threshold: 0.3
+ do_beamskip: false
+ global_frame_id: "map"
+ lambda_short: 0.1
+ laser_likelihood_max_dist: 2.0
+ laser_max_range: 100.0
+ laser_min_range: -1.0
+ laser_model_type: "likelihood_field"
+ max_beams: 60
+ max_particles: 2000
+ min_particles: 500
+ odom_frame_id: "odom"
+ pf_err: 0.05
+ pf_z: 0.99
+ recovery_alpha_fast: 0.0
+ recovery_alpha_slow: 0.0
+ resample_interval: 1
+ robot_model_type: "nav2_amcl::DifferentialMotionModel"
+ save_pose_rate: 0.5
+ sigma_hit: 0.2
+ tf_broadcast: true
+ transform_tolerance: 1.0
+ update_min_a: 0.2
+ update_min_d: 0.25
+ z_hit: 0.5
+ z_max: 0.05
+ z_rand: 0.5
+ z_short: 0.05
+ scan_topic: scan
+ set_initial_pose: True
+ initial_pose:
+ x: -2.0
+ y: -0.4
+ z: 0.0
+ yaw: 0.0
+
+amcl_map_client:
+ ros__parameters:
+ use_sim_time: True
+
+amcl_rclcpp_node:
+ ros__parameters:
+ use_sim_time: True
+
+bt_navigator:
+ ros__parameters:
+ use_sim_time: True
+ global_frame: map
+ robot_base_frame: base_link
+ odom_topic: /odom
+ bt_loop_duration: 10
+ default_server_timeout: 20
+ # 'default_nav_through_poses_bt_xml' and 'default_nav_to_pose_bt_xml' are use defaults:
+ # nav2_bt_navigator/navigate_to_pose_w_replanning_and_recovery.xml
+ # nav2_bt_navigator/navigate_through_poses_w_replanning_and_recovery.xml
+ # They can be set here or via a RewrittenYaml remap from a parent launch file to Nav2.
+ plugin_lib_names:
+ - nav2_compute_path_to_pose_action_bt_node
+ - nav2_compute_path_through_poses_action_bt_node
+ - nav2_smooth_path_action_bt_node
+ - nav2_follow_path_action_bt_node
+ - nav2_spin_action_bt_node
+ - nav2_wait_action_bt_node
+ - nav2_back_up_action_bt_node
+ - nav2_drive_on_heading_bt_node
+ - nav2_clear_costmap_service_bt_node
+ - nav2_is_stuck_condition_bt_node
+ - nav2_goal_reached_condition_bt_node
+ - nav2_goal_updated_condition_bt_node
+ - nav2_globally_updated_goal_condition_bt_node
+ - nav2_is_path_valid_condition_bt_node
+ - nav2_initial_pose_received_condition_bt_node
+ - nav2_reinitialize_global_localization_service_bt_node
+ - nav2_rate_controller_bt_node
+ - nav2_distance_controller_bt_node
+ - nav2_speed_controller_bt_node
+ - nav2_truncate_path_action_bt_node
+ - nav2_truncate_path_local_action_bt_node
+ - nav2_goal_updater_node_bt_node
+ - nav2_recovery_node_bt_node
+ - nav2_pipeline_sequence_bt_node
+ - nav2_round_robin_node_bt_node
+ - nav2_transform_available_condition_bt_node
+ - nav2_time_expired_condition_bt_node
+ - nav2_path_expiring_timer_condition
+ - nav2_distance_traveled_condition_bt_node
+ - nav2_single_trigger_bt_node
+ - nav2_is_battery_low_condition_bt_node
+ - nav2_navigate_through_poses_action_bt_node
+ - nav2_navigate_to_pose_action_bt_node
+ - nav2_remove_passed_goals_action_bt_node
+ - nav2_planner_selector_bt_node
+ - nav2_controller_selector_bt_node
+ - nav2_goal_checker_selector_bt_node
+ - nav2_controller_cancel_bt_node
+ - nav2_path_longer_on_approach_bt_node
+ - nav2_wait_cancel_bt_node
+ - nav2_spin_cancel_bt_node
+ - nav2_back_up_cancel_bt_node
+ - nav2_drive_on_heading_cancel_bt_node
+
+bt_navigator_rclcpp_node:
+ ros__parameters:
+ use_sim_time: True
+
+controller_server:
+ ros__parameters:
+ use_sim_time: True
+ controller_frequency: 20.0
+ min_x_velocity_threshold: 0.001
+ min_y_velocity_threshold: 0.5
+ min_theta_velocity_threshold: 0.001
+ failure_tolerance: 0.3
+ progress_checker_plugin: "progress_checker"
+ goal_checker_plugins: ["general_goal_checker"] # "precise_goal_checker"
+ controller_plugins: ["FollowPath"]
+
+ # Progress checker parameters
+ progress_checker:
+ plugin: "nav2_controller::SimpleProgressChecker"
+ required_movement_radius: 0.5
+ movement_time_allowance: 10.0
+ # Goal checker parameters
+ #precise_goal_checker:
+ # plugin: "nav2_controller::SimpleGoalChecker"
+ # xy_goal_tolerance: 0.25
+ # yaw_goal_tolerance: 0.25
+ # stateful: True
+ general_goal_checker:
+ stateful: True
+ plugin: "nav2_controller::SimpleGoalChecker"
+ xy_goal_tolerance: 0.25
+ yaw_goal_tolerance: 0.25
+ # DWB parameters
+ FollowPath:
+ plugin: "dwb_core::DWBLocalPlanner"
+ debug_trajectory_details: True
+ min_vel_x: 0.0
+ min_vel_y: 0.0
+ max_vel_x: 0.26
+ max_vel_y: 0.0
+ max_vel_theta: 1.0
+ min_speed_xy: 0.0
+ max_speed_xy: 0.26
+ min_speed_theta: 0.0
+ # Add high threshold velocity for turtlebot 3 issue.
+ # https://github.com/ROBOTIS-GIT/turtlebot3_simulations/issues/75
+ acc_lim_x: 2.5
+ acc_lim_y: 0.0
+ acc_lim_theta: 3.2
+ decel_lim_x: -2.5
+ decel_lim_y: 0.0
+ decel_lim_theta: -3.2
+ vx_samples: 20
+ vy_samples: 5
+ vtheta_samples: 20
+ sim_time: 1.7
+ linear_granularity: 0.05
+ angular_granularity: 0.025
+ transform_tolerance: 0.2
+ xy_goal_tolerance: 0.25
+ trans_stopped_velocity: 0.25
+ short_circuit_trajectory_evaluation: True
+ stateful: True
+ critics: ["RotateToGoal", "Oscillation", "BaseObstacle", "GoalAlign", "PathAlign", "PathDist", "GoalDist"]
+ BaseObstacle.scale: 0.02
+ PathAlign.scale: 32.0
+ PathAlign.forward_point_distance: 0.1
+ GoalAlign.scale: 24.0
+ GoalAlign.forward_point_distance: 0.1
+ PathDist.scale: 32.0
+ GoalDist.scale: 24.0
+ RotateToGoal.scale: 32.0
+ RotateToGoal.slowing_factor: 5.0
+ RotateToGoal.lookahead_time: -1.0
+
+controller_server_rclcpp_node:
+ ros__parameters:
+ use_sim_time: True
+
+local_costmap:
+ local_costmap:
+ ros__parameters:
+ update_frequency: 5.0
+ publish_frequency: 2.0
+ global_frame: odom
+ robot_base_frame: base_link
+ use_sim_time: True
+ rolling_window: true
+ width: 3
+ height: 3
+ resolution: 0.05
+ robot_radius: 0.22
+ plugins: ["voxel_layer", "inflation_layer"]
+ inflation_layer:
+ plugin: "nav2_costmap_2d::InflationLayer"
+ cost_scaling_factor: 3.0
+ inflation_radius: 0.55
+ voxel_layer:
+ plugin: "nav2_costmap_2d::VoxelLayer"
+ enabled: True
+ publish_voxel_map: True
+ origin_z: 0.0
+ z_resolution: 0.05
+ z_voxels: 16
+ max_obstacle_height: 2.0
+ mark_threshold: 0
+ observation_sources: scan
+ scan:
+ topic: /scan
+ max_obstacle_height: 2.0
+ clearing: True
+ marking: True
+ data_type: "LaserScan"
+ raytrace_max_range: 3.0
+ raytrace_min_range: 0.0
+ obstacle_max_range: 2.5
+ obstacle_min_range: 0.0
+ static_layer:
+ map_subscribe_transient_local: True
+ always_send_full_costmap: True
+ local_costmap_client:
+ ros__parameters:
+ use_sim_time: True
+ local_costmap_rclcpp_node:
+ ros__parameters:
+ use_sim_time: True
+
+global_costmap:
+ global_costmap:
+ ros__parameters:
+ update_frequency: 1.0
+ publish_frequency: 1.0
+ global_frame: map
+ robot_base_frame: base_link
+ use_sim_time: True
+ robot_radius: 0.22
+ resolution: 0.05
+ track_unknown_space: true
+ plugins: ["static_layer", "obstacle_layer", "inflation_layer"]
+ obstacle_layer:
+ plugin: "nav2_costmap_2d::ObstacleLayer"
+ enabled: True
+ observation_sources: scan
+ scan:
+ topic: /scan
+ max_obstacle_height: 2.0
+ clearing: True
+ marking: True
+ data_type: "LaserScan"
+ raytrace_max_range: 3.0
+ raytrace_min_range: 0.0
+ obstacle_max_range: 2.5
+ obstacle_min_range: 0.0
+ static_layer:
+ plugin: "nav2_costmap_2d::StaticLayer"
+ map_subscribe_transient_local: True
+ inflation_layer:
+ plugin: "nav2_costmap_2d::InflationLayer"
+ cost_scaling_factor: 3.0
+ inflation_radius: 0.55
+ always_send_full_costmap: True
+ global_costmap_client:
+ ros__parameters:
+ use_sim_time: True
+ global_costmap_rclcpp_node:
+ ros__parameters:
+ use_sim_time: True
+
+map_server:
+ ros__parameters:
+ use_sim_time: True
+ yaml_filename: "turtlebot3_world.yaml"
+
+map_saver:
+ ros__parameters:
+ use_sim_time: True
+ save_map_timeout: 5.0
+ free_thresh_default: 0.25
+ occupied_thresh_default: 0.65
+ map_subscribe_transient_local: True
+
+planner_server:
+ ros__parameters:
+ expected_planner_frequency: 20.0
+ use_sim_time: True
+ planner_plugins: ["GridBased"]
+ GridBased:
+ plugin: "nav2_navfn_planner/NavfnPlanner"
+ tolerance: 0.5
+ use_astar: false
+ allow_unknown: true
+
+planner_server_rclcpp_node:
+ ros__parameters:
+ use_sim_time: True
+
+smoother_server:
+ ros__parameters:
+ use_sim_time: True
+ smoother_plugins: ["simple_smoother"]
+ simple_smoother:
+ plugin: "nav2_smoother::SimpleSmoother"
+ tolerance: 1.0e-10
+ max_its: 1000
+ do_refinement: True
+
+behavior_server:
+ ros__parameters:
+ costmap_topic: local_costmap/costmap_raw
+ footprint_topic: local_costmap/published_footprint
+ cycle_frequency: 10.0
+ behavior_plugins: ["spin", "backup", "drive_on_heading", "wait"]
+ spin:
+ plugin: "nav2_behaviors/Spin"
+ backup:
+ plugin: "nav2_behaviors/BackUp"
+ drive_on_heading:
+ plugin: "nav2_behaviors/DriveOnHeading"
+ wait:
+ plugin: "nav2_behaviors/Wait"
+ global_frame: odom
+ robot_base_frame: base_link
+ transform_tolerance: 0.1
+ use_sim_time: true
+ simulate_ahead_time: 2.0
+ max_rotational_vel: 1.0
+ min_rotational_vel: 0.4
+ rotational_acc_lim: 3.2
+
+robot_state_publisher:
+ ros__parameters:
+ use_sim_time: True
+
+waypoint_follower:
+ ros__parameters:
+ loop_rate: 20
+ stop_on_failure: false
+ waypoint_task_executor_plugin: "wait_at_waypoint"
+ wait_at_waypoint:
+ plugin: "nav2_waypoint_follower::WaitAtWaypoint"
+ enabled: True
+ waypoint_pause_duration: 200
diff --git a/plansys2_auction_example/pddl/patrol.pddl b/plansys2_auction_example/pddl/patrol.pddl
new file mode 100644
index 0000000..e45ca2b
--- /dev/null
+++ b/plansys2_auction_example/pddl/patrol.pddl
@@ -0,0 +1,47 @@
+(define (domain patrol)
+(:requirements :strips :typing :adl :fluents :durative-actions)
+
+;; Types ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+(:types
+robot
+waypoint
+);; end Types ;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;; Predicates ;;;;;;;;;;;;;;;;;;;;;;;;;
+(:predicates
+
+(robot_at ?r - robot ?wp - waypoint)
+(connected ?wp1 ?wp2 - waypoint)
+(patrolled ?wp - waypoint)
+
+);; end Predicates ;;;;;;;;;;;;;;;;;;;;
+;; Functions ;;;;;;;;;;;;;;;;;;;;;;;;;
+(:functions
+
+);; end Functions ;;;;;;;;;;;;;;;;;;;;
+;; Actions ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+(:durative-action move
+ :parameters (?r - robot ?wp1 ?wp2 - waypoint)
+ :duration ( = ?duration 5)
+ :condition (and
+ (at start(connected ?wp1 ?wp2))
+ (at start(robot_at ?r ?wp1))
+ )
+ :effect (and
+ (at start(not(robot_at ?r ?wp1)))
+ (at end(robot_at ?r ?wp2))
+ )
+)
+
+(:durative-action patrol
+ :parameters (?r - robot ?wp - waypoint)
+ :duration ( = ?duration 5)
+ :condition (and
+ (at start(robot_at ?r ?wp))
+ )
+ :effect (and
+ (at end(patrolled ?wp))
+ )
+)
+
+);; end Domain ;;;;;;;;;;;;;;;;;;;;;;;;
diff --git a/plansys2_auction_example/src/move_action_node.cpp b/plansys2_auction_example/src/move_action_node.cpp
new file mode 100644
index 0000000..c34b0f1
--- /dev/null
+++ b/plansys2_auction_example/src/move_action_node.cpp
@@ -0,0 +1,292 @@
+// Copyright 2019 Intelligent Robotics Lab
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#include
+
+#include
+#include
+#include