Skip to content

Commit 0116fed

Browse files
stephanie-engAndyZe
authored and
Stephanie Eng
committed
Add tutorial for How to Use OMPL Constrained Planning (#386)
* Add tutorial for How to Use OMPL Constrained Planning * Reorganize code, port comments from original, use equality constraints * Update tutorial text and media, reorganize files, and clean up * Update .repos file for RViz Visual Tools * Remove outdated video link * Add description and links for projection evaluator Co-authored-by: AndyZe <[email protected]> (cherry picked from commit 2db5773)
1 parent adf4c26 commit 0116fed

23 files changed

+1203
-99
lines changed

.github/upstream.repos

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ repositories:
99
version: humble
1010
moveit_visual_tools:
1111
type: git
12-
url: https://github.com/ros-planning/moveit_visual_tools
12+
url: https://github.com/PickNikRobotics/rviz_visual_tools.git
1313
version: ros2
1414
rosparam_shortcuts:
1515
type: git

CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ add_subdirectory(doc/examples/moveit_cpp)
8282
# add_subdirectory(doc/examples/bullet_collision_checker)
8383
add_subdirectory(doc/examples/realtime_servo)
8484
add_subdirectory(doc/how_to_guides/isaac_panda)
85+
add_subdirectory(doc/how_to_guides/using_ompl_constrained_planning)
8586

8687
ament_export_dependencies(
8788
${THIS_PACKAGE_INCLUDE_DEPENDS}
840 KB
Binary file not shown.
647 KB
Binary file not shown.
Binary file not shown.
473 KB
Binary file not shown.

doc/examples/examples.rst

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,6 @@ Configuration
6363
kinematics_configuration/kinematics_configuration_tutorial
6464
custom_constraint_samplers/custom_constraint_samplers_tutorial
6565
ompl_interface/ompl_interface_tutorial
66-
ompl_constrained_planning/ompl_constrained_planning
6766
chomp_planner/chomp_planner_tutorial
6867
stomp_planner/stomp_planner_tutorial
6968
trajopt_planner/trajopt_planner_tutorial

doc/examples/ompl_constrained_planning/CMakeLists.txt

Lines changed: 0 additions & 4 deletions
This file was deleted.
Binary file not shown.

doc/examples/ompl_constrained_planning/scripts/extra_examples.py

Lines changed: 0 additions & 93 deletions
This file was deleted.

doc/how_to_guides/how_to_guides.rst

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,8 @@ These how-to guides will help you quickly solve specific problems using MoveIt.
1010
how_to_generate_api_doxygen_locally
1111
how_to_setup_docker_containers_in_ubuntu
1212
how_to_write_doxygen
13+
<<<<<<< HEAD
1314
isaac_panda/isaac_panda_tutorial
15+
=======
16+
using_ompl_constrained_planning/ompl_constrained_planning
17+
>>>>>>> 110141618... Add tutorial for How to Use OMPL Constrained Planning (#386)
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
add_executable(ompl_constrained_planning
2+
src/ompl_constrained_planning_tutorial.cpp)
3+
target_include_directories(ompl_constrained_planning
4+
PUBLIC include)
5+
ament_target_dependencies(ompl_constrained_planning
6+
${THIS_PACKAGE_INCLUDE_DEPENDS} Boost)
7+
8+
install(TARGETS ompl_constrained_planning
9+
DESTINATION lib/${PROJECT_NAME}
10+
)
11+
install(DIRECTORY launch
12+
DESTINATION share/${PROJECT_NAME}
13+
)
Loading
Lines changed: 216 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,216 @@
1+
planning_plugin: ompl_interface/OMPLPlanner
2+
request_adapters: >-
3+
default_planner_request_adapters/AddTimeOptimalParameterization
4+
default_planner_request_adapters/ResolveConstraintFrames
5+
default_planner_request_adapters/FixWorkspaceBounds
6+
default_planner_request_adapters/FixStartStateBounds
7+
default_planner_request_adapters/FixStartStateCollision
8+
default_planner_request_adapters/FixStartStatePathConstraints
9+
start_state_max_bounds_error: 0.1
10+
planner_configs:
11+
SBLkConfigDefault:
12+
type: geometric::SBL
13+
range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup()
14+
ESTkConfigDefault:
15+
type: geometric::EST
16+
range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0 setup()
17+
goal_bias: 0.05 # When close to goal select goal, with this probability. default: 0.05
18+
LBKPIECEkConfigDefault:
19+
type: geometric::LBKPIECE
20+
range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup()
21+
border_fraction: 0.9 # Fraction of time focused on boarder default: 0.9
22+
min_valid_path_fraction: 0.5 # Accept partially valid moves above fraction. default: 0.5
23+
BKPIECEkConfigDefault:
24+
type: geometric::BKPIECE
25+
range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup()
26+
border_fraction: 0.9 # Fraction of time focused on boarder default: 0.9
27+
failed_expansion_score_factor: 0.5 # When extending motion fails, scale score by factor. default: 0.5
28+
min_valid_path_fraction: 0.5 # Accept partially valid moves above fraction. default: 0.5
29+
KPIECEkConfigDefault:
30+
type: geometric::KPIECE
31+
range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup()
32+
goal_bias: 0.05 # When close to goal select goal, with this probability. default: 0.05
33+
border_fraction: 0.9 # Fraction of time focused on boarder default: 0.9 (0.0,1.]
34+
failed_expansion_score_factor: 0.5 # When extending motion fails, scale score by factor. default: 0.5
35+
min_valid_path_fraction: 0.5 # Accept partially valid moves above fraction. default: 0.5
36+
RRTkConfigDefault:
37+
type: geometric::RRT
38+
range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup()
39+
goal_bias: 0.05 # When close to goal select goal, with this probability? default: 0.05
40+
RRTConnectkConfigDefault:
41+
type: geometric::RRTConnect
42+
range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup()
43+
RRTstarkConfigDefault:
44+
type: geometric::RRTstar
45+
range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup()
46+
goal_bias: 0.05 # When close to goal select goal, with this probability? default: 0.05
47+
delay_collision_checking: 1 # Stop collision checking as soon as C-free parent found. default 1
48+
TRRTkConfigDefault:
49+
type: geometric::TRRT
50+
range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup()
51+
goal_bias: 0.05 # When close to goal select goal, with this probability? default: 0.05
52+
max_states_failed: 10 # when to start increasing temp. default: 10
53+
temp_change_factor: 2.0 # how much to increase or decrease temp. default: 2.0
54+
min_temperature: 10e-10 # lower limit of temp change. default: 10e-10
55+
init_temperature: 10e-6 # initial temperature. default: 10e-6
56+
frountier_threshold: 0.0 # dist new state to nearest neighbor to disqualify as frontier. default: 0.0 set in setup()
57+
frountierNodeRatio: 0.1 # 1/10, or 1 nonfrontier for every 10 frontier. default: 0.1
58+
k_constant: 0.0 # value used to normalize expression. default: 0.0 set in setup()
59+
PRMkConfigDefault:
60+
type: geometric::PRM
61+
max_nearest_neighbors: 10 # use k nearest neighbors. default: 10
62+
PRMstarkConfigDefault:
63+
type: geometric::PRMstar
64+
FMTkConfigDefault:
65+
type: geometric::FMT
66+
num_samples: 1000 # number of states that the planner should sample. default: 1000
67+
radius_multiplier: 1.1 # multiplier used for the nearest neighbors search radius. default: 1.1
68+
nearest_k: 1 # use Knearest strategy. default: 1
69+
cache_cc: 1 # use collision checking cache. default: 1
70+
heuristics: 0 # activate cost to go heuristics. default: 0
71+
extended_fmt: 1 # activate the extended FMT*: adding new samples if planner does not finish successfully. default: 1
72+
BFMTkConfigDefault:
73+
type: geometric::BFMT
74+
num_samples: 1000 # number of states that the planner should sample. default: 1000
75+
radius_multiplier: 1.0 # multiplier used for the nearest neighbors search radius. default: 1.0
76+
nearest_k: 1 # use the Knearest strategy. default: 1
77+
balanced: 0 # exploration strategy: balanced true expands one tree every iteration. False will select the tree with lowest maximum cost to go. default: 1
78+
optimality: 1 # termination strategy: optimality true finishes when the best possible path is found. Otherwise, the algorithm will finish when the first feasible path is found. default: 1
79+
heuristics: 1 # activates cost to go heuristics. default: 1
80+
cache_cc: 1 # use the collision checking cache. default: 1
81+
extended_fmt: 1 # Activates the extended FMT*: adding new samples if planner does not finish successfully. default: 1
82+
PDSTkConfigDefault:
83+
type: geometric::PDST
84+
STRIDEkConfigDefault:
85+
type: geometric::STRIDE
86+
range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup()
87+
goal_bias: 0.05 # When close to goal select goal, with this probability. default: 0.05
88+
use_projected_distance: 0 # whether nearest neighbors are computed based on distances in a projection of the state rather distances in the state space itself. default: 0
89+
degree: 16 # desired degree of a node in the Geometric Near-neightbor Access Tree (GNAT). default: 16
90+
max_degree: 18 # max degree of a node in the GNAT. default: 12
91+
min_degree: 12 # min degree of a node in the GNAT. default: 12
92+
max_pts_per_leaf: 6 # max points per leaf in the GNAT. default: 6
93+
estimated_dimension: 0.0 # estimated dimension of the free space. default: 0.0
94+
min_valid_path_fraction: 0.2 # Accept partially valid moves above fraction. default: 0.2
95+
BiTRRTkConfigDefault:
96+
type: geometric::BiTRRT
97+
range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup()
98+
temp_change_factor: 0.1 # how much to increase or decrease temp. default: 0.1
99+
init_temperature: 100 # initial temperature. default: 100
100+
frountier_threshold: 0.0 # dist new state to nearest neighbor to disqualify as frontier. default: 0.0 set in setup()
101+
frountier_node_ratio: 0.1 # 1/10, or 1 nonfrontier for every 10 frontier. default: 0.1
102+
cost_threshold: 1e300 # the cost threshold. Any motion cost that is not better will not be expanded. default: inf
103+
LBTRRTkConfigDefault:
104+
type: geometric::LBTRRT
105+
range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup()
106+
goal_bias: 0.05 # When close to goal select goal, with this probability. default: 0.05
107+
epsilon: 0.4 # optimality approximation factor. default: 0.4
108+
BiESTkConfigDefault:
109+
type: geometric::BiEST
110+
range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup()
111+
ProjESTkConfigDefault:
112+
type: geometric::ProjEST
113+
range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup()
114+
goal_bias: 0.05 # When close to goal select goal, with this probability. default: 0.05
115+
LazyPRMkConfigDefault:
116+
type: geometric::LazyPRM
117+
range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup()
118+
LazyPRMstarkConfigDefault:
119+
type: geometric::LazyPRMstar
120+
SPARSkConfigDefault:
121+
type: geometric::SPARS
122+
stretch_factor: 3.0 # roadmap spanner stretch factor. multiplicative upper bound on path quality. It does not make sense to make this parameter more than 3. default: 3.0
123+
sparse_delta_fraction: 0.25 # delta fraction for connection distance. This value represents the visibility range of sparse samples. default: 0.25
124+
dense_delta_fraction: 0.001 # delta fraction for interface detection. default: 0.001
125+
max_failures: 1000 # maximum consecutive failure limit. default: 1000
126+
SPARStwokConfigDefault:
127+
type: geometric::SPARStwo
128+
stretch_factor: 3.0 # roadmap spanner stretch factor. multiplicative upper bound on path quality. It does not make sense to make this parameter more than 3. default: 3.0
129+
sparse_delta_fraction: 0.25 # delta fraction for connection distance. This value represents the visibility range of sparse samples. default: 0.25
130+
dense_delta_fraction: 0.001 # delta fraction for interface detection. default: 0.001
131+
max_failures: 5000 # maximum consecutive failure limit. default: 5000
132+
TrajOptDefault:
133+
type: geometric::TrajOpt
134+
135+
panda_arm:
136+
enforce_constrained_state_space: true
137+
projection_evaluator: joints(panda_joint1,panda_joint2)
138+
planner_configs:
139+
- SBLkConfigDefault
140+
- ESTkConfigDefault
141+
- LBKPIECEkConfigDefault
142+
- BKPIECEkConfigDefault
143+
- KPIECEkConfigDefault
144+
- RRTkConfigDefault
145+
- RRTConnectkConfigDefault
146+
- RRTstarkConfigDefault
147+
- TRRTkConfigDefault
148+
- PRMkConfigDefault
149+
- PRMstarkConfigDefault
150+
- FMTkConfigDefault
151+
- BFMTkConfigDefault
152+
- PDSTkConfigDefault
153+
- STRIDEkConfigDefault
154+
- BiTRRTkConfigDefault
155+
- LBTRRTkConfigDefault
156+
- BiESTkConfigDefault
157+
- ProjESTkConfigDefault
158+
- LazyPRMkConfigDefault
159+
- LazyPRMstarkConfigDefault
160+
- SPARSkConfigDefault
161+
- SPARStwokConfigDefault
162+
- TrajOptDefault
163+
panda_arm_hand:
164+
enforce_constrained_state_space: true
165+
projection_evaluator: joints(panda_joint1,panda_joint2)
166+
planner_configs:
167+
- SBLkConfigDefault
168+
- ESTkConfigDefault
169+
- LBKPIECEkConfigDefault
170+
- BKPIECEkConfigDefault
171+
- KPIECEkConfigDefault
172+
- RRTkConfigDefault
173+
- RRTConnectkConfigDefault
174+
- RRTstarkConfigDefault
175+
- TRRTkConfigDefault
176+
- PRMkConfigDefault
177+
- PRMstarkConfigDefault
178+
- FMTkConfigDefault
179+
- BFMTkConfigDefault
180+
- PDSTkConfigDefault
181+
- STRIDEkConfigDefault
182+
- BiTRRTkConfigDefault
183+
- LBTRRTkConfigDefault
184+
- BiESTkConfigDefault
185+
- ProjESTkConfigDefault
186+
- LazyPRMkConfigDefault
187+
- LazyPRMstarkConfigDefault
188+
- SPARSkConfigDefault
189+
- SPARStwokConfigDefault
190+
- TrajOptDefault
191+
hand:
192+
planner_configs:
193+
- SBLkConfigDefault
194+
- ESTkConfigDefault
195+
- LBKPIECEkConfigDefault
196+
- BKPIECEkConfigDefault
197+
- KPIECEkConfigDefault
198+
- RRTkConfigDefault
199+
- RRTConnectkConfigDefault
200+
- RRTstarkConfigDefault
201+
- TRRTkConfigDefault
202+
- PRMkConfigDefault
203+
- PRMstarkConfigDefault
204+
- FMTkConfigDefault
205+
- BFMTkConfigDefault
206+
- PDSTkConfigDefault
207+
- STRIDEkConfigDefault
208+
- BiTRRTkConfigDefault
209+
- LBTRRTkConfigDefault
210+
- BiESTkConfigDefault
211+
- ProjESTkConfigDefault
212+
- LazyPRMkConfigDefault
213+
- LazyPRMstarkConfigDefault
214+
- SPARSkConfigDefault
215+
- SPARStwokConfigDefault
216+
- TrajOptDefault

0 commit comments

Comments
 (0)