Week 13
in Blog
GSOC Coding Week 13 Progress Report
Week 13: Restructuring Launch Files for Planning Scene Integration
This week’s focus was on enabling the planning scene in the Machine Vision exercise. The original launch setup was not well-suited for planning scene monitoring, so I worked on restructuring the launch files and adapting them to MoveIt2’s recommended configuration workflow.
What I Did This Week
- Identified issues with the current launch format.
- The existing structure was incompatible with MoveIt2’s planning scene requirements.
- Some parameters were hardcoded, and the setup lacked flexibility for testing different planning pipelines.
- Reorganized the launch file structure.
- Adopted the
MoveItConfigsBuilder
approach, which provides a cleaner and modular way to configure robot description, semantics, kinematics, planning pipelines, and sensors. - Added arguments for selecting the ROS2 control hardware type and RViz configuration, improving usability.
- Adopted the
- Implemented the planning scene monitor.
- Enabled publishing of both the robot description and the semantic description.
- Connected the planning scene with MoveIt pipelines (
ompl
,chomp
,pilz
,stomp
). - Integrated 3D sensor configuration for future perception input.
Example Snippet from Updated Launch File
def generate_launch_description():
rviz_config_arg = DeclareLaunchArgument(
"rviz_config",
default_value="moveit.rviz",
description="RViz configuration file",
)
ros2_control_hardware_type = DeclareLaunchArgument(
"ros2_control_hardware_type",
default_value="mock_components",
description="ROS 2 control hardware interface type",
)
moveit_config = (
MoveItConfigsBuilder("moveit_resources_panda")
.robot_description(
file_path="config/panda.urdf.xacro",
mappings={"ros2_control_hardware_type": LaunchConfiguration("ros2_control_hardware_type")}
)
.robot_description_semantic(file_path="config/panda.srdf")
.robot_description_kinematics(file_path="config/kinematics.yaml")
.planning_scene_monitor(
publish_robot_description=True, publish_robot_description_semantic=True
)
.trajectory_execution(file_path="config/gripper_moveit_controllers.yaml")
.planning_pipelines(pipelines=["ompl", "chomp", "pilz_industrial_motion_planner", "stomp"])
.sensors_3d(file_path=os.path.join(
get_package_share_directory("moveit2_tutorials"), "config/sensors_3d.yaml"
))
.to_moveit_configs()
)
Problems I Encountered
- The legacy launch structure was not modular and lacked support for planning scene monitoring.
- Needed to carefully align URDF/Xacro, SRDF, and kinematics configs with the new builder setup.
Solutions Implemented
- Restructured the launch system around MoveItConfigsBuilder, making it modular and aligned with MoveIt2 best practices.
- Ensured that the planning scene monitor is properly connected with motion planning and sensors.
Conclusion
The launch setup is now prepared to support planning scene integration with MoveIt2.
- The new structure is modular, easier to extend, and matches MoveIt’s official tutorial format.
- Planning pipelines and sensors are now fully configurable.
For Week 14, I plan to focus on:
- Testing the planning scene with different pipelines
- Verifying collision awareness and scene updates
- Continuing preparation for integration into the Robotics Academy infrastructure
📍 Posted from Barcelona, Spain
🧠 Project: Migration and Enhancement of Machine Vision Exercise to ROS2 + MoveIt2