11# UPF4ROS2
22
3- This repository contains a UPF TSB for ROS 2
3+ [ ![ main] ( https://github.com/igonzf/UPF4ROS2/actions/workflows/main.yaml/badge.svg )] ( https://github.com/igonzf/UPF4ROS2/actions/workflows/main.yaml )
4+
5+ This repository integrates the Unified Planning Framework (UPF) into the ROS 2 ecosystem, providing a modular and standardized solution for automated planning in robotic systems. This project is part of the European initiative AIPlan4EU, which aims to develop automated planning tools that are accessible and applicable across different engineering domains.
46
57## Install and building
68
79```
810$ pip install --pre unified-planning[pyperplan,tamer]
11+ $ pip install ConfigSpace
12+ $ pip install typing_extensions==4.7.1 --upgrade
913$ cd <upf_workspace>
1014$ cd src
1115$ git clone https://github.com/PlanSys2/UPF4ROS2.git
@@ -15,6 +19,7 @@ $ colcon build --symlink-install
1519```
1620
1721### Install UPF from sources
22+
1823```
1924$ cd src
2025$ git clone https://github.com/aiplan4eu/unified-planning.git
@@ -53,26 +58,77 @@ $ cd unified-planning
5358$ bash run_tests.sh
5459```
5560
56-
5761## Usage
5862
5963` $ ros2 launch upf4ros2 upf4ros2.launch.py `
6064
6165## Nodes
6266
63- * ** upf4ros**
64- * Services:
65- * ` /upf4ros2/add_action ` ` [upf_msgs/srv/AddAction] `
66- * ` /upf4ros2/add_fluent ` ` [upf_msgs/srv/AddFluent] `
67- * ` /upf4ros2/add_goal ` ` [upf_msgs/srv/AddGoal] `
68- * ` /upf4ros2/add_object ` ` [upf_msgs/srv/AddObject] `
69- * ` /upf4ros2/new_problem ` [ upf_msgs/srv/NewProblem] `
70- * ` /upf4ros2/set_initial_value ` [ upf_msgs/srv/SetInitialValue] `
71- * ` /upf4ros2/set_problem ` [ upf_msgs/srv/SetProblem] `
72- * Actions:
73- * ` /upf4ros2/planOneShotPDDL ` ` [upf_msgs/action/PDDLPlanOneShot] `
74- * ` /upf4ros2/planOneShot ` ` [upf_msgs/action/PlanOneShot] `
75- * ` /upf4ros2/planOneShotRemote ` ` [upf_msgs/action/PlanOneShotRemote] `
67+ - ** upf4ros**
68+ - Services:
69+ - ` /upf4ros2/add_action ` ` [upf_msgs/srv/AddAction] `
70+ - ` /upf4ros2/add_fluent ` ` [upf_msgs/srv/AddFluent] `
71+ - ` /upf4ros2/add_goal ` ` [upf_msgs/srv/AddGoal] `
72+ - ` /upf4ros2/add_object ` ` [upf_msgs/srv/AddObject] `
73+ - ` /upf4ros2/new_problem ` [ upf_msgs/srv/NewProblem] `
74+ - ` /upf4ros2/set_initial_value ` [ upf_msgs/srv/SetInitialValue] `
75+ - ` /upf4ros2/set_problem ` [ upf_msgs/srv/SetProblem] `
76+ - Actions:
77+ - ` /upf4ros2/planOneShotPDDL ` ` [upf_msgs/action/PDDLPlanOneShot] `
78+ - ` /upf4ros2/planOneShot ` ` [upf_msgs/action/PlanOneShot] `
79+ - ` /upf4ros2/planOneShotRemote ` ` [upf_msgs/action/PlanOneShotRemote] `
80+
81+ ## Demo
82+
83+ ### [ Demo 1] ( https://www.youtube.com/watch?v=fObz6H1DnXs )
84+
85+ This demo consists of creating the problem from a ros2 node to navigate from living room to the entrance.
86+
87+ ` $ ros2 launch upf4ros2 upf4ros2.launch.py `
88+
89+ ` $ ros2 launch upf4ros2_demo upf4ros2_demo1.launch.py `
90+
91+ ### Demo 1 (pddl file)
92+
93+ This demo consists of creating the problem from a pddl domain and problem file.
94+
95+ ` $ ros2 launch upf4ros2 upf4ros2.launch.py `
96+
97+ ` $ ros2 launch upf4ros2_demo upf4ros2_demo1_pddlfile.launch.py `
98+
99+ ### Demo 1 (bash)
100+
101+ This demo consists of creating the problem from the command line. For easier use you can use the script in /upf4ros2_demo/resource/upf_problem.sh
102+
103+ ` $ ros2 launch upf4ros2 upf4ros2.launch.py `
104+
105+ ` $ ./upf_problem.sh `
106+
107+ ` $ ros2 launch upf4ros2_demo upf4ros2_demo1_bash.launch.py `
108+
109+ ### [ Demo 2] ( https://www.youtube.com/watch?v=HJ46htSfPZY )
110+
111+ This demo consists of creating the problem from a ROS 2 node to navigate from living room to the entrance.
112+ For run this demo I used the simulated TIAGo robot from this [ repo] ( https://github.com/jmguerreroh/ros2_computer_vision )
113+
114+ ` $ ros2 launch upf4ros2 upf4ros2.launch.py `
115+
116+ ` $ ros2 launch upf4ros2_demo upf4ros2_demo2.launch.py `
117+
118+ ### Demo 3
119+
120+ This demo consists of creating the problem from a ROS 2 node to navigate and check a list of waypoints starting from living room.
121+ For run this demo I used the simulated TIAGo robot from this [ repo] ( https://github.com/jmguerreroh/ros2_computer_vision )
122+
123+ ` $ ros2 launch upf4ros2 upf4ros2.launch.py `
124+
125+ ` $ ros2 launch upf4ros2_demo upf4ros2_demo3.launch.py `
126+
127+ There are two alternatives:
128+
129+ - Regular case: Illustrated in this [ video] ( https://youtu.be/2nKqxGYlHk8 )
130+
131+ - Replanning case: one of the waypoints is not reachable and it is necessary to replan. Illustrated in this [ video] ( https://youtu.be/UJncg7GPCro )
76132
77133## Acknowledgments
78134
0 commit comments