ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange |
1 | initial version |
Assuming https://github.com/ros-planning/moveit2_tutorials/issues/528 is opened by OP, resolution there was simply wrong software version https://github.com/ros-planning/moveit2_tutorials/issues/528#issuecomment-1271784463. In OP's case, which uses the specific tutorial, that was probably it.
A bit more broadly, the error Could not find parameter robot_description_semantic and ...
can happen. I'm not knowledgeable enough to sufficiently generalize neither the issue nor the solution, I just ran into the same error message with my custom node that starts move group internally. What solved my case was to pass parameters along with the node's parameters. In .launch.py
_node_motion = Node(
package="foo", executable="node_exec", arguments=[],
name="node_exec_name",
parameters=[
robot_description,
robot_description_semantic,
robot_description_kinematics,
],
)
Then, you may wonder how did I generate those robot_description_*
values? I don't have a textbook answer yet about this...(ROS2's .launch.py is still a labyrinth to me that I haven't mastered yet). Instead, I just link to some existing examples.
Option-a. "Manual" approach where you generate each variable by referring to the corresponding resources: moveit2_tutorials/doc/tutorials/quickstart_in_rviz/launch/demo.launch.py#L105:
(There are more above this line. Omitting as it'd get too long)
:
trajectory_execution = {
"moveit_manage_controllers": True,
"trajectory_execution.allowed_execution_duration_scaling": 1.2,
"trajectory_execution.allowed_goal_duration_margin": 0.5,
"trajectory_execution.allowed_start_tolerance": 0.01,
}
planning_scene_monitor_parameters = {
"publish_planning_scene": True,
"publish_geometry_updates": True,
"publish_state_updates": True,
"publish_transforms_updates": True,
}
# Start the actual move_group node/action server
run_move_group_node = Node(
package="moveit_ros_move_group",
executable="move_group",
output="screen",
parameters=[
robot_description,
robot_description_semantic,
kinematics_yaml,
ompl_planning_pipeline_config,
trajectory_execution,
moveit_controllers,
planning_scene_monitor_parameters,
],
)
Option-b. Automated approach: moveit2_tutorials/doc/examples/move_group_interface/launch/move_group.launch.py uses moveit_configs_utils.MoveItConfigsBuilder
, which seems to nicely take care of generating params (I haven't found its usage doc yet though).
moveit_config = (
MoveItConfigsBuilder("moveit_resources_panda")
.robot_description(file_path="config/panda.urdf.xacro")
.trajectory_execution(file_path="config/gripper_moveit_controllers.yaml")
.planning_scene_monitor(
publish_robot_description=True, publish_robot_description_semantic=True
)
.planning_pipelines(
pipelines=["ompl", "chomp", "pilz_industrial_motion_planner"]
)
.to_moveit_configs()
)
As of now I'm far from being an expert in ros2-moveit2 so please correct if needed.
2 | No.2 Revision |
Assuming https://github.com/ros-planning/moveit2_tutorials/issues/528 is opened by OP, resolution there was simply wrong software version https://github.com/ros-planning/moveit2_tutorials/issues/528#issuecomment-1271784463. In OP's case, which uses the specific tutorial, that was probably it.
A bit more broadly, the error Could not find parameter robot_description_semantic and ...
can happen. I'm not knowledgeable enough to sufficiently generalize neither the issue nor the solution, I just ran into the same error message with my custom node that starts move group internally. What solved my case was to pass parameters along with the node's parameters. In .launch.py
_node_motion = Node(
package="foo", executable="node_exec", arguments=[],
name="node_exec_name",
parameters=[
robot_description,
robot_description_semantic,
robot_description_kinematics,
],
)
Then, you may wonder how did I generate those robot_description_*
values? I don't have a textbook answer yet about this...(ROS2's .launch.py is still a labyrinth to me that I haven't mastered yet). Instead, I just link to some existing examples.
Option-a. "Manual" approach where you generate each variable by referring to the corresponding resources: moveit2_tutorials/doc/tutorials/quickstart_in_rviz/launch/demo.launch.py#L105:
(There are more above this line. Omitting as it'd get too long)
:
trajectory_execution = {
"moveit_manage_controllers": True,
"trajectory_execution.allowed_execution_duration_scaling": 1.2,
"trajectory_execution.allowed_goal_duration_margin": 0.5,
"trajectory_execution.allowed_start_tolerance": 0.01,
}
planning_scene_monitor_parameters = {
"publish_planning_scene": True,
"publish_geometry_updates": True,
"publish_state_updates": True,
"publish_transforms_updates": True,
}
# Start the actual move_group node/action server
run_move_group_node = Node(
package="moveit_ros_move_group",
executable="move_group",
output="screen",
parameters=[
robot_description,
robot_description_semantic,
kinematics_yaml,
ompl_planning_pipeline_config,
trajectory_execution,
moveit_controllers,
planning_scene_monitor_parameters,
],
)
Option-b. Automated approach: moveit2_tutorials/doc/examples/move_group_interface/launch/move_group.launch.py uses moveit_configs_utils.MoveItConfigsBuilder
, which seems to nicely take care of generating params (I haven't found its usage doc yet though).
:
from moveit_configs_utils import MoveItConfigsBuilder
moveit_config = (
MoveItConfigsBuilder("moveit_resources_panda")
.robot_description(file_path="config/panda.urdf.xacro")
.trajectory_execution(file_path="config/gripper_moveit_controllers.yaml")
.planning_scene_monitor(
publish_robot_description=True, publish_robot_description_semantic=True
)
.planning_pipelines(
pipelines=["ompl", "chomp", "pilz_industrial_motion_planner"]
)
.to_moveit_configs()
)
As of now I'm far from being an expert in ros2-moveit2 so please correct if needed.
3 | No.3 Revision |
Assuming https://github.com/ros-planning/moveit2_tutorials/issues/528 is opened by OP, resolution there was simply wrong software version https://github.com/ros-planning/moveit2_tutorials/issues/528#issuecomment-1271784463. In OP's case, which uses the specific tutorial, that was probably it.
A bit more broadly, the error Could not find parameter robot_description_semantic and ...
is not limited to that tutorial and can happen. happen for your own application. I'm not knowledgeable enough to sufficiently generalize neither the issue nor the solution, I just ran into the same error message with my custom node that starts move group internally. What solved my case was to pass parameters along with the node's parameters. In .launch.py
_node_motion = Node(
package="foo", executable="node_exec", arguments=[],
name="node_exec_name",
parameters=[
robot_description,
robot_description_semantic,
robot_description_kinematics,
],
)
Then, you may wonder how did I generate those robot_description_*
values? I don't have a textbook answer yet about this...(ROS2's .launch.py is still a labyrinth to me that I haven't mastered yet). Instead, I just link to some existing examples.
Option-a. "Manual" approach where you generate each variable by referring to the corresponding resources: moveit2_tutorials/doc/tutorials/quickstart_in_rviz/launch/demo.launch.py#L105:
(There are more above this line. Omitting as it'd get too long)
:
trajectory_execution = {
"moveit_manage_controllers": True,
"trajectory_execution.allowed_execution_duration_scaling": 1.2,
"trajectory_execution.allowed_goal_duration_margin": 0.5,
"trajectory_execution.allowed_start_tolerance": 0.01,
}
planning_scene_monitor_parameters = {
"publish_planning_scene": True,
"publish_geometry_updates": True,
"publish_state_updates": True,
"publish_transforms_updates": True,
}
# Start the actual move_group node/action server
run_move_group_node = Node(
package="moveit_ros_move_group",
executable="move_group",
output="screen",
parameters=[
robot_description,
robot_description_semantic,
kinematics_yaml,
ompl_planning_pipeline_config,
trajectory_execution,
moveit_controllers,
planning_scene_monitor_parameters,
],
)
Option-b. Automated approach: moveit2_tutorials/doc/examples/move_group_interface/launch/move_group.launch.py uses moveit_configs_utils.MoveItConfigsBuilder
, which seems to nicely take care of generating params (I haven't found its usage doc yet though).
:
from moveit_configs_utils import MoveItConfigsBuilder
moveit_config = (
MoveItConfigsBuilder("moveit_resources_panda")
.robot_description(file_path="config/panda.urdf.xacro")
.trajectory_execution(file_path="config/gripper_moveit_controllers.yaml")
.planning_scene_monitor(
publish_robot_description=True, publish_robot_description_semantic=True
)
.planning_pipelines(
pipelines=["ompl", "chomp", "pilz_industrial_motion_planner"]
)
.to_moveit_configs()
)
As of now I'm far from being an expert in ros2-moveit2 so please correct if needed.
4 | No.4 Revision |
Assuming https://github.com/ros-planning/moveit2_tutorials/issues/528 is opened by OP, resolution there was simply wrong software version https://github.com/ros-planning/moveit2_tutorials/issues/528#issuecomment-1271784463. In OP's case, which uses the specific tutorial, that was probably it.
A bit more broadly, the error Could not find parameter robot_description_semantic and ...
is not limited to that tutorial and can happen for your own application. I'm not knowledgeable enough to sufficiently generalize neither the issue nor the solution, I just ran into the same error message with my custom node that starts move group internally. What solved my case was to pass parameters along with the node's parameters. In .launch.py
_node_motion = Node(
package="foo", executable="node_exec", arguments=[],
name="node_exec_name",
parameters=[
robot_description,
robot_description_semantic,
robot_description_kinematics,
],
)
Then, you may wonder how did I generate those robot_description_*
values? I don't have a textbook answer yet about this...(ROS2's .launch.py is still a labyrinth to me that I haven't mastered yet). Instead, I just link to some existing examples.
Option-a. "Manual" approach where you generate each variable by referring to the corresponding resources: moveit2_tutorials/doc/tutorials/quickstart_in_rviz/launch/demo.launch.py#L105:
(There are more above this line. Omitting as it'd get too long)
:
trajectory_execution robot_description_config = xacro.process_file(
os.path.join(
get_package_share_directory("moveit_resources_panda_moveit_config"),
"config",
"panda.urdf.xacro",
)
)
robot_description = {"robot_description": robot_description_config.toxml()}
robot_description_semantic_config = load_file(
"moveit_resources_panda_moveit_config", "config/panda.srdf"
)
robot_description_semantic = {
"moveit_manage_controllers": True,
"trajectory_execution.allowed_execution_duration_scaling": 1.2,
"trajectory_execution.allowed_goal_duration_margin": 0.5,
"trajectory_execution.allowed_start_tolerance": 0.01,
"robot_description_semantic": robot_description_semantic_config
}
planning_scene_monitor_parameters = {
"publish_planning_scene": True,
"publish_geometry_updates": True,
"publish_state_updates": True,
"publish_transforms_updates": True,
}
:
# Start the actual move_group node/action server
run_move_group_node = Node(
package="moveit_ros_move_group",
executable="move_group",
output="screen",
parameters=[
robot_description,
robot_description_semantic,
kinematics_yaml,
ompl_planning_pipeline_config,
trajectory_execution,
moveit_controllers,
planning_scene_monitor_parameters,
],
)
Option-b. Automated approach: moveit2_tutorials/doc/examples/move_group_interface/launch/move_group.launch.py uses moveit_configs_utils.MoveItConfigsBuilder
, which seems to nicely take care of generating params (I haven't found its usage doc yet though).
:
from moveit_configs_utils import MoveItConfigsBuilder
moveit_config = (
MoveItConfigsBuilder("moveit_resources_panda")
.robot_description(file_path="config/panda.urdf.xacro")
.trajectory_execution(file_path="config/gripper_moveit_controllers.yaml")
.planning_scene_monitor(
publish_robot_description=True, publish_robot_description_semantic=True
)
.planning_pipelines(
pipelines=["ompl", "chomp", "pilz_industrial_motion_planner"]
)
.to_moveit_configs()
)
As of now I'm far from being an expert in ros2-moveit2 so please correct if needed.
5 | No.5 Revision |
Assuming https://github.com/ros-planning/moveit2_tutorials/issues/528 is opened by OP, resolution there was simply wrong software version https://github.com/ros-planning/moveit2_tutorials/issues/528#issuecomment-1271784463. In OP's case, which uses the specific tutorial, that was probably it.
A bit more broadly, the generic answer:
The error Could not find parameter robot_description_semantic and ...
is not limited to that tutorial and can happen for your own application. I'm (not limited to the referenced tutorial). I keep getting it.
Potential root causes: A MoveGroup node is unable to "get (ROS) parameter" robot_description*
somehow.
Potential solution:
Identify which node the error is happening in. In terminal output you should see the node name along with the error. In the following example, I can see robot-laputa
node:
[robot-laputa-24] [ERROR] [1685818539.857625507] [robot-laputa]: Could not knowledgeable enough to sufficiently generalize neither the issue nor the solution, I just ran into the same find parameter robot_description_semantic and did not receive robot_description_semantic via std_msgs::msg::String subscription within 10.000000 seconds.
[robot-laputa-24] Error: Could not parse the SRDF XML File. Error=XML_ERROR_EMPTY_DOCUMENT ErrorID=15 (0xf) Line number=0
[robot-laputa-24] at line 694 in /tmp/binarydeb/ros-galactic-srdfdom-2.0.3/src/model.cpp
[robot-laputa-24] [ERROR] [1685818539.863908388] [moveit_rdf_loader.rdf_loader]: Unable to parse SRDF
[robot-laputa-24] [FATAL] [1685818539.864152922] [move_group_interface]: Unable to construct robot model. Please make sure all needed information is on the parameter server.
[robot-laputa-24] terminate called after throwing an instance of 'std::runtime_error'
[robot-laputa-24] what(): Unable to construct robot model. Please make sure all needed information is on the parameter server.
Try 'get parameter' by yourself before the error message with my custom node that starts move group internally. What solved occurs, if you could, to see what parameters are set or not. In my case was to pass parameters along when this error is happening, ros2 param get
tends to fail with the node's parameters. In another errors though.
Fix where params set e.g. .launch.py
if any. You may have something like the following.: _node_motion = Node(
package="foo", executable="node_exec", arguments=[],
name="node_exec_name",
parameters=[
robot_description,
robot_description_semantic,
robot_description_kinematics,
],
)
)
Make sure the specific parameter that is causing an error is generated as expected. Also make sure parameter names are correct (one of my error modes was I was passing a wrong key name, e.g. In the following, key "robot_desc" is not what Moveit is looking for, but this as a ROS parameter is totally valid so setting it doesn't cause any error. Moveit returns the error because there's simply no parameter with a key "robot_description")..
robot_description = {"robot_desc": robot_description_config.toxml()}
Then, you may wonder Btw for how did I those parameters are generated, as a ROS2 learner I've been seeing 2 ways to generate those these params in robot_description_*
values? I don't have a textbook answer yet about this...(ROS2's .launch.py is still a labyrinth to me that .launch.py
. I'm listing them up here since I haven't mastered yet). Instead, I just link to some existing examples.seen anywhere where these are summarized.
Option-a. "Manual" approach where you generate each variable by referring to the corresponding resources: moveit2_tutorials/doc/tutorials/quickstart_in_rviz/launch/demo.launch.py#L105:
:
robot_description_config = xacro.process_file(
os.path.join(
get_package_share_directory("moveit_resources_panda_moveit_config"),
"config",
"panda.urdf.xacro",
)
)
robot_description = {"robot_description": robot_description_config.toxml()}
robot_description_semantic_config = load_file(
"moveit_resources_panda_moveit_config", "config/panda.srdf"
)
robot_description_semantic = {
"robot_description_semantic": robot_description_semantic_config
}
:
# Start the actual move_group node/action server
run_move_group_node = Node(
package="moveit_ros_move_group",
executable="move_group",
output="screen",
parameters=[
robot_description,
robot_description_semantic,
kinematics_yaml,
ompl_planning_pipeline_config,
trajectory_execution,
moveit_controllers,
planning_scene_monitor_parameters,
],
)
Option-b. Automated approach: moveit2_tutorials/doc/examples/move_group_interface/launch/move_group.launch.py uses moveit_configs_utils.MoveItConfigsBuilder
, which seems to nicely take care of generating params (I haven't found its usage doc yet though).
:
from moveit_configs_utils import MoveItConfigsBuilder
moveit_config = (
MoveItConfigsBuilder("moveit_resources_panda")
.robot_description(file_path="config/panda.urdf.xacro")
.trajectory_execution(file_path="config/gripper_moveit_controllers.yaml")
.planning_scene_monitor(
publish_robot_description=True, publish_robot_description_semantic=True
)
.planning_pipelines(
pipelines=["ompl", "chomp", "pilz_industrial_motion_planner"]
)
.to_moveit_configs()
)
As of now I'm far from being an expert in ros2-moveit2 so please correct if needed.
6 | No.6 Revision |
Assuming https://github.com/ros-planning/moveit2_tutorials/issues/528 is opened by OP, resolution there was simply wrong software version https://github.com/ros-planning/moveit2_tutorials/issues/528#issuecomment-1271784463. In OP's case, which uses the specific tutorial, that was probably it.
A bit more generic answer:
The error Could not find parameter robot_description_semantic and ...
can happen (not limited to the referenced tutorial). I keep getting it.
Potential root causes: A MoveGroup node is unable to "get (ROS) parameter" robot_description*
somehow.
Potential solution:
Step-1.
Identify which node the error is happening in. In terminal output you should see the node name along with the error. In the following example, I can seerobot-laputa
node: Eg.
[robot-laputa-24] [ERROR] [1685818539.857625507] [robot-laputa]: Could not find parameter robot_description_semantic and did not receive robot_description_semantic via std_msgs::msg::String subscription within 10.000000 seconds.
[robot-laputa-24] Error: Could not parse the SRDF XML File. Error=XML_ERROR_EMPTY_DOCUMENT ErrorID=15 (0xf) Line number=0
[robot-laputa-24] at line 694 in /tmp/binarydeb/ros-galactic-srdfdom-2.0.3/src/model.cpp
[robot-laputa-24] [ERROR] [1685818539.863908388] [moveit_rdf_loader.rdf_loader]: Unable to parse SRDF
[robot-laputa-24] [FATAL] [1685818539.864152922] [move_group_interface]: Unable to construct robot model. Please make sure all needed information is on the parameter server.
[robot-laputa-24] terminate called after throwing an instance of 'std::runtime_error'
[robot-laputa-24] what(): Unable to construct robot model. Please make sure all needed information is on the parameter server. server.
Step-2. Try 'get parameter' by yourself before the error occurs, if you could, to see what parameters are set or not. In my case when this error is happening, ros2 param get
tends to fail with another errors though.
though.
Step-3. Fix where params set e.g. .launch.py
if any. You may have something like the following.:
E.g.
_node_motion = Node(
package="foo", executable="node_exec", arguments=[],
name="node_exec_name",
parameters=[
robot_description,
robot_description_semantic,
robot_description_kinematics,
],
)
Make sure the specific parameter that is causing an error is generated as expected. Also make sure parameter names are correct (one of my error modes was I was passing a wrong key name, e.g. In the following, key "robot_desc" is not what Moveit is looking for, but this as a ROS parameter is totally valid so setting it doesn't cause any error. Moveit returns the error because there's simply no parameter with a key "robot_description")..
robot_description = {"robot_desc": robot_description_config.toxml()}
Btw for how those parameters are generated, as a ROS2 learner I've been seeing 2 ways to generate these params in .launch.py
. I'm listing them up here since I haven't seen anywhere where these are summarized.
Option-a. "Manual" approach where you generate each variable by referring to the corresponding resources: moveit2_tutorials/doc/tutorials/quickstart_in_rviz/launch/demo.launch.py#L105:
:
robot_description_config = xacro.process_file(
os.path.join(
get_package_share_directory("moveit_resources_panda_moveit_config"),
"config",
"panda.urdf.xacro",
)
)
robot_description = {"robot_description": robot_description_config.toxml()}
robot_description_semantic_config = load_file(
"moveit_resources_panda_moveit_config", "config/panda.srdf"
)
robot_description_semantic = {
"robot_description_semantic": robot_description_semantic_config
}
:
# Start the actual move_group node/action server
run_move_group_node = Node(
package="moveit_ros_move_group",
executable="move_group",
output="screen",
parameters=[
robot_description,
robot_description_semantic,
kinematics_yaml,
ompl_planning_pipeline_config,
trajectory_execution,
moveit_controllers,
planning_scene_monitor_parameters,
],
)
Option-b. Automated approach: moveit2_tutorials/doc/examples/move_group_interface/launch/move_group.launch.py uses moveit_configs_utils.MoveItConfigsBuilder
, which seems to nicely take care of generating params (I haven't found its usage doc yet though).
:
from moveit_configs_utils import MoveItConfigsBuilder
moveit_config = (
MoveItConfigsBuilder("moveit_resources_panda")
.robot_description(file_path="config/panda.urdf.xacro")
.trajectory_execution(file_path="config/gripper_moveit_controllers.yaml")
.planning_scene_monitor(
publish_robot_description=True, publish_robot_description_semantic=True
)
.planning_pipelines(
pipelines=["ompl", "chomp", "pilz_industrial_motion_planner"]
)
.to_moveit_configs()
)
As of now I'm far from being an expert in ros2-moveit2 so please correct if needed.
7 | No.7 Revision |
Assuming https://github.com/ros-planning/moveit2_tutorials/issues/528 is opened by OP, resolution there was simply wrong software version https://github.com/ros-planning/moveit2_tutorials/issues/528#issuecomment-1271784463. In OP's case, which uses the specific tutorial, that was probably it.
A bit more generic answer:
The error Could not find parameter robot_description_semantic and ...
can happen (not limited to the referenced tutorial). I keep getting it.
Potential root causes: A MoveGroup node is unable to "get (ROS) parameter" robot_description*
somehow.
Potential solution:
Step-1. Recommended steps to narrow down a root cause and solve:
Step-1. Identify which node the error is happening in. In terminal output you should see the node name along with the error. In the following example, I can see robot-laputa
node:
Eg.
[robot-laputa-24] [ERROR] [1685818539.857625507] [robot-laputa]: Could not find parameter robot_description_semantic and did not receive robot_description_semantic via std_msgs::msg::String subscription within 10.000000 seconds.
[robot-laputa-24] Error: Could not parse the SRDF XML File. Error=XML_ERROR_EMPTY_DOCUMENT ErrorID=15 (0xf) Line number=0
[robot-laputa-24] at line 694 in /tmp/binarydeb/ros-galactic-srdfdom-2.0.3/src/model.cpp
[robot-laputa-24] [ERROR] [1685818539.863908388] [moveit_rdf_loader.rdf_loader]: Unable to parse SRDF
[robot-laputa-24] [FATAL] [1685818539.864152922] [move_group_interface]: Unable to construct robot model. Please make sure all needed information is on the parameter server.
[robot-laputa-24] terminate called after throwing an instance of 'std::runtime_error'
[robot-laputa-24] what(): Unable to construct robot model. Please make sure all needed information is on the parameter server.
Step-2. Step-2. Try 'get parameter' by yourself before the error occurs, if you could, to see what parameters are set or not. In my case when this error is happening, ros2 param get
tends to fail with another errors though.
Step-3. though.
Step-3. Fix where params set e.g. .launch.py
if any. You may have something like the following.:
E.g.
_node_motion = Node(
package="foo", executable="node_exec", arguments=[],
name="node_exec_name",
parameters=[
robot_description,
robot_description_semantic,
robot_description_kinematics,
],
)
Make sure the specific parameter that is causing an error is generated as expected. Also make sure parameter names are correct (one of my error modes was I was passing a wrong key name, e.g. In the following, key "robot_desc" is not what Moveit is looking for, but this as a ROS parameter is totally valid so setting it doesn't cause any error. Moveit returns the error because there's simply no parameter with a key "robot_description")..
robot_description = {"robot_desc": robot_description_config.toxml()}
Btw for how those parameters are generated, as a ROS2 learner I've been seeing 2 ways to generate these params in .launch.py
. I'm listing them up here since I haven't seen anywhere where these are summarized.
Option-a. "Manual" approach where you generate each variable by referring to the corresponding resources: moveit2_tutorials/doc/tutorials/quickstart_in_rviz/launch/demo.launch.py#L105:
:
robot_description_config = xacro.process_file(
os.path.join(
get_package_share_directory("moveit_resources_panda_moveit_config"),
"config",
"panda.urdf.xacro",
)
)
robot_description = {"robot_description": robot_description_config.toxml()}
robot_description_semantic_config = load_file(
"moveit_resources_panda_moveit_config", "config/panda.srdf"
)
robot_description_semantic = {
"robot_description_semantic": robot_description_semantic_config
}
:
# Start the actual move_group node/action server
run_move_group_node = Node(
package="moveit_ros_move_group",
executable="move_group",
output="screen",
parameters=[
robot_description,
robot_description_semantic,
kinematics_yaml,
ompl_planning_pipeline_config,
trajectory_execution,
moveit_controllers,
planning_scene_monitor_parameters,
],
)
Option-b. Automated approach: moveit2_tutorials/doc/examples/move_group_interface/launch/move_group.launch.py uses moveit_configs_utils.MoveItConfigsBuilder
, which seems to nicely take care of generating params (I haven't found its usage doc yet though).
:
from moveit_configs_utils import MoveItConfigsBuilder
moveit_config = (
MoveItConfigsBuilder("moveit_resources_panda")
.robot_description(file_path="config/panda.urdf.xacro")
.trajectory_execution(file_path="config/gripper_moveit_controllers.yaml")
.planning_scene_monitor(
publish_robot_description=True, publish_robot_description_semantic=True
)
.planning_pipelines(
pipelines=["ompl", "chomp", "pilz_industrial_motion_planner"]
)
.to_moveit_configs()
)
As of now I'm far from being an expert in ros2-moveit2 so please correct if needed.