# allprogramming/ros2_xarm_1s_demos architecture

> Architecture diagram of the GitHub repository allprogramming/ros2_xarm_1s_demos, 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/allprogramming/ros2_xarm_1s_demos
- Repository: https://github.com/allprogramming/ros2_xarm_1s_demos

## Overview

This repository is a ROS 2 demonstration stack for a Hiwonder xArm 1S paired with a SparkFun VL53L5CX depth sensor. The main robot workflow is to launch the configured MoveIt planning stack, dispatch joint-position control through ros2_control, and communicate with the arm over serial. Robot-description and controller configuration support that runtime; Arduino firmware represents the sensor side. The README describes future point-cloud aggregation and object interaction as planned, not implemented. The Arduino source and most configuration contents were not sampled, so sensor data flow and detailed MoveIt wiring are not asserted.

Main entry points: [`ros2_ws/src/ros2_control_xarm_1s/bringup/launch/xarm_1s.launch.py`](https://github.com/allprogramming/ros2_xarm_1s_demos/blob/main/ros2_ws/src/ros2_control_xarm_1s/bringup/launch/xarm_1s.launch.py) (Hardware Bringup), [`ros2_ws/src/xarm_1s_moveit_config/launch/demo.launch.py`](https://github.com/allprogramming/ros2_xarm_1s_demos/blob/main/ros2_ws/src/xarm_1s_moveit_config/launch/demo.launch.py) (MoveIt Launch), [`ros2_ws/src/xarm_1s_moveit_config/launch/move_group.launch.py`](https://github.com/allprogramming/ros2_xarm_1s_demos/blob/main/ros2_ws/src/xarm_1s_moveit_config/launch/move_group.launch.py) (Move Group), [`ros2_ws/src/ros2_control_xarm_1s/src/xarm_1s.cpp`](https://github.com/allprogramming/ros2_xarm_1s_demos/blob/main/ros2_ws/src/ros2_control_xarm_1s/src/xarm_1s.cpp) (Serial Link)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_planning["Motion Planning"]
  node_moveit_launch["MoveIt Launch<br/>[demo.launch.py]"]
  node_move_group["Move Group"]
  node_moveit_config["Planning Config"]
  node_moveit_controllers["MoveIt Controllers"]
end

subgraph group_robot["Robot Model"]
  node_robot_description["Robot Description<br/>[xarm_1s.urdf.xacro]"]
  node_view_launch["Model Viewer Launch"]
end

subgraph group_control["Robot Control"]
  node_control_launch["Hardware Bringup<br/>[xarm_1s.launch.py]"]
  node_controller_config["Controller Config"]
  node_controller_manager["Controller Manager<br/>[xarm_1s.launch.py]"]
  node_hardware_plugin["xArm Hardware<br/>[xarm_1s.cpp]"]
  node_serial["Serial Link<br/>[xarm_1s.cpp]"]
end

subgraph group_sensing["Depth Sensing"]
  node_sensor_firmware["Sensor Firmware"]
  node_depth_sensor{{"VL53L5CX"}}
end

node_operator(("Operator"))
node_arm{{"xArm 1S"}}

node_operator -->|"starts"| node_moveit_launch
node_moveit_launch -->|"launches"| node_move_group
node_move_group -->|"loads settings"| node_moveit_config
node_move_group -->|"loads mapping"| node_moveit_controllers
node_moveit_launch -->|"configures model"| node_robot_description
node_view_launch -->|"loads model"| node_robot_description
node_control_launch -->|"loads model"| node_robot_description
node_control_launch -->|"starts"| node_controller_manager
node_control_launch -->|"loads settings"| node_controller_config
node_controller_manager -->|"loads plugin"| node_hardware_plugin
node_hardware_plugin -->|"reads and writes"| node_serial
node_serial -->|"serial commands"| node_arm
node_arm -->|"servo positions"| node_serial
node_sensor_firmware -.->|"reads depth"| node_depth_sensor

click node_moveit_launch "https://github.com/allprogramming/ros2_xarm_1s_demos/blob/main/ros2_ws/src/xarm_1s_moveit_config/launch/demo.launch.py"
click node_move_group "https://github.com/allprogramming/ros2_xarm_1s_demos/blob/main/ros2_ws/src/xarm_1s_moveit_config/launch/move_group.launch.py"
click node_moveit_config "https://github.com/allprogramming/ros2_xarm_1s_demos/tree/main/ros2_ws/src/xarm_1s_moveit_config/config"
click node_moveit_controllers "https://github.com/allprogramming/ros2_xarm_1s_demos/blob/main/ros2_ws/src/xarm_1s_moveit_config/config/moveit_controllers.yaml"
click node_robot_description "https://github.com/allprogramming/ros2_xarm_1s_demos/blob/main/ros2_ws/src/xarm_1s_description/urdf/xarm_1s.urdf.xacro"
click node_view_launch "https://github.com/allprogramming/ros2_xarm_1s_demos/blob/main/ros2_ws/src/xarm_1s_description/launch/view_robot.launch.py"
click node_control_launch "https://github.com/allprogramming/ros2_xarm_1s_demos/blob/main/ros2_ws/src/ros2_control_xarm_1s/bringup/launch/xarm_1s.launch.py"
click node_controller_config "https://github.com/allprogramming/ros2_xarm_1s_demos/blob/main/ros2_ws/src/ros2_control_xarm_1s/bringup/config/xarm_1s_controllers.yaml"
click node_controller_manager "https://github.com/allprogramming/ros2_xarm_1s_demos/blob/main/ros2_ws/src/ros2_control_xarm_1s/bringup/launch/xarm_1s.launch.py"
click node_hardware_plugin "https://github.com/allprogramming/ros2_xarm_1s_demos/blob/main/ros2_ws/src/ros2_control_xarm_1s/src/xarm_1s.cpp"
click node_serial "https://github.com/allprogramming/ros2_xarm_1s_demos/blob/main/ros2_ws/src/ros2_control_xarm_1s/src/xarm_1s.cpp"
click node_sensor_firmware "https://github.com/allprogramming/ros2_xarm_1s_demos/blob/main/Arduino/micro_ros_arduino_sparkfun_VL53L5CX/micro_ros_arduino_sparkfun_VL53L5CX.ino"

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_moveit_launch,node_move_group,node_moveit_config,node_moveit_controllers toneBlue
class node_robot_description,node_view_launch toneAmber
class node_control_launch,node_controller_config,node_controller_manager,node_hardware_plugin,node_serial toneMint
class node_sensor_firmware,node_depth_sensor toneRose
class node_operator,node_arm toneIndigo
```

## Components

### Motion Planning

- [MoveIt Launch](https://github.com/allprogramming/ros2_xarm_1s_demos/blob/main/ros2_ws/src/xarm_1s_moveit_config/launch/demo.launch.py): `ros2_ws/src/xarm_1s_moveit_config/launch/demo.launch.py`
- [Move Group](https://github.com/allprogramming/ros2_xarm_1s_demos/blob/main/ros2_ws/src/xarm_1s_moveit_config/launch/move_group.launch.py): `ros2_ws/src/xarm_1s_moveit_config/launch/move_group.launch.py`
- [Planning Config](https://github.com/allprogramming/ros2_xarm_1s_demos/tree/main/ros2_ws/src/xarm_1s_moveit_config/config): `ros2_ws/src/xarm_1s_moveit_config/config`
- [MoveIt Controllers](https://github.com/allprogramming/ros2_xarm_1s_demos/blob/main/ros2_ws/src/xarm_1s_moveit_config/config/moveit_controllers.yaml): `ros2_ws/src/xarm_1s_moveit_config/config/moveit_controllers.yaml`

### Robot Model

- [Robot Description](https://github.com/allprogramming/ros2_xarm_1s_demos/blob/main/ros2_ws/src/xarm_1s_description/urdf/xarm_1s.urdf.xacro): `ros2_ws/src/xarm_1s_description/urdf/xarm_1s.urdf.xacro`
- [Model Viewer Launch](https://github.com/allprogramming/ros2_xarm_1s_demos/blob/main/ros2_ws/src/xarm_1s_description/launch/view_robot.launch.py): `ros2_ws/src/xarm_1s_description/launch/view_robot.launch.py`

### Robot Control

- [Hardware Bringup](https://github.com/allprogramming/ros2_xarm_1s_demos/blob/main/ros2_ws/src/ros2_control_xarm_1s/bringup/launch/xarm_1s.launch.py): `ros2_ws/src/ros2_control_xarm_1s/bringup/launch/xarm_1s.launch.py`
- [Controller Config](https://github.com/allprogramming/ros2_xarm_1s_demos/blob/main/ros2_ws/src/ros2_control_xarm_1s/bringup/config/xarm_1s_controllers.yaml): `ros2_ws/src/ros2_control_xarm_1s/bringup/config/xarm_1s_controllers.yaml`
- [Controller Manager](https://github.com/allprogramming/ros2_xarm_1s_demos/blob/main/ros2_ws/src/ros2_control_xarm_1s/bringup/launch/xarm_1s.launch.py): `ros2_ws/src/ros2_control_xarm_1s/bringup/launch/xarm_1s.launch.py`
- [xArm Hardware](https://github.com/allprogramming/ros2_xarm_1s_demos/blob/main/ros2_ws/src/ros2_control_xarm_1s/src/xarm_1s.cpp): `ros2_ws/src/ros2_control_xarm_1s/src/xarm_1s.cpp`
- [Serial Link](https://github.com/allprogramming/ros2_xarm_1s_demos/blob/main/ros2_ws/src/ros2_control_xarm_1s/src/xarm_1s.cpp): `ros2_ws/src/ros2_control_xarm_1s/src/xarm_1s.cpp`

### Depth Sensing

- [Sensor Firmware](https://github.com/allprogramming/ros2_xarm_1s_demos/blob/main/Arduino/micro_ros_arduino_sparkfun_VL53L5CX/micro_ros_arduino_sparkfun_VL53L5CX.ino): `Arduino/micro_ros_arduino_sparkfun_VL53L5CX/micro_ros_arduino_sparkfun_VL53L5CX.ino`
- **VL53L5CX**

### Other components

- **Operator**
- **xArm 1S**

## Connections

- Operator → MoveIt Launch: starts
- MoveIt Launch → Move Group: launches
- Move Group → Planning Config: loads settings
- Move Group → MoveIt Controllers: loads mapping
- MoveIt Launch → Robot Description: configures model
- Model Viewer Launch → Robot Description: loads model
- Hardware Bringup → Robot Description: loads model
- Hardware Bringup → Controller Manager: starts
- Hardware Bringup → Controller Config: loads settings
- Controller Manager → xArm Hardware: loads plugin
- xArm Hardware → Serial Link: reads and writes
- Serial Link → xArm 1S: serial commands
- xArm 1S → Serial Link: servo positions
- Sensor Firmware → VL53L5CX: reads depth
