Week 13

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

  1. 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.
  2. 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.
  3. 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