# kaburaj/hiwonder_xarm_1s architecture

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

## Overview

This ROS 2 repository describes and operates the Hiwonder xArm 1s. Its principal workflow is joint-state commands reaching a follower node, which converts joint angles to servo positions and sends updates to the USB-connected arm. A separate visualization workflow publishes the robot model to RViz; the repository also includes a work-in-progress MoveIt planning configuration. Some MoveIt launch wiring is inferred only from the sampled launch excerpts and package tree, so uncertain controller connections are omitted.

Main entry points: [`learm_ros2/launch/run.launch.py`](https://github.com/kaburaj/hiwonder_xarm_1s/blob/main/learm_ros2/launch/run.launch.py) (Visualization launch), [`learm_ros2/launch/learm_moveit_mode1.launch.py`](https://github.com/kaburaj/hiwonder_xarm_1s/blob/main/learm_ros2/launch/learm_moveit_mode1.launch.py) (MoveIt launch), [`learm_ros2/learm_ros2/follower.py`](https://github.com/kaburaj/hiwonder_xarm_1s/blob/main/learm_ros2/learm_ros2/follower.py) (Servo follower), [`learm_ros2_description/urdf/learm.urdf`](https://github.com/kaburaj/hiwonder_xarm_1s/blob/main/learm_ros2_description/urdf/learm.urdf) (URDF and meshes)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_operation["Arm operation"]
  node_joint_states["joint_states topic"]
  node_follower_launch["Follower launch<br/>[follower.launch.py]"]
  node_follower["Servo follower<br/>[follower.py]"]
end

subgraph group_model["Robot model"]
  node_run_launch["Visualization launch<br/>[run.launch.py]"]
  node_joint_publisher["Joint-state publisher"]
  node_robot_state_publisher["Robot state publisher"]
  node_robot_model["URDF and meshes<br/>[learm.urdf]"]
  node_rviz["RViz viewer"]
end

subgraph group_planning["MoveIt planning"]
  node_moveit_launch["MoveIt launch"]
  node_move_group["MoveIt planning"]
  node_planning_config["Planning and controller config<br/>[ompl_planning.yaml]"]
  node_semantic_model["Semantic robot model<br/>[learm.srdf.xacro]"]
  node_moveit_package_launches["MoveIt demo launches<br/>[demo2.launch.py]"]
  node_moveit_package_config["MoveIt configuration"]
end

node_operator(("Robot operator"))
node_joint_interface(("Joint-state interface"))
node_arm{{"USB arm controller"}}

node_operator -->|"sets joints"| node_joint_interface
node_joint_interface -->|"publishes"| node_joint_states
node_follower_launch -->|"starts"| node_follower
node_joint_states -->|"subscribes"| node_follower
node_follower -->|"sets servo positions"| node_arm
node_operator -->|"starts visualization"| node_run_launch
node_run_launch -->|"starts"| node_joint_publisher
node_run_launch -->|"starts"| node_robot_state_publisher
node_run_launch -->|"starts"| node_rviz
node_run_launch -->|"reads URDF"| node_robot_model
node_joint_publisher -->|"publishes"| node_joint_states
node_robot_state_publisher -->|"uses model"| node_robot_model
node_rviz -->|"displays model"| node_robot_model
node_operator -->|"starts planning"| node_moveit_launch
node_moveit_launch -->|"starts"| node_move_group
node_moveit_launch -->|"loads planning config"| node_planning_config
node_moveit_launch -->|"loads semantic model"| node_semantic_model
node_moveit_package_launches -.->|"uses configuration"| node_moveit_package_config

click node_follower_launch "https://github.com/kaburaj/hiwonder_xarm_1s/blob/main/learm_ros2/launch/follower.launch.py"
click node_follower "https://github.com/kaburaj/hiwonder_xarm_1s/blob/main/learm_ros2/learm_ros2/follower.py"
click node_run_launch "https://github.com/kaburaj/hiwonder_xarm_1s/blob/main/learm_ros2/launch/run.launch.py"
click node_robot_model "https://github.com/kaburaj/hiwonder_xarm_1s/blob/main/learm_ros2_description/urdf/learm.urdf"
click node_moveit_launch "https://github.com/kaburaj/hiwonder_xarm_1s/blob/main/learm_ros2/launch/learm_moveit_mode1.launch.py"
click node_planning_config "https://github.com/kaburaj/hiwonder_xarm_1s/blob/main/learm_ros2_description/config/ompl_planning.yaml"
click node_semantic_model "https://github.com/kaburaj/hiwonder_xarm_1s/blob/main/learm_ros2_description/srdf/learm.srdf.xacro"
click node_moveit_package_launches "https://github.com/kaburaj/hiwonder_xarm_1s/blob/main/learm_ros2_moveit_config/launch/demo2.launch.py"
click node_moveit_package_config "https://github.com/kaburaj/hiwonder_xarm_1s/blob/main/learm_ros2_moveit_config/config/simple_moveit_controllers.yaml"

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_joint_states,node_follower_launch,node_follower toneBlue
class node_run_launch,node_joint_publisher,node_robot_state_publisher,node_robot_model,node_rviz toneAmber
class node_moveit_launch,node_move_group,node_planning_config,node_semantic_model,node_moveit_package_launches,node_moveit_package_config toneMint
class node_operator,node_joint_interface,node_arm toneIndigo
```

## Components

### Arm operation

- **joint_states topic**
- [Follower launch](https://github.com/kaburaj/hiwonder_xarm_1s/blob/main/learm_ros2/launch/follower.launch.py): `learm_ros2/launch/follower.launch.py`
- [Servo follower](https://github.com/kaburaj/hiwonder_xarm_1s/blob/main/learm_ros2/learm_ros2/follower.py): `learm_ros2/learm_ros2/follower.py`

### Robot model

- [Visualization launch](https://github.com/kaburaj/hiwonder_xarm_1s/blob/main/learm_ros2/launch/run.launch.py): `learm_ros2/launch/run.launch.py`
- **Joint-state publisher**
- **Robot state publisher**
- [URDF and meshes](https://github.com/kaburaj/hiwonder_xarm_1s/blob/main/learm_ros2_description/urdf/learm.urdf): `learm_ros2_description/urdf/learm.urdf`
- **RViz viewer**

### MoveIt planning

- [MoveIt launch](https://github.com/kaburaj/hiwonder_xarm_1s/blob/main/learm_ros2/launch/learm_moveit_mode1.launch.py): `learm_ros2/launch/learm_moveit_mode1.launch.py`
- **MoveIt planning**
- [Planning and controller config](https://github.com/kaburaj/hiwonder_xarm_1s/blob/main/learm_ros2_description/config/ompl_planning.yaml): `learm_ros2_description/config/ompl_planning.yaml`
- [Semantic robot model](https://github.com/kaburaj/hiwonder_xarm_1s/blob/main/learm_ros2_description/srdf/learm.srdf.xacro): `learm_ros2_description/srdf/learm.srdf.xacro`
- [MoveIt demo launches](https://github.com/kaburaj/hiwonder_xarm_1s/blob/main/learm_ros2_moveit_config/launch/demo2.launch.py): `learm_ros2_moveit_config/launch/demo2.launch.py`
- [MoveIt configuration](https://github.com/kaburaj/hiwonder_xarm_1s/blob/main/learm_ros2_moveit_config/config/simple_moveit_controllers.yaml): `learm_ros2_moveit_config/config/simple_moveit_controllers.yaml`

### Other components

- **Robot operator**
- **Joint-state interface**
- **USB arm controller**

## Connections

- Robot operator → Joint-state interface: sets joints
- Joint-state interface → joint_states topic: publishes
- Follower launch → Servo follower: starts
- joint_states topic → Servo follower: subscribes
- Servo follower → USB arm controller: sets servo positions
- Robot operator → Visualization launch: starts visualization
- Visualization launch → Joint-state publisher: starts
- Visualization launch → Robot state publisher: starts
- Visualization launch → RViz viewer: starts
- Visualization launch → URDF and meshes: reads URDF
- Joint-state publisher → joint_states topic: publishes
- Robot state publisher → URDF and meshes: uses model
- RViz viewer → URDF and meshes: displays model
- Robot operator → MoveIt launch: starts planning
- MoveIt launch → MoveIt planning: starts
- MoveIt launch → Planning and controller config: loads planning config
- MoveIt launch → Semantic robot model: loads semantic model
- MoveIt demo launches → MoveIt configuration: uses configuration
