ROS Package Generation Scripts Architecture

This file outlines the structure and purpose of each script used for automating ROS package generation in the workspace.

scripts/
├── create-ros-pkg
├── integration-tests
├── launch_PKG_NAME
├── multiple-robots-moveit
├── multiple-robots-with-controllers-no-moveit
├── helpers/
│   ├── generate_cmakelists.sh
│   ├── generate_controllers.sh
│   ├── generate_demo_launch.sh
│   ├── generate_initial_positions.sh
│   ├── generate_joint_limits.sh
│   ├── generate_kinematics.sh
│   ├── generate_launch_script.sh
│   ├── generate_moveit_controllers.sh
│   ├── generate_package_xml.sh
│   ├── generate_pilz_cartesian_limits.sh
│   ├── generate_pkg_xacro.sh
│   ├── generate_robot_description_template.sh
│   ├── generate_robot_description_wrapper.sh
│   ├── generate_robots_json.sh
│   ├── generate_ros2_control_xacro.sh
│   ├── generate_rviz_config.sh
│   ├── generate_sensors_3d.sh
│   ├── generate_srdf.sh
│   ├── generate_static_robot_description.sh
│   └── robot_description_template.xacro

Script Summaries

create-ros-pkg
Main entrypoint for package generation. Interactively collects robot configuration (number, type, positions, orientations, joint values) and calls helper scripts to generate all necessary files for a new ROS package supporting n robots.

integration-tests
Runs integration tests for the workspace using pytest, sourcing ROS and workspace environments.

launch_PKG_NAME
Builds the workspace and launches the demo for the generated package using ROS 2 launch.

multiple-robots-moveit
Launches a MoveIt-enabled demo for multiple robots, sourcing the workspace and ROS environment.

multiple-robots-with-controllers-no-moveit
Launches a demo for multiple robots with controllers, but without MoveIt, sourcing the workspace and ROS environment.

helpers/

generate_cmakelists.sh
Generates a CMakeLists.txt for the package, including installation rules for launch, config, and urdf folders.

generate_controllers.sh
Creates a controllers.yaml file defining joint trajectory controllers and joint state broadcasters for all robots.

generate_demo_launch.sh
Generates a ROS 2 Python launch file (demo.launch.py) that loads robot configurations and starts required nodes.

generate_initial_positions.sh
Creates initial_positions.yaml, specifying initial joint values for each robot.

generate_joint_limits.sh
Creates joint_limits.yaml, setting velocity and acceleration limits for each robot’s joints.

generate_kinematics.sh
Creates kinematics.yaml, configuring kinematic solvers for each robot.

generate_launch_script.sh
Generates a launch script in the scripts/ folder to build and launch the new package.

generate_moveit_controllers.sh
Creates moveit_controllers.yaml, mapping each robot’s controller to the MoveIt FollowJointTrajectory interface.

generate_package_xml.sh
Generates package.xml, listing dependencies and metadata for the new package.

generate_pilz_cartesian_limits.sh
Creates pilz_cartesian_limits.yaml, setting Cartesian limits for the Pilz planner.

generate_pkg_xacro.sh
Generates the main URDF Xacro file for all robots, including arguments for robot types, positions, and joint values.

generate_robot_description_template.sh
Creates a template Xacro file for robot description, parameterized for n robots.

generate_robot_description_wrapper.sh
Generates a wrapper Xacro file that imports the main URDF and ros2_control macro for flexible instantiation.

generate_robots_json.sh
Creates robots.json, describing all robot arms, their models, positions, and initial joint values.

generate_ros2_control_xacro.sh
Generates a ros2_control Xacro macro for all robots, loading initial positions and specifying hardware plugins.

generate_rviz_config.sh
Creates an RViz configuration file for visualizing all robots in the simulation.

generate_sensors_3d.sh
Creates sensors_3d.yaml, configuring 3D sensors for the simulation.

generate_srdf.sh
Generates a Semantic Robot Description Format (SRDF) file for MoveIt, defining planning groups and collision disables for all robots.

generate_static_robot_description.sh
Renders a static URDF from the generated robot_description_template.xacro using xacro or ROS 2 tools.

robot_description_template.xacro
Template Xacro file used as a base for generating robot URDFs.

ROS Package Generation Scripts Architecture