Skip to content

Commit e1de840

Browse files
Use moveit_configs_utils to simplify the Quickstart in Rviz tutorial (#366)
1 parent 08ac2e5 commit e1de840

File tree

1 file changed

+17
-98
lines changed

1 file changed

+17
-98
lines changed

doc/tutorials/quickstart_in_rviz/launch/demo.launch.py

Lines changed: 17 additions & 98 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,12 @@
11
import os
2-
import yaml
32
from launch import LaunchDescription
43
from launch.actions import DeclareLaunchArgument
54
from launch.substitutions import LaunchConfiguration
65
from launch.conditions import IfCondition, UnlessCondition
76
from launch_ros.actions import Node
87
from launch.actions import ExecuteProcess
98
from ament_index_python.packages import get_package_share_directory
10-
import xacro
11-
12-
13-
def load_file(package_name, file_path):
14-
package_path = get_package_share_directory(package_name)
15-
absolute_file_path = os.path.join(package_path, file_path)
16-
17-
try:
18-
with open(absolute_file_path, "r") as file:
19-
return file.read()
20-
except EnvironmentError: # parent of IOError, OSError *and* WindowsError where available
21-
return None
22-
23-
24-
def load_yaml(package_name, file_path):
25-
package_path = get_package_share_directory(package_name)
26-
absolute_file_path = os.path.join(package_path, file_path)
27-
28-
try:
29-
with open(absolute_file_path, "r") as file:
30-
return yaml.safe_load(file)
31-
except EnvironmentError: # parent of IOError, OSError *and* WindowsError where available
32-
return None
9+
from moveit_configs_utils import MoveItConfigsBuilder
3310

3411

3512
def generate_launch_description():
@@ -40,77 +17,19 @@ def generate_launch_description():
4017
)
4118

4219
# planning_context
43-
robot_description_config = xacro.process_file(
44-
os.path.join(
45-
get_package_share_directory("moveit_resources_panda_moveit_config"),
46-
"config",
47-
"panda.urdf.xacro",
48-
)
49-
)
50-
robot_description = {"robot_description": robot_description_config.toxml()}
51-
52-
robot_description_semantic_config = load_file(
53-
"moveit_resources_panda_moveit_config", "config/panda.srdf"
54-
)
55-
robot_description_semantic = {
56-
"robot_description_semantic": robot_description_semantic_config
57-
}
58-
59-
kinematics_yaml = load_yaml(
60-
"moveit_resources_panda_moveit_config", "config/kinematics.yaml"
61-
)
62-
robot_description_kinematics = {"robot_description_kinematics": kinematics_yaml}
63-
64-
# Planning Functionality
65-
ompl_planning_pipeline_config = {
66-
"move_group": {
67-
"planning_plugin": "ompl_interface/OMPLPlanner",
68-
"request_adapters": """default_planner_request_adapters/AddTimeOptimalParameterization default_planner_request_adapters/FixWorkspaceBounds default_planner_request_adapters/FixStartStateBounds default_planner_request_adapters/FixStartStateCollision default_planner_request_adapters/FixStartStatePathConstraints""",
69-
"start_state_max_bounds_error": 0.1,
70-
}
71-
}
72-
ompl_planning_yaml = load_yaml(
73-
"moveit_resources_panda_moveit_config", "config/ompl_planning.yaml"
74-
)
75-
ompl_planning_pipeline_config["move_group"].update(ompl_planning_yaml)
76-
77-
# Trajectory Execution Functionality
78-
moveit_simple_controllers_yaml = load_yaml(
79-
"moveit_resources_panda_moveit_config", "config/moveit_controllers.yaml"
20+
moveit_config = (
21+
MoveItConfigsBuilder("moveit_resources_panda")
22+
.robot_description(file_path="config/panda.urdf.xacro")
23+
.trajectory_execution(file_path="config/gripper_moveit_controllers.yaml")
24+
.to_moveit_configs()
8025
)
81-
moveit_controllers = {
82-
"moveit_simple_controller_manager": moveit_simple_controllers_yaml,
83-
"moveit_controller_manager": "moveit_simple_controller_manager/MoveItSimpleControllerManager",
84-
}
85-
86-
trajectory_execution = {
87-
"moveit_manage_controllers": True,
88-
"trajectory_execution.allowed_execution_duration_scaling": 1.2,
89-
"trajectory_execution.allowed_goal_duration_margin": 0.5,
90-
"trajectory_execution.allowed_start_tolerance": 0.01,
91-
}
92-
93-
planning_scene_monitor_parameters = {
94-
"publish_planning_scene": True,
95-
"publish_geometry_updates": True,
96-
"publish_state_updates": True,
97-
"publish_transforms_updates": True,
98-
}
9926

10027
# Start the actual move_group node/action server
10128
run_move_group_node = Node(
10229
package="moveit_ros_move_group",
10330
executable="move_group",
10431
output="screen",
105-
parameters=[
106-
robot_description,
107-
robot_description_semantic,
108-
kinematics_yaml,
109-
ompl_planning_pipeline_config,
110-
trajectory_execution,
111-
moveit_controllers,
112-
planning_scene_monitor_parameters,
113-
],
32+
parameters=[moveit_config.to_dict()],
11433
)
11534

11635
# RViz
@@ -125,10 +44,10 @@ def generate_launch_description():
12544
output="log",
12645
arguments=["-d", rviz_empty_config],
12746
parameters=[
128-
robot_description,
129-
robot_description_semantic,
130-
ompl_planning_pipeline_config,
131-
kinematics_yaml,
47+
moveit_config.robot_description,
48+
moveit_config.robot_description_semantic,
49+
moveit_config.robot_description_kinematics,
50+
moveit_config.planning_pipelines,
13251
],
13352
condition=IfCondition(tutorial_mode),
13453
)
@@ -139,10 +58,10 @@ def generate_launch_description():
13958
output="log",
14059
arguments=["-d", rviz_full_config],
14160
parameters=[
142-
robot_description,
143-
robot_description_semantic,
144-
ompl_planning_pipeline_config,
145-
kinematics_yaml,
61+
moveit_config.robot_description,
62+
moveit_config.robot_description_semantic,
63+
moveit_config.robot_description_kinematics,
64+
moveit_config.planning_pipelines,
14665
],
14766
condition=UnlessCondition(tutorial_mode),
14867
)
@@ -162,7 +81,7 @@ def generate_launch_description():
16281
executable="robot_state_publisher",
16382
name="robot_state_publisher",
16483
output="both",
165-
parameters=[robot_description],
84+
parameters=[moveit_config.robot_description],
16685
)
16786

16887
# ros2_control using FakeSystem as hardware
@@ -174,7 +93,7 @@ def generate_launch_description():
17493
ros2_control_node = Node(
17594
package="controller_manager",
17695
executable="ros2_control_node",
177-
parameters=[robot_description, ros2_controllers_path],
96+
parameters=[moveit_config.robot_description, ros2_controllers_path],
17897
output="both",
17998
)
18099

0 commit comments

Comments
 (0)