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.