## 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.