Generated ROS package hierarchy

This file outlines the structure of each of the files generated by the ROS package automation scripts and details what each file is used for.

PKG_NAME/
├── config/
│   ├── controllers.yaml
│   ├── initial_positions.yaml
│   ├── joint_limits.yaml
│   ├── kinematics.yaml
│   ├── moveit_controllers.yaml
│   ├── pilz_cartesian_limits.yaml
│   ├── robots.json
│   ├── sensors_3d.yaml
│   ├── PKG_NAME.rviz
│   └── PKG_NAME.srdf
├── launch/
│   └── demo.launch.py
├── urdf/
│   ├── robot_description_template.xacro
│   ├── PKG_NAME.ros2_control.xacro
│   ├── PKG_NAME.urdf.xacro
│   └── PKG_NAME_wrapper.urdf.xacro
├── package.xml
└── CMakeLists.txt

File Summaries

controllers.yaml: Defines ROS 2 controllers for all robot arms in the simulation, including joint trajectory controllers and joint state broadcasters. Specifies which joints are controlled and the command/state interfaces for each robot.

initial_positions.yaml: Lists the initial joint positions for each robot arm, ensuring all robots start in a known configuration when the simulation launches.

joint_limits.yaml: Overrides or augments joint dynamics properties from the URDF, including velocity and acceleration limits for each joint. Also sets default scaling factors for safe motion planning across all robots.

kinematics.yaml: Configures kinematic solvers for each robot arm, specifying the plugin, search resolution, timeout, and number of attempts for inverse kinematics calculations.

moveit_controllers.yaml: Defines MoveIt controller settings, mapping each robot’s joint trajectory controller to the FollowJointTrajectory action interface for motion planning.

pilz_cartesian_limits.yaml: Sets Cartesian velocity and acceleration limits for the Pilz planner, which is used for safe and constrained Cartesian path planning for all robots.

robots.json: Describes all robot arms in the simulation, including their keys, models, base coordinates, and initial joint positions. Used for dynamic configuration and launch scripts.

sensors_3d.yaml: Configures 3D sensors (e.g., Kinect) for the simulation, including point cloud and depth image topics, update rates, clipping planes, and plugin settings for occupancy mapping.

PKG_NAME.rviz: RViz configuration file that sets up the visualization panels, displays, and options for viewing the simulation and robot states.

PKG_NAME.srdf: Semantic Robot Description Format file for MoveIt, defining planning groups, chains, and disabled collision pairs for all robot arms. Complements the URDF with semantic information.

demo.launch.py: ROS 2 launch file that sets up the simulation environment, loads robot configurations, and starts MoveIt and other required nodes. Reads robot names from robots.json and configures simulation time.

robot_description_template.xacro: Xacro template for generating the robot’s URDF, including arguments for robot types and positions, and importing macros for multi-arm configuration and ros2_control integration.

PKG_NAME.ros2_control.xacro: Xacro macro for defining the ros2_control system for all robot arms, loading initial joint positions from YAML, and specifying hardware plugins for simulation.

PKG_NAME.urdf.xacro: Main URDF Xacro file for the multi-arm robot, declaring arguments, importing macros, and defining the ros2_control system and joint interfaces for all arms.

PKG_NAME_wrapper.urdf.xacro: Wrapper Xacro file that imports the main URDF and ros2_control macro, allowing for flexible instantiation and configuration of the multi-arm robot in simulation.

package.xml: ROS 2 package manifest, listing dependencies, maintainers, and metadata for the PKG_NAME package. Ensures proper integration with ROS build and runtime tools.

CMakeLists.txt: CMake build configuration for the package, specifying installation rules for launch, config, and urdf directories, and enabling ROS 2 package features.