Skip to content

Software Architecture Overview

The OpenArmX software stack is modular and mainly includes motor control, ROS2 integration, and teleoperation modules.


📦 Core Packages

Package Description Main Use
openarmx_description Robot description URDF model, visualization config
openarmx_motor_manager Motor manager Motor state management, parameter config, GUI
openarmx_ros2 ROS2 integration ROS2 nodes, hardware interface, MoveIt config
openarmx_teleop_bimanual Bimanual teleoperation Coordinated bimanual teleop control
openarmx_tools Toolset Gripper panel, parameter panel, teaching

📂 Directory Structure

~/openarmx_ws/src/
├── openarmx_description/                    # Robot description
├── openarmx_motor_manager/                  # Motor manager
│   ├── config/                              # Config files
│   ├── scripts/                             # Motor test scripts (important)
│   ├── ui/                                  # User interface
│   └── utils/                               # Utility functions
├── openarmx_ros2/                           # ROS2 packages
│   ├── openarmx/                            # Base package
│   ├── openarmx_bimanual_moveit_config/     # MoveIt config
│   ├── openarmx_bringup/                    # Launch config
│   └── openarmx_hardware/                   # Hardware interface
├── openarmx_teleop_bimanual/                # Bimanual homologous teleoperation
└── openarmx_tools/                          # Toolset
    ├── openarmx_gripper_panel/              # Gripper control panel
    ├── openarmx_kp_kd_panel/                # Kp/Kd panel
    └── openarmx_teach/                      # Teaching tools

Important: Do not use Python scripts/GUI and ROS2 control at the same time, or abnormal robot motion may occur and damage the robot.


🛠️ Robot Motion Modes

OpenArmX supports multiple motor control modes, with MIT and CSP being the primary ones.

MIT Mode

Motion Control Mode (default mode in OpenArmX)

Control method:

  • Position + velocity + KP + KD + torque hybrid control
  • Real-time adjustable stiffness parameters (KP/KD)
  • Supports torque feedforward

Main features:

  • High payload: rated payload up to 5 kg
  • Compliant control: low stiffness enables softer interaction
  • Torque control: supports superimposed torque and gravity compensation
  • Tunable parameters: real-time KP/KD tuning for different tasks
  • Hybrid behavior: flexible combination of position/velocity/torque
  • Lower positioning precision under low PID settings due to gravity and friction effects

Recommended scenarios:

  • Teaching and recording (low stiffness, easy to move)
  • Human-robot collaboration (compliance and safety)

CSP Mode

Cyclic Synchronous Position Mode

Control method:

  • Pure position control
  • Motor-internal PID closed-loop tracking
  • Fixed factory-tuned parameters

Main features:

  • Easy to use: send target position only, no parameter tuning
  • Stable precision: factory-optimized consistency
  • Lower payload: around 2 kg rated payload per arm; high load may cause overcurrent and motor damage
  • Fixed stiffness: no compliance tuning, less suitable for teaching
  • No torque control: difficult for gravity compensation and force control

Recommended scenarios:

  • Fixed automation tasks
  • High-precision repetitive positioning
  • Batch deployment
  • Standard equipment integration

📊 Mode Comparison

Feature MIT Mode CSP Mode
Control Position + velocity + KP + KD + torque Pure position
Parameter tuning Real-time tunable Fixed
Compliant control ✓ Supported ✗ Not supported
Torque feedforward ✓ Supported ✗ Not supported
Flexibility ★★★★★ ★★☆☆☆
Human-robot collaboration ★★★★★ ★☆☆☆☆

OpenArmX recommendation: use MIT mode by default for higher flexibility, teaching/force-control support, and safer payload margin for R&D scenarios.