# wannabe-codingmaster/ur_robotiq_ros2_gazebo_simulation architecture

> Architecture diagram of the GitHub repository wannabe-codingmaster/ur_robotiq_ros2_gazebo_simulation, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/wannabe-codingmaster/ur_robotiq_ros2_gazebo_simulation
- Repository: https://github.com/wannabe-codingmaster/ur_robotiq_ros2_gazebo_simulation

## Overview

This ROS 2 project launches a Gazebo Classic simulation of a Universal Robots arm with a Robotiq 2F-85 gripper. The main workflow is to expand the combined Xacro description, start Gazebo and ROS control, spawn the robot, then inspect or command it. The tree documents model variants, meshes, controller configuration, and separate description/view launches. The combined Xacro and controller internals were not sampled, so their detailed wiring is not expanded here.

Main entry points: [`ur_gripper_gazebo/launch/gazebo.launch.py`](https://github.com/wannabe-codingmaster/ur_robotiq_ros2_gazebo_simulation/blob/main/ur_gripper_gazebo/launch/gazebo.launch.py) (Simulation entry), [`ur_gripper_gazebo/urdf/ur_gripper.xacro`](https://github.com/wannabe-codingmaster/ur_robotiq_ros2_gazebo_simulation/blob/main/ur_gripper_gazebo/urdf/ur_gripper.xacro) (Arm and gripper), [`ur_description/urdf/ur.urdf.xacro`](https://github.com/wannabe-codingmaster/ur_robotiq_ros2_gazebo_simulation/blob/main/ur_description/urdf/ur.urdf.xacro) (UR model), [`robotiq_description/urdf/robotiq_2f_85_gripper.urdf.xacro`](https://github.com/wannabe-codingmaster/ur_robotiq_ros2_gazebo_simulation/blob/main/robotiq_description/urdf/robotiq_2f_85_gripper.urdf.xacro) (2F-85 model)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_model["Robot descriptions"]
  node_combined_model["Arm and gripper<br/>[ur_gripper.xacro]"]
  node_ur_model["UR model<br/>[ur.urdf.xacro]"]
  node_ur_variants["UR variants"]
  node_gripper_model["2F-85 model"]
  node_robot_meshes["Robot meshes"]
  node_gripper_meshes["Gripper meshes"]
end

subgraph group_launch["Simulation launch"]
  node_launch_entry["Simulation entry<br/>[gazebo.launch.py]"]
  node_spawn["Entity spawner<br/>[gazebo.launch.py]"]
end

subgraph group_control["Control configuration"]
  node_controllers_config["Simulation controllers<br/>[controllers.yaml]"]
  node_controller_manager["Controller manager"]
  node_joint_state["Joint-state broadcaster<br/>[controllers.yaml]"]
  node_trajectory_controller["Trajectory controller<br/>[controllers.yaml]"]
end

subgraph group_view["Visualization"]
  node_robot_state["Robot state publisher<br/>[gazebo.launch.py]"]
  node_rviz["RViz view<br/>[gazebo.launch.py]"]
  node_model_view_launch["Model view launch<br/>[rviz.launch.py]"]
  node_ur_view_launch["UR view launch<br/>[view_ur.launch.py]"]
  node_gripper_view_launch["Gripper view launch"]
end

node_operator(("ROS user"))
node_gazebo["Gazebo Classic"]
node_trajectory_ui["Trajectory UI"]

node_operator -->|"launches"| node_launch_entry
node_launch_entry -->|"expands Xacro"| node_combined_model
node_combined_model -->|"includes model"| node_ur_model
node_combined_model -->|"includes model"| node_gripper_model
node_ur_model -->|"uses parameters"| node_ur_variants
node_ur_model -->|"references meshes"| node_robot_meshes
node_gripper_model -->|"references meshes"| node_gripper_meshes
node_launch_entry -->|"loads config"| node_controllers_config
node_launch_entry -->|"starts"| node_gazebo
node_launch_entry -->|"starts"| node_spawn
node_spawn -->|"spawns entity"| node_gazebo
node_spawn -->|"reads description"| node_robot_state
node_launch_entry -->|"starts control"| node_controller_manager
node_controllers_config -->|"configures"| node_controller_manager
node_controller_manager -->|"spawns"| node_joint_state
node_controller_manager -->|"spawns"| node_trajectory_controller
node_launch_entry -->|"starts"| node_robot_state
node_launch_entry -->|"starts optionally"| node_rviz
node_operator -.->|"commands with"| node_trajectory_ui
node_trajectory_ui -.->|"sends commands"| node_trajectory_controller
node_operator -->|"launches"| node_model_view_launch
node_operator -->|"launches"| node_ur_view_launch
node_operator -->|"launches"| node_gripper_view_launch

click node_launch_entry "https://github.com/wannabe-codingmaster/ur_robotiq_ros2_gazebo_simulation/blob/main/ur_gripper_gazebo/launch/gazebo.launch.py"
click node_combined_model "https://github.com/wannabe-codingmaster/ur_robotiq_ros2_gazebo_simulation/blob/main/ur_gripper_gazebo/urdf/ur_gripper.xacro"
click node_ur_model "https://github.com/wannabe-codingmaster/ur_robotiq_ros2_gazebo_simulation/blob/main/ur_description/urdf/ur.urdf.xacro"
click node_ur_variants "https://github.com/wannabe-codingmaster/ur_robotiq_ros2_gazebo_simulation/tree/main/ur_description/config"
click node_gripper_model "https://github.com/wannabe-codingmaster/ur_robotiq_ros2_gazebo_simulation/blob/main/robotiq_description/urdf/robotiq_2f_85_gripper.urdf.xacro"
click node_robot_meshes "https://github.com/wannabe-codingmaster/ur_robotiq_ros2_gazebo_simulation/tree/main/ur_description/meshes"
click node_gripper_meshes "https://github.com/wannabe-codingmaster/ur_robotiq_ros2_gazebo_simulation/tree/main/robotiq_description/meshes"
click node_controllers_config "https://github.com/wannabe-codingmaster/ur_robotiq_ros2_gazebo_simulation/blob/main/ur_gripper_gazebo/config/controllers.yaml"
click node_spawn "https://github.com/wannabe-codingmaster/ur_robotiq_ros2_gazebo_simulation/blob/main/ur_gripper_gazebo/launch/gazebo.launch.py"
click node_joint_state "https://github.com/wannabe-codingmaster/ur_robotiq_ros2_gazebo_simulation/blob/main/ur_gripper_gazebo/config/controllers.yaml"
click node_trajectory_controller "https://github.com/wannabe-codingmaster/ur_robotiq_ros2_gazebo_simulation/blob/main/ur_gripper_gazebo/config/controllers.yaml"
click node_robot_state "https://github.com/wannabe-codingmaster/ur_robotiq_ros2_gazebo_simulation/blob/main/ur_gripper_gazebo/launch/gazebo.launch.py"
click node_rviz "https://github.com/wannabe-codingmaster/ur_robotiq_ros2_gazebo_simulation/blob/main/ur_gripper_gazebo/launch/gazebo.launch.py"
click node_model_view_launch "https://github.com/wannabe-codingmaster/ur_robotiq_ros2_gazebo_simulation/blob/main/ur_gripper_gazebo/launch/rviz.launch.py"
click node_ur_view_launch "https://github.com/wannabe-codingmaster/ur_robotiq_ros2_gazebo_simulation/blob/main/ur_description/launch/view_ur.launch.py"
click node_gripper_view_launch "https://github.com/wannabe-codingmaster/ur_robotiq_ros2_gazebo_simulation/blob/main/robotiq_description/launch/view_gripper.launch.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_combined_model,node_ur_model,node_ur_variants,node_gripper_model,node_robot_meshes,node_gripper_meshes,node_operator,node_trajectory_ui toneBlue
class node_launch_entry,node_spawn toneAmber
class node_controllers_config,node_controller_manager,node_joint_state,node_trajectory_controller toneMint
class node_robot_state,node_rviz,node_model_view_launch,node_ur_view_launch,node_gripper_view_launch toneRose
class node_gazebo toneIndigo
```

## Components

### Robot descriptions

- [Arm and gripper](https://github.com/wannabe-codingmaster/ur_robotiq_ros2_gazebo_simulation/blob/main/ur_gripper_gazebo/urdf/ur_gripper.xacro): `ur_gripper_gazebo/urdf/ur_gripper.xacro`
- [UR model](https://github.com/wannabe-codingmaster/ur_robotiq_ros2_gazebo_simulation/blob/main/ur_description/urdf/ur.urdf.xacro): `ur_description/urdf/ur.urdf.xacro`
- [UR variants](https://github.com/wannabe-codingmaster/ur_robotiq_ros2_gazebo_simulation/tree/main/ur_description/config): `ur_description/config`
- [2F-85 model](https://github.com/wannabe-codingmaster/ur_robotiq_ros2_gazebo_simulation/blob/main/robotiq_description/urdf/robotiq_2f_85_gripper.urdf.xacro): `robotiq_description/urdf/robotiq_2f_85_gripper.urdf.xacro`
- [Robot meshes](https://github.com/wannabe-codingmaster/ur_robotiq_ros2_gazebo_simulation/tree/main/ur_description/meshes): `ur_description/meshes`
- [Gripper meshes](https://github.com/wannabe-codingmaster/ur_robotiq_ros2_gazebo_simulation/tree/main/robotiq_description/meshes): `robotiq_description/meshes`

### Simulation launch

- [Simulation entry](https://github.com/wannabe-codingmaster/ur_robotiq_ros2_gazebo_simulation/blob/main/ur_gripper_gazebo/launch/gazebo.launch.py): `ur_gripper_gazebo/launch/gazebo.launch.py`
- [Entity spawner](https://github.com/wannabe-codingmaster/ur_robotiq_ros2_gazebo_simulation/blob/main/ur_gripper_gazebo/launch/gazebo.launch.py): `ur_gripper_gazebo/launch/gazebo.launch.py`

### Control configuration

- [Simulation controllers](https://github.com/wannabe-codingmaster/ur_robotiq_ros2_gazebo_simulation/blob/main/ur_gripper_gazebo/config/controllers.yaml): `ur_gripper_gazebo/config/controllers.yaml`
- **Controller manager**
- [Joint-state broadcaster](https://github.com/wannabe-codingmaster/ur_robotiq_ros2_gazebo_simulation/blob/main/ur_gripper_gazebo/config/controllers.yaml): `ur_gripper_gazebo/config/controllers.yaml`
- [Trajectory controller](https://github.com/wannabe-codingmaster/ur_robotiq_ros2_gazebo_simulation/blob/main/ur_gripper_gazebo/config/controllers.yaml): `ur_gripper_gazebo/config/controllers.yaml`

### Visualization

- [Robot state publisher](https://github.com/wannabe-codingmaster/ur_robotiq_ros2_gazebo_simulation/blob/main/ur_gripper_gazebo/launch/gazebo.launch.py): `ur_gripper_gazebo/launch/gazebo.launch.py`
- [RViz view](https://github.com/wannabe-codingmaster/ur_robotiq_ros2_gazebo_simulation/blob/main/ur_gripper_gazebo/launch/gazebo.launch.py): `ur_gripper_gazebo/launch/gazebo.launch.py`
- [Model view launch](https://github.com/wannabe-codingmaster/ur_robotiq_ros2_gazebo_simulation/blob/main/ur_gripper_gazebo/launch/rviz.launch.py): `ur_gripper_gazebo/launch/rviz.launch.py`
- [UR view launch](https://github.com/wannabe-codingmaster/ur_robotiq_ros2_gazebo_simulation/blob/main/ur_description/launch/view_ur.launch.py): `ur_description/launch/view_ur.launch.py`
- [Gripper view launch](https://github.com/wannabe-codingmaster/ur_robotiq_ros2_gazebo_simulation/blob/main/robotiq_description/launch/view_gripper.launch.py): `robotiq_description/launch/view_gripper.launch.py`

### Other components

- **ROS user**
- **Gazebo Classic**
- **Trajectory UI**

## Connections

- ROS user → Simulation entry: launches
- Simulation entry → Arm and gripper: expands Xacro
- Arm and gripper → UR model: includes model
- Arm and gripper → 2F-85 model: includes model
- UR model → UR variants: uses parameters
- UR model → Robot meshes: references meshes
- 2F-85 model → Gripper meshes: references meshes
- Simulation entry → Simulation controllers: loads config
- Simulation entry → Gazebo Classic: starts
- Simulation entry → Entity spawner: starts
- Entity spawner → Gazebo Classic: spawns entity
- Entity spawner → Robot state publisher: reads description
- Simulation entry → Controller manager: starts control
- Simulation controllers → Controller manager: configures
- Controller manager → Joint-state broadcaster: spawns
- Controller manager → Trajectory controller: spawns
- Simulation entry → Robot state publisher: starts
- Simulation entry → RViz view: starts optionally
- ROS user → Trajectory UI: commands with
- Trajectory UI → Trajectory controller: sends commands
- ROS user → Model view launch: launches
- ROS user → UR view launch: launches
- ROS user → Gripper view launch: launches
