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.